Étape 4: Explication du code
Maintenant nous allons briser le code. Tout d’abord, nous voyons :
// LED Pressure Game with Force Sensitive Resistorconst int red = 11; // LEDs connected to each pin const int yellow1 = 10; const int yellow2 = 9; const int green1 = 6; const int green2 = 5; const int blue = 3; const int FSR = 0; // FSR connected to analog pin 0
J’ai vu cela écrit const int ou juste int, mais je suis allé avec const int et cela a fonctionné pour moi.
Nous disons juste l’arduino qui pins nous aide et définissant un code pour nous-mêmes pour le rendre plus facile à retenir qui épingle est qui. C’est où vous pouvez renommer les couleurs pour correspondre à votre configuration. Si vous modifiez le nom de couleur ici, faire un Ctrl + F et recherchez toutes les occurrences de ce mot et remplacez-le.
Ensuite est
int level = 0; // variable for the level of force applied to the FSR
Cela définit simplement une variable de niveau, que nous utiliserons pour mesurer la force exercée sur la FSR (forcer la résistance sensible). Nous le mettre à 0 au départ.
void setup() // run once to setup { pinMode (red, OUTPUT); // LED set as output pinMode (yellow1, OUTPUT); pinMode (yellow2, OUTPUT); pinMode (green1, OUTPUT); pinMode (green2, OUTPUT); pinMode (blue, OUTPUT);}
Le Sub configuration s’exécute une fois pour configurer l’esquisse. Nous disons juste l’Arduino qui pins nous voulons comme sortie. Notez que la broche analogique où nous avons la FSR est automatiquement définie comme entrée, ainsi nous n’avons que faire ici.
void loop() // repeated routine { // first, read the pressure level int level = analogRead(FSR);
Puis la boucle Sub exécute maintes et maintes fois. Tout d’abord, nous avons créé notre niveau variable (ce qui nous a présenté plus tôt) à lire notre FSR, qui nous met à la broche 0 plus tôt.
//next, set the LEDs to light based on pressure if (level <200) { analogWrite (red, level); } if (level >200) { analogWrite (yellow1, level); } if (level >400) { analogWrite (yellow2, level); } if (level >600 ) { analogWrite (green1, level); } if (level >700) { analogWrite (green2, level); } if (level >800) { analogWrite (blue, level); }
Ensuite, nous racontons nos LEDs quand à la lumière. Vous pouvez modifier ces niveaux, mais j’ai le premier éclairage vers le haut si le niveau est inférieur à 200. Puis l’autre s’allume si elle est supérieure à 400, 600, 700 et enfin 800. Vous pouvez faire ces nombres supérieurs ou inférieurs pour rendre le jeu plus difficile ou plus facile. J’ai trouvé 800 était un bon nombre de mes FSR, il est difficile à atteindre mais pas impossible. Votre FSR peut être différent, donc vous pouvez expérimenter avec des nombres à trouver le bon apte à rendre votre plaisir de jeu.
Vous voulez s’assurer que vous procédez comme suit dans l’ordre dans lequel votre LED sont au Conseil d’administration. De cette façon ils allument en séquence. Si ils s’allument au hasard il faut éloigner l’effet visuel du jeu.
//set all LEDs to turn off if pressure is 0 if(level == 0) { digitalWrite (red, LOW); digitalWrite (yellow1, LOW); digitalWrite (yellow2 ,LOW); digitalWrite (green1, LOW); digitalWrite (green2, LOW); digitalWrite (blue, LOW); }
Je ne sais pas si cette pièce est vraiment nécessaire, mais je ne pouvais pas faire fonctionner sans elle (mes LEDS resterait allumé après que vous lâchez la FSR). Cela dit juste si le niveau est égal à 0, désactivez toutes les LEDs. Notez que « égal » pour Arduino n’est pas =, mais ==. J’ai fait cette erreur au début.
//tell all LEDs to flash if pressure is greater than 800 if (level > 800) { digitalWrite (red, HIGH); digitalWrite (yellow1, HIGH); digitalWrite (yellow2 ,HIGH); digitalWrite (green1, HIGH); digitalWrite (green2, HIGH); digitalWrite (blue, HIGH); delay(100); digitalWrite (red, LOW); digitalWrite (yellow1, LOW); digitalWrite (yellow2 ,LOW); digitalWrite (green1, LOW); digitalWrite (green2, LOW); digitalWrite (blue, LOW); delay(100); } }
Maintenant pour le dernier morceau de code. Quand vous serrez assez dur à tous les voyants s’allument, j’ai voulu tous à clignoter. Ce code indique toutes les LED à allumer (HIGH), attendre 1 seconde, puis éteindre à nouveau (basse). Tant que le niveau est supérieur à 800, cela va continuer encore et encore, faisant apparaître à clignoter. Vous pouvez modifier le retard ici pour faire le flash plus rapidement ou plus lentement si vous le souhaitez.
C’est tout !
Publiez votre esquisse votre Arduino et voyez si vous pouvez allumer la LED finale et rendre tous les flash !