ovladani relay pomoci jednoho tlacitka
ovladani relay pomoci jednoho tlacitka
Ahoj, lze chovani relay modulu ovladat pomoci jednoho tlacitka ????
Zmacknu jednou relay se zapne, zmacknu po druhy relay se vypne atd
Zmacknu jednou relay se zapne, zmacknu po druhy relay se vypne atd
Re: ovladani relay pomoci jednoho tlacitka
Tady se mrkni na princip, i když to ovládá LED.
https://bastlirna.hwkitchen.cz/arduino- ... -tlacitko/
https://bastlirna.hwkitchen.cz/arduino- ... -tlacitko/
Re: ovladani relay pomoci jednoho tlacitka
+ vyřešit zákmity, které by u relé už vadily...
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ovladani relay pomoci jednoho tlacitka
Tak schválně, jestli přijdeš na to, proč je ten program naprosto nesmyslnej!Axamith píše: ↑21 bře 2021, 18:50Tady se mrkni na princip, i když to ovládá LED.
https://bastlirna.hwkitchen.cz/arduino- ... -tlacitko/
Re: ovladani relay pomoci jednoho tlacitka
Kód: Vybrat vše
// Ovladani rele (LED) tlacitkem ve stylu: "prvnim stiskem zapni, duhym stiskem vypni"
boolean stav = false; // pomocna promenna, ktera si pamatuje aktualni stav rele (nebo LED)
void setup(void)
{
pinMode(5,INPUT_PULLUP); // tlacitko spina proti GND
pinMode(6,OUTPUT); // vystup pro rele (LED)
}
void loop(void)
{
if (digitalRead(5) == LOW and stav == false) // tlacitko bylo stisknuto pri rozepnutem rele (zhasnute LED)
{
delay(20); // odruseni zakmitu pri stisku tlacitka
digitalWrite(6,HIGH); // sepnuti rele (rozsviceni LED)
stav = true; // znacka, ze je aktualne sepnuto (rozsviceno)
while (digitalRead(5) == LOW) ; // cekani na uvolneni tlacitka (zadny prikaz uvnitr while smycky - to je ten samotny strednik)
delay(20); // odruseni zakmitu pri rozpinani tlacitka
}
if (digitalRead(5) == LOW and stav == true) // tlacitko bylo stisknuto pri sepnutem rele (rozsvicene LED)
{
delay(20); // odruseni zakmitu pri stisku tlacitka
digitalWrite(6,LOW); // rozepnuti rele (zhasnuti LED)
stav = false; // znacka, ze je aktualne rozepnuto (zhasnuto)
while (digitalRead(5) == LOW) ; // cekani na uvolneni tlacitka (zadny prikaz uvnitr while smycky - to je ten samotny strednik)
delay(20); // odruseni zakmitu pri rozpinani tlacitka
}
}
Nevím, jestli to v tomhle případě nějak vadí.
Program se ale dá napsat "tisícem" různých způsobů.
Re: ovladani relay pomoci jednoho tlacitka
a nebo takto :
tady jsem si poprvé vyzkoušel knihovnu Bounce2
kód původně pro Led
no a tady s debounce bez použití knihovny
...chvíli jsem hledal,pak odzkoušel a děkuji stránkám www.arduinoslovakia.eu za osvěžení paměti
tady jsem si poprvé vyzkoušel knihovnu Bounce2
kód původně pro Led
Kód: Vybrat vše
// ZAP VYP tlacitkem a Bounce2
// podle https://www.arduinoslovakia.eu/blog/2018/2/attiny85---tlacidla?lang=cs
// TEST 22.3.2021 22:00 hod. PLNĚ FUNKČNÍ !!!
#include <Bounce2.h>
const int rele = 4;
const int button = 6;
int rele_state = LOW;
Bounce debouncer;
void setup() {
pinMode(rele, OUTPUT);
pinMode(button, INPUT_PULLUP);
debouncer.attach(button);
debouncer.interval(5);
}
void loop() {
debouncer.update();
if (debouncer.fell())
rele_state = !rele_state;
digitalWrite(rele, rele_state);
}
Kód: Vybrat vše
// Rele tlačítkem Zap Vyp s Debounce
// podle https://www.arduinoslovakia.eu/blog/2018/2/attiny85---tlacidla?lang=cs
// TEST 22.3.2021 22:25 hod. PLNĚ FUNKČNÍ !!!
// původně pro Led
const int rele = 4;
const int button = 6;
int rele_state = LOW;
// Button states and debounce
int buttonState = 0;
int lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
void setup() {
pinMode(rele, OUTPUT);
pinMode(button, INPUT_PULLUP);
}
void loop() {
int reading = digitalRead(button);
if (reading != lastButtonState)
lastDebounceTime = millis();
if ((millis() - lastDebounceTime) > 50) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
rele_state = !rele_state;
}
}
}
lastButtonState = reading;
digitalWrite(rele, rele_state);
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 29 hostů