Hirdetés
A programkód
Igyekeztem mindent kommentezni, lehetséges, hogy még a kód is optimalizálható, lehetne rajta egyszerűsíteni. Azonban így is működik. Van a kódban egy induláskori teszt, amivel a LED-eket tudjuk kipróbálni. Egyesével felvillannak a LED-ek, majd kialszanak, egyedül a kék LED marad bekapcsolva. Switch-case-el lett megoldva a számláló értékének vizsgálata, ha növelni akarjuk az intervallumokat (lehetséges vásárlók számát), csak a case ágakban növelni kell a vizsgált szám értékét. Természetesen ilyenkor több gombnyomásra is lesz szükség, a számláló megfelelő értékre történő léptetéséhez.
//felső gomb +#define buttonPin1 7//alsó gomb -#define buttonPin2 6//zöld LED#define ledPin1 13//sárga LED#define ledPin2 12//piros LED#define ledPin3 11//kék LED#define ledPin4 10byte emberekSzama=0;void setup (){ pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); //LED teszt, egyesével felkapcsolás, majd lekapcsolás digitalWrite(ledPin1, HIGH); delay(1000); digitalWrite(ledPin2, HIGH); delay(1000); digitalWrite(ledPin3, HIGH); delay(1000); digitalWrite(ledPin4, HIGH); delay(1000); digitalWrite(ledPin1, LOW); delay(1000); digitalWrite(ledPin2, LOW); delay(1000); digitalWrite(ledPin3, LOW); delay(1000); digitalWrite(ledPin4, LOW); delay(1000); }void loop(){ delay(200); //gombnyomásokra a változó értéke nő, illetve csökken if(digitalRead(buttonPin1)==HIGH) {emberekSzama++;} else {} if(digitalRead(buttonPin2)==HIGH) {emberekSzama--;} else {} //változó értékének vizsgálata gombok();}void gombok(){ switch(emberekSzama) { case 0: digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin4, HIGH); break; case 1: digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin4, LOW); digitalWrite(ledPin1, HIGH); break; case 2: digitalWrite(ledPin1, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin4, LOW); digitalWrite(ledPin2, HIGH); break; case 3: digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin4, LOW); digitalWrite(ledPin3, HIGH); break; }}
Felmerülhet még fejlesztésként az, hogy egy RGB LED-et használok a négy különálló LED helyett, ehhez egy kicsit módosítani kell majd a kódot is.
Update: Turulbir javaslatára javítottam a deklarációt, így kevesebb a memóriafoglalás.
A cikk még nem ért véget, kérlek, lapozz!



