Advertisement
Szerelo

Button test

May 28th, 2024
817
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.45 KB | None | 0 0
  1. // Demo program a következő panelhez: https://github.com/the-developer-guy/PracticeShield/tree/main/hu
  2. // 2024.05.28. Teremi József
  3.  
  4. // A nyomógombok és a kapcsoló tesztelése
  5. // A nyomógomb megnyomására 1 vagy 3 LED bekapcsol, a kapcsoló állásától függően
  6.  
  7. #define POT A0      // A potenciométert az A0-ás pinre csatlakoztattuk
  8. #define BTN1 A2     // Az 1. nyomógombot az A2-es pinre csatlakoztattuk
  9. #define BTN2 A1     // A 2. nyomógombot az A1-es pinre csatlakoztattuk
  10. #define SWITCH A3   // A kapcsolót az A3-es pinre csatlakoztattuk
  11. #define LED1 2     // Az 1. LED-et a D2-es pinre csatlakoztattuk
  12. #define LED2 3     // A 2. LED-et a D3-as pinre csatlakoztattuk
  13. #define LED3 4     // A 3. LED-et a D4-es pinre csatlakoztattuk
  14. #define LED4 5
  15. #define LED5 6
  16. #define LED6 7
  17. #define LED7 8
  18. #define LED8 9
  19. #define BUZZER 11  // A hangszórót a D11-es pinre csatlakoztattuk
  20.  
  21.  
  22. bool button1State = LOW;   // A nyomógomb aktuális állapota
  23. bool button2State = LOW;   // A nyomógomb aktuális állapota
  24. bool switchState = LOW;     // A kapcsoló aktuális állapota
  25. bool lastButton1State = LOW; // Az előző nyomógomb állapot
  26. bool lastButton2State = LOW; // Az előző nyomógomb állapot
  27. bool lastSwitchState = LOW;  // A előző kapcsoló állapot
  28. unsigned long lastDebounceTime1 = 0;  // Az 1. nyomógomb utolsó prellmentes időpontja
  29. unsigned long lastDebounceTime2 = 0;  // A 2. nyomógomb utolsó prellmentes időpontja
  30. unsigned long lastDebounceTime3 = 0;  // A kapcsoló utolsó prellmentes időpontja
  31. unsigned long debounceDelay = 50;    // A prellmentes idő beállítása
  32.  
  33. void setup() {
  34.   // Beállítjuk a bemenetként használt pinek irányát.
  35.   pinMode(BTN1, INPUT);
  36.   pinMode(BTN2, INPUT);
  37.   pinMode(SWITCH, INPUT);
  38.   // Beállítjuk a kimenetként használt pinek irányát.
  39.   pinMode(LED1, OUTPUT);
  40.   pinMode(LED2, OUTPUT);
  41.   pinMode(LED3, OUTPUT);
  42.   pinMode(LED4, OUTPUT);
  43.   pinMode(LED5, OUTPUT);
  44.   pinMode(LED6, OUTPUT);
  45.   pinMode(LED7, OUTPUT);
  46.   pinMode(LED8, OUTPUT);
  47.   pinMode(BUZZER, OUTPUT);
  48.  
  49.   digitalWrite(LED1,HIGH);
  50.   digitalWrite(LED5,HIGH);
  51.   delay(1000);  
  52.   digitalWrite(LED1,LOW);
  53.   digitalWrite(LED5,LOW);
  54. }
  55.  
  56. void loop() {
  57.   bool reading1 = !digitalRead(BTN1); // Olvassuk be az 1. nyomógomb állapotát negálva, ha a GND-ra van csatlakoztatva
  58.   bool reading2 = !digitalRead(BTN2); // Olvassuk be a 2. nyomógomb állapotát negálva, ha a GND-ra van csatlakoztatva
  59.   bool reading3 = digitalRead(SWITCH); // Olvassuk be a kapcsoló állapotát
  60.  
  61.   // Ha az 1. gomb állapota változott
  62.   if (reading1 != lastButton1State) {
  63.     // Frissítjük a prellmentes időtartam kezdeti idejét
  64.     lastDebounceTime1 = millis();
  65.   }
  66.  
  67.   // Ellenőrizzük, hogy a gomb állapota stabil-e a prellmentes idő után
  68.   if ((millis() - lastDebounceTime1) > debounceDelay) {
  69.     // Ha igen, akkor frissítjük a gomb állapotát
  70.     if (reading1 != button1State) {
  71.       button1State = reading1;
  72.  
  73.       // Ha a gombot lenyomtad
  74.       if (button1State == HIGH) {
  75.         digitalWrite(LED7,HIGH);    // Bal szélső LED bekapcsolása
  76.         if (reading3==HIGH){        // Ha a kapcsoló jobbra van állítva
  77.           digitalWrite(LED6,HIGH);  // Bal szélső alatti LED bekapcsolása
  78.           digitalWrite(LED8,HIGH);  // Bal szélső feletti LED bekapcsolása
  79.         }
  80.       }
  81.       // Ha a gombot elengedted
  82.       else {
  83.         // Bal oldali LED-ek kikapcsolása
  84.         digitalWrite(LED6,LOW);
  85.         digitalWrite(LED7,LOW);
  86.         digitalWrite(LED8,LOW);
  87.       }
  88.     }
  89.   }
  90.   // Ha a 2. gomb állapota változott
  91.   if (reading2 != lastButton2State) {
  92.     // Frissítjük a prellmentes időtartam kezdeti idejét
  93.     lastDebounceTime2 = millis();
  94.   }
  95.  
  96.   // Ellenőrizzük, hogy a gomb állapota stabil-e a prellmentes idő után
  97.   if ((millis() - lastDebounceTime2) > debounceDelay) {
  98.     // Ha igen, akkor frissítjük a gomb állapotát
  99.     if (reading2 != button2State) {
  100.       button2State = reading2;
  101.  
  102.       // Ha a gombot lenyomtad
  103.       if (button2State == HIGH) {
  104.         digitalWrite(LED3,HIGH);    // Jobb szélső LED bekapcsolása
  105.         if (reading3==HIGH){        // Ha a kapcsoló jobbra van állítva
  106.           digitalWrite(LED2,HIGH);  // Jobb szélső feletti LED bekapcsolása
  107.           digitalWrite(LED4,HIGH);  // Jobb szélső alatti LED bekapcsolása
  108.         }
  109.       }
  110.       // Ha a gombot elengedted
  111.       else {
  112.         // Jobb oldali LED-ek kikapcsolása
  113.         digitalWrite(LED2,LOW);
  114.         digitalWrite(LED3,LOW);
  115.         digitalWrite(LED4,LOW);
  116.       }
  117.     }
  118.   }
  119.  
  120.   // Ha a kapcsoló állapota változott
  121.   if (reading3 != lastSwitchState) {
  122.     // Frissítjük a prellmentes időtartam kezdeti idejét
  123.     lastDebounceTime3 = millis();
  124.   }
  125.  
  126.   // Ellenőrizzük, hogy a kapcsoló állapota stabil-e a prellmentes idő után
  127.   if ((millis() - lastDebounceTime3) > debounceDelay) {
  128.     // Ha igen, akkor frissítjük a kapcsoló állapotát
  129.     if (reading3 != switchState) {
  130.       switchState = reading3;
  131.  
  132.       // Ha a kapcsolót balra állítottad
  133.       if (switchState == LOW) {
  134.         // Kapcsoló balra van állítva
  135.       }
  136.       // Ha a kapcsolót jobbra állítottad
  137.       else {
  138.         // Kapcsoló jobbra van állítva
  139.       }
  140.     }
  141.   }
  142.  
  143.   // A nyomógombok és kapcsoló aktuális állapotát eltároljuk az előző állapotban
  144.   lastButton1State = reading1;
  145.   lastButton2State = reading2;
  146.   lastSwitchState = reading3;
  147. }
  148.  
  149. // END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement