Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Demo program a következő panelhez: https://github.com/the-developer-guy/PracticeShield/tree/main/hu
- // 2024.05.28. Teremi József
- // A nyomógombok és a kapcsoló állapotának kiírása a soros monitorra, LED-ek bekapcsolása, Buzzer próba.
- // 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.
- #define POT A0 // A potenciométert az A0-ás pinre csatlakoztattuk
- #define BTN1 A2 // Az 1. nyomógombot az A2-es pinre csatlakoztattuk
- #define BTN2 A1 // A 2. nyomógombot az A1-es pinre csatlakoztattuk
- #define SWITCH A3 // A kapcsolót az A3-es pinre csatlakoztattuk
- #define LED1 2 // Az 1. LED-et a D2-es pinre csatlakoztattuk
- #define LED2 3
- #define LED3 4
- #define LED4 5
- #define LED5 6
- #define LED6 7
- #define LED7 8
- #define LED8 9
- #define BUZZER 11 // A hangszórót a D11-es pinre csatlakoztattuk
- bool button1State = LOW; // A nyomógomb aktuális állapota
- bool button2State = LOW; // A nyomógomb aktuális állapota
- bool switchState = LOW; // A kapcsoló aktuális állapota
- bool lastButton1State = LOW; // Az előző nyomógomb állapot
- bool lastButton2State = LOW; // Az előző nyomógomb állapot
- bool lastSwitchState = LOW; // A előző kapcsoló állapot
- unsigned long lastDebounceTime1 = 0; // Az 1. nyomógomb utolsó prellmentes időpontja
- unsigned long lastDebounceTime2 = 0; // A 2. nyomógomb utolsó prellmentes időpontja
- unsigned long lastDebounceTime3 = 0; // A kapcsoló utolsó prellmentes időpontja
- unsigned long debounceDelay = 50; // A prellmentes idő beállítása
- unsigned int potValue;
- byte counter=2;
- byte prevCounter=2;
- void setup() {
- // Beállítjuk a bemenetként használt pinek irányát.
- pinMode(BTN1, INPUT);
- pinMode(BTN2, INPUT);
- pinMode(SWITCH, INPUT);
- // Beállítjuk a kimenetként használt pinek irányát.
- pinMode(LED1, OUTPUT);
- pinMode(LED2, OUTPUT);
- pinMode(LED3, OUTPUT);
- pinMode(LED4, OUTPUT);
- pinMode(LED5, OUTPUT);
- pinMode(LED6, OUTPUT);
- pinMode(LED7, OUTPUT);
- pinMode(LED8, OUTPUT);
- pinMode(BUZZER, OUTPUT);
- Serial.begin(115200); // Soros kommunikáció inicializálása
- delay(1000);
- Serial.println("Start ..."); // Lássuk, hogy rendben elindult a program
- for (byte i=2;i<10;i++){
- digitalWrite(i,HIGH);
- delay(100);
- }
- for (byte i=2;i<10;i++){
- digitalWrite(i,LOW);
- delay(100);
- }
- // Ha az 1. gomb le van nyomva
- if (digitalRead(BTN1) == LOW) {
- Serial.println("1. nyomógomb lenyomva");
- }
- // Ha az 1. gomb nincs lenyomva
- else {
- Serial.println("1. nyomógomb nincs lenyomva");
- }
- // Ha a 2. gomb le van nyomva
- if (digitalRead(BTN2) == LOW) {
- }
- // Ha az 1. gomb nincs lenyomva
- else {
- Serial.println("2. nyomógomb nincs lenyomva");
- }
- // Ha a kapcsoló balra van állítva
- if (digitalRead(SWITCH) == LOW) {
- Serial.println("A kapcsoló balra van állítva");
- }
- // Ha a kapcsoló jobbra van állítva
- else {
- Serial.println("A kapcsoló jobbra van állítva");
- }
- }
- void loop() {
- bool reading1 = !digitalRead(BTN1); // Olvassuk be az 1. nyomógomb állapotát negálva, ha a GND-ra van csatlakoztatva
- bool reading2 = !digitalRead(BTN2); // Olvassuk be a 2. nyomógomb állapotát negálva, ha a GND-ra van csatlakoztatva
- bool reading3 = digitalRead(SWITCH); // Olvassuk be a kapcsoló állapotát
- potValue=analogRead(POT);
- // Ha az 1. gomb állapota változott
- if (reading1 != lastButton1State) {
- // Frissítjük a prellmentes időtartam kezdeti idejét
- lastDebounceTime1 = millis();
- }
- // Ellenőrizzük, hogy a gomb állapota stabil-e a prellmentes idő után
- if ((millis() - lastDebounceTime1) > debounceDelay) {
- // Ha igen, akkor frissítjük a gomb állapotát
- if (reading1 != button1State) {
- button1State = reading1;
- // Ha a gombot lenyomtad
- if (button1State == HIGH) {
- Serial.println("1. nyomógomb lenyomva");
- tone(BUZZER,potValue*2+500+reading3*1000);
- counter--;
- if (counter==1) counter=9;
- }
- // Ha a gombot elengedted
- else {
- Serial.println("1. nyomógomb elengedve");
- noTone(BUZZER);
- }
- }
- }
- // Ha a 2. gomb állapota változott
- if (reading2 != lastButton2State) {
- // Frissítjük a prellmentes időtartam kezdeti idejét
- lastDebounceTime2 = millis();
- }
- // Ellenőrizzük, hogy a gomb állapota stabil-e a prellmentes idő után
- if ((millis() - lastDebounceTime2) > debounceDelay) {
- // Ha igen, akkor frissítjük a gomb állapotát
- if (reading2 != button2State) {
- button2State = reading2;
- // Ha a gombot lenyomtad
- if (button2State == HIGH) {
- Serial.println("2. nyomógomb lenyomva");
- tone(BUZZER,potValue*3+1000+reading3*1000);
- counter++;
- if (counter==10) counter=2;
- }
- // Ha a gombot elengedted
- else {
- Serial.println("2. nyomógomb elengedve");
- noTone(BUZZER);
- }
- }
- }
- // Ha a kapcsoló állapota változott
- if (reading3 != lastSwitchState) {
- // Frissítjük a prellmentes időtartam kezdeti idejét
- lastDebounceTime3 = millis();
- }
- // Ellenőrizzük, hogy a kapcsoló állapota stabil-e a prellmentes idő után
- if ((millis() - lastDebounceTime3) > debounceDelay) {
- // Ha igen, akkor frissítjük a kapcsoló állapotát
- if (reading3 != switchState) {
- switchState = reading3;
- // Ha a kapcsolót balra állítottad
- if (switchState == LOW) {
- Serial.println("A kapcsoló balra van állítva.");
- }
- // Ha a kapcsolót jobbra állítottad
- else {
- Serial.println("A kapcsoló jobbra van állítva.");
- }
- }
- }
- if (prevCounter!=counter){
- digitalWrite(counter,HIGH);
- digitalWrite(prevCounter,LOW);
- prevCounter=counter;
- }
- // A nyomógombok és kapcsoló aktuális állapotát eltároljuk az előző állapotban
- lastButton1State = reading1;
- lastButton2State = reading2;
- lastSwitchState = reading3;
- }
- // END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement