Arduino UNO - Covid szimulátor kisboltokra kitalálva

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 10
byte 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!