Advertisement
Szerelo

Full test

May 28th, 2024
768
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.10 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ó állapotának kiírása a soros monitorra, LED-ek bekapcsolása, Buzzer próba.
  5. // A Buzzer a nyomógomb megnyomására megszólal. A hang magassága a potenciométer és a kapcsoló állásától függ.
  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
  13. #define LED3 4
  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. unsigned int potValue;
  33. byte counter=2;
  34. byte prevCounter=2;
  35.  
  36. void setup() {
  37.   // Beállítjuk a bemenetként használt pinek irányát.
  38.   pinMode(BTN1, INPUT);
  39.   pinMode(BTN2, INPUT);
  40.   pinMode(SWITCH, INPUT);
  41.   // Beállítjuk a kimenetként használt pinek irányát.
  42.   pinMode(LED1, OUTPUT);
  43.   pinMode(LED2, OUTPUT);
  44.   pinMode(LED3, OUTPUT);
  45.   pinMode(LED4, OUTPUT);
  46.   pinMode(LED5, OUTPUT);
  47.   pinMode(LED6, OUTPUT);
  48.   pinMode(LED7, OUTPUT);
  49.   pinMode(LED8, OUTPUT);
  50.   pinMode(BUZZER, OUTPUT);
  51.  
  52.   Serial.begin(115200);         // Soros kommunikáció inicializálása
  53.   delay(1000);
  54.   Serial.println("Start ...");  // Lássuk, hogy rendben elindult a program
  55.  
  56.   for (byte i=2;i<10;i++){
  57.     digitalWrite(i,HIGH);
  58.     delay(100);  
  59.   }
  60.   for (byte i=2;i<10;i++){
  61.     digitalWrite(i,LOW);
  62.     delay(100);  
  63.   }
  64.   // Ha az 1. gomb le van nyomva
  65.   if (digitalRead(BTN1) == LOW) {
  66.     Serial.println("1. nyomógomb lenyomva");
  67.   }
  68.   // Ha az 1. gomb nincs lenyomva
  69.   else {
  70.     Serial.println("1. nyomógomb nincs lenyomva");
  71.   }
  72.  
  73.   // Ha a 2. gomb le van nyomva
  74.   if (digitalRead(BTN2) == LOW) {
  75.   }
  76.   // Ha az 1. gomb nincs lenyomva
  77.   else {
  78.     Serial.println("2. nyomógomb nincs lenyomva");
  79.   }
  80.  
  81.   // Ha a kapcsoló balra van állítva
  82.   if (digitalRead(SWITCH) == LOW) {
  83.     Serial.println("A kapcsoló balra van állítva");
  84.   }
  85.   // Ha a kapcsoló jobbra van állítva
  86.   else {
  87.     Serial.println("A kapcsoló jobbra van állítva");
  88.   }
  89. }
  90.  
  91. void loop() {
  92.   bool reading1 = !digitalRead(BTN1); // Olvassuk be az 1. nyomógomb állapotát negálva, ha a GND-ra van csatlakoztatva
  93.   bool reading2 = !digitalRead(BTN2); // Olvassuk be a 2. nyomógomb állapotát negálva, ha a GND-ra van csatlakoztatva
  94.   bool reading3 = digitalRead(SWITCH); // Olvassuk be a kapcsoló állapotát
  95.   potValue=analogRead(POT);
  96.  
  97.   // Ha az 1. gomb állapota változott
  98.   if (reading1 != lastButton1State) {
  99.     // Frissítjük a prellmentes időtartam kezdeti idejét
  100.     lastDebounceTime1 = millis();
  101.   }
  102.  
  103.   // Ellenőrizzük, hogy a gomb állapota stabil-e a prellmentes idő után
  104.   if ((millis() - lastDebounceTime1) > debounceDelay) {
  105.     // Ha igen, akkor frissítjük a gomb állapotát
  106.     if (reading1 != button1State) {
  107.       button1State = reading1;
  108.  
  109.       // Ha a gombot lenyomtad
  110.       if (button1State == HIGH) {
  111.         Serial.println("1. nyomógomb lenyomva");
  112.         tone(BUZZER,potValue*2+500+reading3*1000);
  113.         counter--;
  114.         if (counter==1) counter=9;
  115.       }
  116.       // Ha a gombot elengedted
  117.       else {
  118.         Serial.println("1. nyomógomb elengedve");
  119.         noTone(BUZZER);
  120.       }
  121.     }
  122.   }
  123.   // Ha a 2. gomb állapota változott
  124.   if (reading2 != lastButton2State) {
  125.     // Frissítjük a prellmentes időtartam kezdeti idejét
  126.     lastDebounceTime2 = millis();
  127.   }
  128.  
  129.   // Ellenőrizzük, hogy a gomb állapota stabil-e a prellmentes idő után
  130.   if ((millis() - lastDebounceTime2) > debounceDelay) {
  131.     // Ha igen, akkor frissítjük a gomb állapotát
  132.     if (reading2 != button2State) {
  133.       button2State = reading2;
  134.  
  135.       // Ha a gombot lenyomtad
  136.       if (button2State == HIGH) {
  137.         Serial.println("2. nyomógomb lenyomva");
  138.         tone(BUZZER,potValue*3+1000+reading3*1000);
  139.         counter++;
  140.         if (counter==10) counter=2;
  141.       }
  142.       // Ha a gombot elengedted
  143.       else {
  144.         Serial.println("2. nyomógomb elengedve");
  145.         noTone(BUZZER);
  146.       }
  147.     }
  148.   }
  149.  
  150.   // Ha a kapcsoló állapota változott
  151.   if (reading3 != lastSwitchState) {
  152.     // Frissítjük a prellmentes időtartam kezdeti idejét
  153.     lastDebounceTime3 = millis();
  154.   }
  155.  
  156.   // Ellenőrizzük, hogy a kapcsoló állapota stabil-e a prellmentes idő után
  157.   if ((millis() - lastDebounceTime3) > debounceDelay) {
  158.     // Ha igen, akkor frissítjük a kapcsoló állapotát
  159.     if (reading3 != switchState) {
  160.       switchState = reading3;
  161.  
  162.       // Ha a kapcsolót balra állítottad
  163.       if (switchState == LOW) {
  164.         Serial.println("A kapcsoló balra van állítva.");
  165.       }
  166.       // Ha a kapcsolót jobbra állítottad
  167.       else {
  168.         Serial.println("A kapcsoló jobbra van állítva.");
  169.       }
  170.     }
  171.   }
  172.   if (prevCounter!=counter){
  173.     digitalWrite(counter,HIGH);
  174.     digitalWrite(prevCounter,LOW);
  175.     prevCounter=counter;
  176.   }
  177.   // A nyomógombok és kapcsoló aktuális állapotát eltároljuk az előző állapotban
  178.   lastButton1State = reading1;
  179.   lastButton2State = reading2;
  180.   lastSwitchState = reading3;
  181. }
  182.  
  183. // END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement