LED tryck spelet Arduino (4 / 4 steg)
Steg 4: Förklaring av koden
Nu låt oss bryta ner koden. Först ser vi:
LED tryck spel med Force känsliga Resistor
CONST int rött = 11; Lysdioderna anslutna till varje stift
CONST int yellow1 = 10;
CONST int yellow2 = 9;
CONST int green1 = 6;
CONST int green2 = 5;
CONST int blå = 3;
CONST int FSR = 0; FSR ansluten till analoga stift 0
Jag har sett detta skrivs som const int eller bara int, men jag gick med const int och det fungerade för mig.
Vi talar bara arduino vilket stift vi använder, och ange en kod för oss att göra det lättare att komma ihåg vilket stift är vilket. Det är där du ändra färger för att matcha din setup. Om du ändrar färgnamn här, göra en Ctrl + F och hitta alla förekomster av ordet och ersätta den.
Nästa är
int nivå = 0; variabel för den kraft som anbringas på FSR
Detta sätter bara upp en variabel för nivå, som vi använder för att mäta den kraft som anbringas på FSR (tvinga känsliga motstånd). Vi sätta den till 0 från början.
void setup() / / kör en gång för att installera {
pinMode (röd, produktionen); LED som utdata
pinMode (yellow1, produktionen);
pinMode (yellow2, produktionen);
pinMode (green1, produktionen);
pinMode (green2, produktionen);
pinMode (blå, OUTPUT);}
Den ogiltiga installationsprogrammet körs en gång för att installera skissen. Vi talar bara Arduino vilket stift vill vi som utgång. Observera att analoga stiftet där vi har FSR ställs automatiskt in som input, så vi behöver inte lägga det här.
void loop() / / upprepad rutinmässig {
först läsa det pressa jämnt
int nivå = analogRead(FSR);
Sedan körs utan laga kraft slinga om och om igen. Först, vi sätter upp våra varierande nivå (som vi introducerade tidigare) för att läsa våra FSR, som vi sätter till pin 0 tidigare.
Nästa, ange lysdioderna till ljus baserat på trycket
om (nivå < 200) {
analogWrite (röd, nivå).
}
om (nivå > 200) {
analogWrite (yellow1, nivå);
}
om (nivå > 400) {
analogWrite (yellow2, nivå);
}
om (nivå > 600) {
analogWrite (green1, nivå);
}
om (nivå > 700) {
analogWrite (green2, nivå);
}
om (nivå > 800) {
analogWrite (blå, nivå).
}
Nästa vi berättar våra lysdioder när ska tändas. Du kan ändra dessa nivåer, men jag har den första en lysa upp om är mindre än 200 . Sedan lyser varandra om det är större än 400, 600, 700, och slutligen 800. Du kan göra dessa siffror högre eller lägre för att göra spelet svårare eller lättare. Jag hittade 800 var ett bra nummer för min FSR, är det svårt att nå, men inte omöjligt. Ditt FSR kan vara annorlunda, så du kan experimentera med tal för att hitta rätt passar att göra ditt spel roliga.
Du vill se till att du gör dessa i den ordning som din lysdioder är på bordet. Detta sätt de lätt upp i sekvens. Om de lyser upp tar slumpmässigt från den visuella effekten av spelet.
Ange alla lysdioder att stänga av om trycket är 0
IF(Level == 0)
{
digitalWrite (röd, låg);
digitalWrite (yellow1, låg);
digitalWrite (yellow2, låg);
digitalWrite (green1, låg);
digitalWrite (green2, låg);
digitalWrite (blå, låg); }
Jag är inte säker om denna del är nödvändigt, men jag kunde inte få det att fungera utan att det (min lysdioder skulle bo upplysta efter du släppa FSR). Detta säger bara om nivå är lika med 0, stänga av alla lampor. Observera att "motsvarande" för Arduino inte är =, men ==. Jag gjorde det misstaget i början.
berätta alla lysdioder att blinka om trycket är större än 800 om (nivå > 800)
{
digitalWrite (röd, hög);
digitalWrite (yellow1, hög);
digitalWrite (yellow2, hög);
digitalWrite (green1, hög);
digitalWrite (green2, hög);
digitalWrite (blå, hög);
Delay(100);
digitalWrite (röd, låg);
digitalWrite (yellow1, låg);
digitalWrite (yellow2, låg);
digitalWrite (green1, låg);
digitalWrite (green2, låg);
digitalWrite (blå, låg);
Delay(100);
}
}
Nu till den sista biten av koden. När du krama hårt nog för att lysa upp alla lampor, ville jag alla av dem att blinka. Här koden berättar alla lampor att slå på (hög), sedan vänta en sekund, sedan stänga av igen (låg). Så länge som nivån är större än 800, kommer att detta fortsätta om och om igen, att göra dem verkar flash. För att göra flash snabbare eller långsammare om du vill kan du ändra fördröjningen här.
Det är det!
Ladda upp din skiss till din Arduino och se om du kan tända den sista LED och göra dem alla flash!