Z pomocą wujka Google rozwiązałem problem kilku przycisków z biblioteką Bounce2
Dla przyszłości podaje przykładowy działający program:
Dla przyszłości podaje przykładowy działający program:
Kod:
#include <Bounce2.h>
const int button1a = 2;
const int button1b = 3;
const int ledPin1a = 12;
const int ledPin1b = 13;
bool LED1a = LOW;
bool LED1b = LOW;
unsigned long aktualnyCzas = 0;
unsigned long czasDrgania = 0;
unsigned long czasLED1a = 0;
unsigned long czasLED1b = 0;
Bounce p1a = Bounce();
Bounce p1b = Bounce();
void setup() {
Serial.begin(9600);
pinMode(12, OUTPUT);
digitalWrite(12, LOW);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
p1a.attach(button1a, INPUT_PULLUP);
p1a.interval(20);
p1b.attach(button1b, INPUT_PULLUP);
p1b.interval(20);
}
void loop() {
p1a.update();
p1b.update();
bool stanP1a = p1a.read();
bool stanP1b = p1b.read();
aktualnyCzas = millis();
// zapal LED1a
if (p1a.fell() && LED1b == LOW) {
LED1a =!LED1a;
digitalWrite(12, LED1a);
czasLED1a = aktualnyCzas;
}
if (LED1a){;
if (aktualnyCzas - czasLED1a >= 3000UL){
czasLED1a = aktualnyCzas;
digitalWrite(12, LOW);
LED1a = LOW;
}
}
// zapal LED1b
if (p1b.fell() && LED1a == LOW) {
LED1b =!LED1b;
digitalWrite(13, LED1b);
czasLED1b = aktualnyCzas;
}
if (LED1b){
Serial.println("SWIECI LED1b");
if (aktualnyCzas - czasLED1b >= 3000UL){
czasLED1b = aktualnyCzas;
digitalWrite(13, LOW);
LED1b = LOW;
}
}
}