kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
-
- Příspěvky: 16
- Registrován: pát bře 25, 2022 3:38 pm
kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Ahoj, chcel by som Vás poprosiť o pomoc s mojim kódom:
Takže je to zariadenie ktorému som dal pre jednoduché skúšanie na univerzálnom poli výstupy ako "LED" tie sú 4 a vstupy na ktoré sa privádza logická úroveň HIGH/LOW a tie sú 2.
Po privedení HIGH z externého zariadenia na "inputPin1" sa okmažite rozsvieti LedPin1. Následne po 1000ms LedPin3 a po dalších 1000mS LedPin4. To je super a tak to má byť. Problém je že v prípade že sa na "inputPin1" privednie LOW tak musím čakať 2 sekundy než sa LEDky vypnú. Ja by som to potreboval hneď. V dalšej časti kódu je dalšia podmienka kde je ako vstup pre privedenie LOW/HIGH "inputPin2" a tu potrebujem aby v prípade že je úroveň HIGH okmažite začala svietiť "ledPin2" ibaže je to spozdené o delay z hornej časti programu. Tak isto je spozdené aj vypnutie ktoré by som potreboval naraz spolu s ostatnými LED. Naraz sice je ale všetky sa vypnú opozdene.
Je mi jasné že funkcia DELAY prebiehajúca dookola program zdržiava. Napadlo ma použiť funkciu millis. Skúsil som ju zatial čisto na prvé DELAY asi takto:
Ibaže to millis vôbec nespozdí rozsvietenie LED. Aj keď teda skráti čas vypnutia ale to mi nestačí. Ak by to stačilo vymazal by som z programu delay a nepoužíval ani millis.
Prosím Vás ako mám kód upraviť aby robil čo potrebujem? Ďakujem!
Kód: Vybrat vše
// Definícia pinu pre pripojenie LED
const int ledPin1 = 12; // Pripojenie LED pre pin
const int ledPin2 = 13; // Pripojenie LED pre pin
const int ledPin3 = 11; // Pripojenie LED pre pin
const int ledPin4 = 10; // Pripojenie LED pre pin
// Definícia pinu pre sledovanie stavu
const int inputPin1 = 2; // Pripojenie pre vstup na pin 2
const int inputPin2 = 3; // Pripojenie pre vstup na pin 3
void setup() {
// Nastavenie pinov LED ako výstupov
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
// Nastavenie pinov pre vstup
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop() {
// Čítanie hodnoty digitálneho pinu 2
int value1 = digitalRead(inputPin1);
// Kontrola, či je hodnota HIGH na pine 2
if (value1 == HIGH) {
// Rozsvietenie LED na pine 12
digitalWrite(ledPin1, HIGH);
delay (1000);
digitalWrite(ledPin3, HIGH);
delay (1000);
digitalWrite(ledPin4, HIGH);
} else {
// Zhasnutie LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin2, LOW);
}
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH && value1 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
} else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
}
Po privedení HIGH z externého zariadenia na "inputPin1" sa okmažite rozsvieti LedPin1. Následne po 1000ms LedPin3 a po dalších 1000mS LedPin4. To je super a tak to má byť. Problém je že v prípade že sa na "inputPin1" privednie LOW tak musím čakať 2 sekundy než sa LEDky vypnú. Ja by som to potreboval hneď. V dalšej časti kódu je dalšia podmienka kde je ako vstup pre privedenie LOW/HIGH "inputPin2" a tu potrebujem aby v prípade že je úroveň HIGH okmažite začala svietiť "ledPin2" ibaže je to spozdené o delay z hornej časti programu. Tak isto je spozdené aj vypnutie ktoré by som potreboval naraz spolu s ostatnými LED. Naraz sice je ale všetky sa vypnú opozdene.
Je mi jasné že funkcia DELAY prebiehajúca dookola program zdržiava. Napadlo ma použiť funkciu millis. Skúsil som ju zatial čisto na prvé DELAY asi takto:
Kód: Vybrat vše
// Definícia pinu pre pripojenie LED
const int ledPin1 = 12; // Pripojenie LED pre pin 2
const int ledPin2 = 13; // Pripojenie LED pre pin 3
const int ledPin3 = 11; // Pripojenie LED pre pin 3
const int ledPin4 = 10; // Pripojenie LED pre pin 3
// Definícia pinu pre sledovanie stavu
const int inputPin1 = 2; // Pripojenie pre vstup na pin 2
const int inputPin2 = 3; // Pripojenie pre vstup na pin 3
unsigned long previousMillis = 0; // Uchováva čas poslednej aktualizácie
const long interval = 1000; // Interval v milisekundách (1 sekunda)
void setup() {
// Nastavenie pinov LED ako výstupov
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
// Nastavenie pinov pre vstup
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop() {
// Čítanie hodnoty digitálneho pinu 2
int value1 = digitalRead(inputPin1);
// Kontrola, či je hodnota HIGH na pine 2
if (value1 == HIGH) {
// Rozsvietenie LED na pine 12
digitalWrite(ledPin1, HIGH);
unsigned long currentMillis = millis();
// Čakanie 1 sekundu (1000 ms)
if (currentMillis - previousMillis >= interval) {
// Aktualizácia času poslednej aktualizácie
previousMillis = currentMillis;
digitalWrite(ledPin3, HIGH);
delay (1000);
digitalWrite(ledPin4, HIGH);
}///////
} else {
// Zhasnutie LED na pine 12
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin2, LOW);
}
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH && value1 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
} else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
}
Prosím Vás ako mám kód upraviť aby robil čo potrebujem? Ďakujem!
-
- Příspěvky: 1807
- Registrován: pát lis 11, 2022 8:14 am
- Lokalita: Hlohovec, SR
- Systémové napětí: 48V
- Výkon panelů [Wp]: 5520
- Kapacita baterie [kWh]: 14
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Hlohovec, SR
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Ahoj, buď použi interrupty (prerušenia) pre vstupné piny, alebo pomocné premenné na meranie času a vykonanie akcie. Pohľadaj si články podľa kľúčových slov "avoiding delays arduino", nebudem ti to tu prepisovať
2x MUST PH1800 5.5kW, 8.85kWp 3x 2S3P, V+J+Z, 16x 280 Ah LiFePO4 (14.3 kWh), BMS JBD 200A, SW: Home Assistant na Synology DS923+ ku tomu ESPHome, Tasmota, MariaDB, InfluxDB, Telegraf, Grafana, Zigbee2MQTT..., HW: ESPlan (ESP32 + LAN 8720 + RS485 + UART). Nejaké moje projekty: MUST-ESPhome, ELTEK Flatpack2 ESPhome, ESP32-EMON, PZEM-017@WiFi, diyBMS-CurrentShunt-ESPhome 01/2023 -> 11/2024 = 8.6 MWh AC
-
- Příspěvky: 2607
- Registrován: stř úno 02, 2022 10:30 am
- Lokalita: okolí Mělníka
- Systémové napětí: 48V
- Výkon panelů [Wp]: 13000
- Kapacita baterie [kWh]: 15
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
jo nesmis tam mit ty delay. Postupne rozsveceni bych resil pres incerement cisla a pak funkci na preklad cisla na ledky. Pri stisku tlacitka 2 tam pak nastavis 0.
Jinak zkus treba toto precist
https://www.arduinocircuit.com/led-blin ... -tutorial/
Jinak zkus treba toto precist
https://www.arduinocircuit.com/led-blin ... -tutorial/
-
- Příspěvky: 16
- Registrován: pát bře 25, 2022 3:38 pm
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
TomHC, tak ale to bude opäť cez funkciu millis. Skúsil som to takto:
Prvé zapnutie funguje dobre. Rozsvieti sa okamžite prvá LED, po sekunde druhá LED a po dalšej sekunde tretia LED. Ak logická úroveň HIGH zo vstupu zmizne a je tam teda LOW tak všetky LED okamžite zhasnú.
Ibaže keď chcem aby sa postupne rozsvietili aj druhý krát, tým že znovu privediem HIGH tak už asi nastane nejaky chaos v časoch. Občas to trafím tak že už svietia všetky alebo alebo začnú svietiť skôr. To millis sa musí urobiť nejako inak než mám.
glottis, to už je asi lahšie skúsiť s tým millis. Ale ďakujem.
Kód: Vybrat vše
// Definícia pinu pre pripojenie LED
const int ledPin1 = 12; // Pripojenie LED pre pin 2
const int ledPin2 = 13; // Pripojenie LED pre pin 3
const int ledPin3 = 11; // Pripojenie LED pre pin 3
const int ledPin4 = 10; // Pripojenie LED pre pin 3
// Definícia pinu pre sledovanie stavu
const int inputPin1 = 2; // Pripojenie pre vstup na pin 2
const int inputPin2 = 3; // Pripojenie pre vstup na pin 3
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
const long interval1 = 1000; // Interval v milisekundách (1 sekunda) pre prvé LED
const long interval2 = 2000; // Interval v milisekundách pre druhé LED
void setup() {
// Nastavenie pinov LED ako výstupov
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
// Nastavenie pinov pre vstup
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop() {
// Čítanie hodnoty digitálneho pinu 2
int value1 = digitalRead(inputPin1);
// Kontrola, či je hodnota HIGH na pine 2
if (value1 == HIGH) {
// Rozsvietenie LED na pine 12
digitalWrite(ledPin1, HIGH);
// Získanie aktuálneho času
unsigned long currentMillis1 = millis();
// Ak uplynulo 1 sekunda, prejdeme na druhú LED
if (currentMillis1 - previousMillis1 >= interval1) {
digitalWrite(ledPin3, HIGH);
previousMillis1 = currentMillis1;
}
// Získanie aktuálneho času
unsigned long currentMillis2 = millis();
// Ak uplynulo 1 sekunda, vypneme druhú LED
if (currentMillis2 - previousMillis2 >= interval2) {
digitalWrite(ledPin4, HIGH);
previousMillis2 = currentMillis2;
}
} else {
// Zhasnutie LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin2, LOW);
}
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH && value1 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
} else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
}
Ibaže keď chcem aby sa postupne rozsvietili aj druhý krát, tým že znovu privediem HIGH tak už asi nastane nejaky chaos v časoch. Občas to trafím tak že už svietia všetky alebo alebo začnú svietiť skôr. To millis sa musí urobiť nejako inak než mám.
glottis, to už je asi lahšie skúsiť s tým millis. Ale ďakujem.
-
- Příspěvky: 1807
- Registrován: pát lis 11, 2022 8:14 am
- Lokalita: Hlohovec, SR
- Systémové napětí: 48V
- Výkon panelů [Wp]: 5520
- Kapacita baterie [kWh]: 14
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Hlohovec, SR
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Tak si nastav debug správy cez sériovú konzolu, nech vieš v akom stave to máš.
2x MUST PH1800 5.5kW, 8.85kWp 3x 2S3P, V+J+Z, 16x 280 Ah LiFePO4 (14.3 kWh), BMS JBD 200A, SW: Home Assistant na Synology DS923+ ku tomu ESPHome, Tasmota, MariaDB, InfluxDB, Telegraf, Grafana, Zigbee2MQTT..., HW: ESPlan (ESP32 + LAN 8720 + RS485 + UART). Nejaké moje projekty: MUST-ESPhome, ELTEK Flatpack2 ESPhome, ESP32-EMON, PZEM-017@WiFi, diyBMS-CurrentShunt-ESPhome 01/2023 -> 11/2024 = 8.6 MWh AC
-
- Příspěvky: 3860
- Registrován: pon úno 07, 2022 10:11 pm
- Lokalita: Zlaté Hory / Olomouc
- Systémové napětí: 24V
- Výkon panelů [Wp]: 3600
- Kapacita baterie [kWh]: 16
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Zlaté Hory
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
A co nějak takto?
Kód: Vybrat vše
// Definícia pinu pre pripojenie LED
const int ledPin1 = 12; // Pripojenie LED pre pin
const int ledPin2 = 13; // Pripojenie LED pre pin
const int ledPin3 = 11; // Pripojenie LED pre pin
const int ledPin4 = 10; // Pripojenie LED pre pin
// Definícia pinu pre sledovanie stavu
const int inputPin1 = 2; // Pripojenie pre vstup na pin 2
const int inputPin2 = 3; // Pripojenie pre vstup na pin 3
void setup() {
// Nastavenie pinov LED ako výstupov
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
// Nastavenie pinov pre vstup
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop() {
// Čítanie hodnoty digitálneho pinu 2
int value1 = digitalRead(inputPin1);
// Kontrola, či je hodnota HIGH na pine 2
if (value1 == HIGH) {
// Rozsvietenie LED na pine 12
digitalWrite(ledPin1, HIGH);
for (int i = 0; i <= 1000; i++) {
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
}
else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
delay(1);
}
digitalWrite(ledPin3, HIGH);
for (int i = 0; i <= 1000; i++) {
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
}
else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
delay(1);
}
digitalWrite(ledPin4, HIGH);
} else {
// Zhasnutie LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
} else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
}
3,6kWp | 2x MUST PV18-3024 VHM, 3kW/24V | 16kWh
-
- Příspěvky: 16
- Registrován: pát bře 25, 2022 3:38 pm
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Soban, ďakujem ale nefunguje to. Opäť tie ledky v prípade že sa HIGH zmení na LOW nezareagujú zhasnutím okamžite.
Rád by som to riešil cez to millis. Rozmýšlal som nad tým (a keď na vstupe bolo LOW a zmenilo sa na HIGH postupne sa rozsvietili LED). Napadlo ma že keď dojde na vstupe ku zmene z HIGH na LOW a LED majú zhasnúť, tak tam zároveň pridám nulovanie premenných kde som ukladal časové údaje z MILLIS. Takto ako to je nižšie so to urobil. Ibaže stále to nerobí to čo to robiť má. Musím nejako ešte zohladniť že MILLIS stále stúpa... Asi, predpokladám že v tom je teraz problém.
Rád by som to riešil cez to millis. Rozmýšlal som nad tým (a keď na vstupe bolo LOW a zmenilo sa na HIGH postupne sa rozsvietili LED). Napadlo ma že keď dojde na vstupe ku zmene z HIGH na LOW a LED majú zhasnúť, tak tam zároveň pridám nulovanie premenných kde som ukladal časové údaje z MILLIS. Takto ako to je nižšie so to urobil. Ibaže stále to nerobí to čo to robiť má. Musím nejako ešte zohladniť že MILLIS stále stúpa... Asi, predpokladám že v tom je teraz problém.
Kód: Vybrat vše
// Definícia pinu pre pripojenie LED
const int ledPin1 = 12; // Pripojenie LED pre pin 2
const int ledPin2 = 13; // Pripojenie LED pre pin 3
const int ledPin3 = 11; // Pripojenie LED pre pin 3
const int ledPin4 = 10; // Pripojenie LED pre pin 3
// Definícia pinu pre sledovanie stavu
const int inputPin1 = 2; // Pripojenie pre vstup na pin 2
const int inputPin2 = 3; // Pripojenie pre vstup na pin 3
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
const long interval1 = 1000; // Interval v milisekundách (1 sekunda) pre prvé LED
const long interval2 = 2000; // Interval v milisekundách pre druhé LED
void setup() {
// Nastavenie pinov LED ako výstupov
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
// Nastavenie pinov pre vstup
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop() {
// Čítanie hodnoty digitálneho pinu 2
int value1 = digitalRead(inputPin1);
// Kontrola, či je hodnota HIGH na pine 2
if (value1 == HIGH) {
// Rozsvietenie LED na pine 12
digitalWrite(ledPin1, HIGH);
// Získanie aktuálneho času
unsigned long currentMillis1 = millis(); //čas z millis uloží do currentMillis1
// Ak uplynulo 1 sekunda, prejdeme na druhú LED
if (currentMillis1 - previousMillis1 >= interval1) { //od currentMillis1 odčíta previousMillis1, ak je výsledok väčší alebo rovný interval1, vykoná sa podmienka
digitalWrite(ledPin3, HIGH);
previousMillis1 = currentMillis1; //čas z currentMillis1 uloží do previousMillis1
}
// Získanie aktuálneho času
unsigned long currentMillis2 = millis();
// Ak uplynulo 1 sekunda, vypneme druhú LED
if (currentMillis2 - previousMillis2 >= interval2) {
digitalWrite(ledPin4, HIGH);
previousMillis2 = currentMillis2;
}
} else {
// Zhasnutie LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin2, LOW);
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
unsigned long currentMillis1 = 0;
unsigned long currentMillis2 = 0;
}
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH && value1 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
} else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
}
-
- Příspěvky: 3860
- Registrován: pon úno 07, 2022 10:11 pm
- Lokalita: Zlaté Hory / Olomouc
- Systémové napětí: 24V
- Výkon panelů [Wp]: 3600
- Kapacita baterie [kWh]: 16
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Zlaté Hory
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Tak takhle?
Musí se stopnout čekání proto jsem tam přidal break
Kód: Vybrat vše
// Definícia pinu pre pripojenie LED
const int ledPin1 = 12; // Pripojenie LED pre pin
const int ledPin2 = 13; // Pripojenie LED pre pin
const int ledPin3 = 11; // Pripojenie LED pre pin
const int ledPin4 = 10; // Pripojenie LED pre pin
// Definícia pinu pre sledovanie stavu
const int inputPin1 = 2; // Pripojenie pre vstup na pin 2
const int inputPin2 = 3; // Pripojenie pre vstup na pin 3
void setup() {
// Nastavenie pinov LED ako výstupov
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
// Nastavenie pinov pre vstup
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop() {
// Čítanie hodnoty digitálneho pinu 2
int value1 = digitalRead(inputPin1);
// Kontrola, či je hodnota HIGH na pine 2
if (value1 == HIGH) {
// Rozsvietenie LED na pine 12
digitalWrite(ledPin1, HIGH);
for (int i = 0; i <= 1000; i++) {
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
}
else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
delay(1);
int value1 = digitalRead(inputPin1);
if (value1 == LOW) break;
}
if (value1 == HIGH) {
digitalWrite(ledPin3, HIGH);
for (int i = 0; i <= 1000; i++) {
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
}
else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
delay(1);
int value1 = digitalRead(inputPin1);
if (value1 == LOW) break;
}
}
if (value1 == HIGH) digitalWrite(ledPin4, HIGH);
} else {
// Zhasnutie LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
} else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
}
3,6kWp | 2x MUST PV18-3024 VHM, 3kW/24V | 16kWh
-
- Příspěvky: 16
- Registrován: pát bře 25, 2022 3:38 pm
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Soban, teraz už zhasnú hneď. Len jedna vec ktorá v pôvodnom kóde išla tak nefunguje. Ak nie je splnená prvá podmienka (alebo prestala platiť) nemá sa vykonať druhá podmienka. Takže ak je na ledPin1 LOW a všetky LED (až na ledPin2) zhasli. Tak zároveň prestala platiť druhá podmienka a musí zhasnúť aj ledPin2. A vlastne zároveň druhá podmienka nikdy bez splnenia prvej nemôže fungovať.
Každopadne by ma aj tak najviac zaujímalo ako program napísať pri použití MILLIS ako je v mojom poslednom kóde. Bohužial tam mám chybu. Chceto nejako zohladniť že hodnota MILLIS stále stúpa. Premenné kde som ukladal časový údaj viem zmazať a aj ich zmazávam ale neviem ako to napísať pri zohladnení že MILLIS stále stúpa. Pardon možno to zle vysvetlujem Ale snažím sa...
Každopadne by ma aj tak najviac zaujímalo ako program napísať pri použití MILLIS ako je v mojom poslednom kóde. Bohužial tam mám chybu. Chceto nejako zohladniť že hodnota MILLIS stále stúpa. Premenné kde som ukladal časový údaj viem zmazať a aj ich zmazávam ale neviem ako to napísať pri zohladnení že MILLIS stále stúpa. Pardon možno to zle vysvetlujem Ale snažím sa...
-
- Příspěvky: 1807
- Registrován: pát lis 11, 2022 8:14 am
- Lokalita: Hlohovec, SR
- Systémové napětí: 48V
- Výkon panelů [Wp]: 5520
- Kapacita baterie [kWh]: 14
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Hlohovec, SR
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Treba aktualizovať last_update a počítať rozdiel: if (last_update + 1000 > millis()) ...
2x MUST PH1800 5.5kW, 8.85kWp 3x 2S3P, V+J+Z, 16x 280 Ah LiFePO4 (14.3 kWh), BMS JBD 200A, SW: Home Assistant na Synology DS923+ ku tomu ESPHome, Tasmota, MariaDB, InfluxDB, Telegraf, Grafana, Zigbee2MQTT..., HW: ESPlan (ESP32 + LAN 8720 + RS485 + UART). Nejaké moje projekty: MUST-ESPhome, ELTEK Flatpack2 ESPhome, ESP32-EMON, PZEM-017@WiFi, diyBMS-CurrentShunt-ESPhome 01/2023 -> 11/2024 = 8.6 MWh AC
-
- Příspěvky: 3860
- Registrován: pon úno 07, 2022 10:11 pm
- Lokalita: Zlaté Hory / Olomouc
- Systémové napětí: 24V
- Výkon panelů [Wp]: 3600
- Kapacita baterie [kWh]: 16
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Zlaté Hory
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Tak si to tam doplň do toho if(vstup==HIGH ....... já to vyhodil protože jsem myslel že se má každé ovládat zvlášť.nichicon píše: ↑sob led 20, 2024 9:06 pmSoban, teraz už zhasnú hneď. Len jedna vec ktorá v pôvodnom kóde išla tak nefunguje. Ak nie je splnená prvá podmienka (alebo prestala platiť) nemá sa vykonať druhá podmienka. Takže ak je na ledPin1 LOW a všetky LED (až na ledPin2) zhasli. Tak zároveň prestala platiť druhá podmienka a musí zhasnúť aj ledPin2. A vlastne zároveň druhá podmienka nikdy bez splnenia prvej nemôže fungovať.
Kód: Vybrat vše
// Definícia pinu pre pripojenie LED
const int ledPin1 = 12; // Pripojenie LED pre pin
const int ledPin2 = 13; // Pripojenie LED pre pin
const int ledPin3 = 11; // Pripojenie LED pre pin
const int ledPin4 = 10; // Pripojenie LED pre pin
// Definícia pinu pre sledovanie stavu
const int inputPin1 = 2; // Pripojenie pre vstup na pin 2
const int inputPin2 = 3; // Pripojenie pre vstup na pin 3
void setup() {
// Nastavenie pinov LED ako výstupov
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
// Nastavenie pinov pre vstup
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop() {
// Čítanie hodnoty digitálneho pinu 2
int value1 = digitalRead(inputPin1);
// Kontrola, či je hodnota HIGH na pine 2
if (value1 == HIGH) {
// Rozsvietenie LED na pine 12
digitalWrite(ledPin1, HIGH);
for (int i = 0; i <= 1000; i++) {
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH && value1 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
}
else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
delay(1);
int value1 = digitalRead(inputPin1);
if (value1 == LOW) break;
}
if (value1 == HIGH) {
digitalWrite(ledPin3, HIGH);
for (int i = 0; i <= 1000; i++) {
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH && value1 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
}
else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
delay(1);
int value1 = digitalRead(inputPin1);
if (value1 == LOW) break;
}
}
if (value1 == HIGH) digitalWrite(ledPin4, HIGH);
} else {
// Zhasnutie LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH && value1 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
} else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
}
3,6kWp | 2x MUST PV18-3024 VHM, 3kW/24V | 16kWh
-
- Příspěvky: 3860
- Registrován: pon úno 07, 2022 10:11 pm
- Lokalita: Zlaté Hory / Olomouc
- Systémové napětí: 24V
- Výkon panelů [Wp]: 3600
- Kapacita baterie [kWh]: 16
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Zlaté Hory
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Pracování s millis z jiného mého programu:nichicon píše: ↑sob led 20, 2024 9:06 pmKaždopadne by ma aj tak najviac zaujímalo ako program napísať pri použití MILLIS ako je v mojom poslednom kóde. Bohužial tam mám chybu. Chceto nejako zohladniť že hodnota MILLIS stále stúpa. Premenné kde som ukladal časový údaj viem zmazať a aj ich zmazávam ale neviem ako to napísať pri zohladnení že MILLIS stále stúpa. Pardon možno to zle vysvetlujem Ale snažím sa...
Kód: Vybrat vše
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// zapnuty termostat zapnutí - vypnutí
if (termostat==true) {
int t_c = teplota_cidla1_int();
if (t_c == -127) {
delay(500);
// A zkusíme to znovu
t_c = teplota_cidla1_int();
}
timeClient.update();
int hodina = timeClient.getHours();
if ((hodina < ZAP_NOCNI) && (hodina >= VYP_NOCNI)) teplota_termostat = teplota_termostat_den;
else teplota_termostat = teplota_termostat_noc;
if (t_c == -127) {
komunikace = -127;
previousMillis -= interval;
}
else komunikace = 0;
if ((t_c < teplota_termostat) && (t_c != -127)) rele_on();
if ((t_c >= teplota_termostat) && (t_c != -127)) rele_off();
}
else {
if (currentMillis - casovac_termostat >= casovac_termostat_interval) termostat = true;
}
}
nouzove_ovladani();
// pravidelné volání detekce klienta,
// v případě otevření stránky se provedou
// funkce nastavené výše
server.handleClient();
}
3,6kWp | 2x MUST PV18-3024 VHM, 3kW/24V | 16kWh
-
- Příspěvky: 16
- Registrován: pát bře 25, 2022 3:38 pm
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Snažím sa ale bohužial neviem ako to napísať
Zopakujem ako to funguje: Keď sa prvý krát na vstupe inputPin1 objaví úroveň HIGH LEDky sa podla millis pekne postupne rozsvietia ledPin1, ledPin3, ledPin4. Ak sa počas toho kým je na inputPin1 HIGH (a svietia LEDky) objaví HIGH na inputPin2 okamžite sa rozsvieti ledPin2, ak sa na inputPin2 objaví LOW ledPin2 okamžite zhasne. Ak sa na inputPin1 objaví LOW musia okamžite všetky LEDky zhasnúť.
Po privedení HIGH na inputPin1 by sa mal program opakovať. Teda LEDky ledPin1, ledPin3, ledPin4 postupne rozsvietiť.
Problém je že ten program beží dookola keď sa na inputPin1 objaví znovu HIGH ledky sa nerozsvietia postupne ale program beží "na pozadí" a svietia podla toho v akom bode som to chytil.
Prosím vedel by mi niekto ten kód upraviť a zachovať to millis? Aktuálne mám toto:
Soban, ďakujem ale som začiatočník. Ten tvoj kód bohužial teraz velmi nepochopím
Zopakujem ako to funguje: Keď sa prvý krát na vstupe inputPin1 objaví úroveň HIGH LEDky sa podla millis pekne postupne rozsvietia ledPin1, ledPin3, ledPin4. Ak sa počas toho kým je na inputPin1 HIGH (a svietia LEDky) objaví HIGH na inputPin2 okamžite sa rozsvieti ledPin2, ak sa na inputPin2 objaví LOW ledPin2 okamžite zhasne. Ak sa na inputPin1 objaví LOW musia okamžite všetky LEDky zhasnúť.
Po privedení HIGH na inputPin1 by sa mal program opakovať. Teda LEDky ledPin1, ledPin3, ledPin4 postupne rozsvietiť.
Problém je že ten program beží dookola keď sa na inputPin1 objaví znovu HIGH ledky sa nerozsvietia postupne ale program beží "na pozadí" a svietia podla toho v akom bode som to chytil.
Prosím vedel by mi niekto ten kód upraviť a zachovať to millis? Aktuálne mám toto:
Kód: Vybrat vše
// Definícia pinu pre pripojenie LED
const int ledPin1 = 12; // Pripojenie LED pre pin 2
const int ledPin2 = 13; // Pripojenie LED pre pin 3
const int ledPin3 = 11; // Pripojenie LED pre pin 3
const int ledPin4 = 10; // Pripojenie LED pre pin 3
// Definícia pinu pre sledovanie stavu
const int inputPin1 = 2; // Pripojenie pre vstup na pin 2
const int inputPin2 = 3; // Pripojenie pre vstup na pin 3
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
const long interval1 = 1000; // Interval v milisekundách (1 sekunda) pre prvé LED
const long interval2 = 2000; // Interval v milisekundách pre druhé LED
void setup() {
// Nastavenie pinov LED ako výstupov
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
// Nastavenie pinov pre vstup
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop() {
// Čítanie hodnoty digitálneho pinu 2
int value1 = digitalRead(inputPin1);
// Kontrola, či je hodnota HIGH na pine 2
if (value1 == HIGH) {
// Rozsvietenie LED na pine 12
digitalWrite(ledPin1, HIGH);
// Získanie aktuálneho času
unsigned long currentMillis1 = millis(); //čas z millis uloží do currentMillis1
// Ak uplynulo 1 sekunda, prejdeme na druhú LED
if (currentMillis1 - previousMillis1 >= interval1) { //od currentMillis1 odčíta previousMillis1, ak je výsledok väčší alebo rovný interval1, vykoná sa podmienka
digitalWrite(ledPin3, HIGH);
previousMillis1 = currentMillis1; //čas z currentMillis1 uloží do previousMillis1
}
// Získanie aktuálneho času
unsigned long currentMillis2 = millis();
// Ak uplynulo 1 sekunda, vypneme druhú LED
if (currentMillis2 - previousMillis2 >= interval2) {
digitalWrite(ledPin4, HIGH);
previousMillis2 = currentMillis2;
}
} else {
// Zhasnutie LED
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin2, LOW);
}
// Čítanie hodnoty digitálneho pinu 3
int value2 = digitalRead(inputPin2);
// Kontrola, či je hodnota HIGH na pine 3
if (value2 == HIGH && value1 == HIGH) {
// Rozsvietenie LED na pine 13
digitalWrite(ledPin2, HIGH);
} else {
// Zhasnutie LED na pine 13
digitalWrite(ledPin2, LOW);
}
}
-
- Příspěvky: 1807
- Registrován: pát lis 11, 2022 8:14 am
- Lokalita: Hlohovec, SR
- Systémové napětí: 48V
- Výkon panelů [Wp]: 5520
- Kapacita baterie [kWh]: 14
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Hlohovec, SR
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Ak si začiatočník, tak ti veľmi nepomôže, ak to urobí niekto namiesto teba. Vidím tam ešte pár nedostatkov:
- chýba INPUT_PULLUP, ak teda na tlačítkach nemáš pull-up rezistory
- nemáš tam debounce na tlačítka (kuk google)
Pridal by som pomocnú bool premennú, ktorá bola true ak začalo rozsvecovanie led. Alebo by som použil slučku do... while.
Cez víkend na takéto veci nemám čas, zajtra to môžem napísať, ale... To ťa moc neposunie.
- chýba INPUT_PULLUP, ak teda na tlačítkach nemáš pull-up rezistory
- nemáš tam debounce na tlačítka (kuk google)
Pridal by som pomocnú bool premennú, ktorá bola true ak začalo rozsvecovanie led. Alebo by som použil slučku do... while.
Cez víkend na takéto veci nemám čas, zajtra to môžem napísať, ale... To ťa moc neposunie.
2x MUST PH1800 5.5kW, 8.85kWp 3x 2S3P, V+J+Z, 16x 280 Ah LiFePO4 (14.3 kWh), BMS JBD 200A, SW: Home Assistant na Synology DS923+ ku tomu ESPHome, Tasmota, MariaDB, InfluxDB, Telegraf, Grafana, Zigbee2MQTT..., HW: ESPlan (ESP32 + LAN 8720 + RS485 + UART). Nejaké moje projekty: MUST-ESPhome, ELTEK Flatpack2 ESPhome, ESP32-EMON, PZEM-017@WiFi, diyBMS-CurrentShunt-ESPhome 01/2023 -> 11/2024 = 8.6 MWh AC
-
- Příspěvky: 2607
- Registrován: stř úno 02, 2022 10:30 am
- Lokalita: okolí Mělníka
- Systémové napětí: 48V
- Výkon panelů [Wp]: 13000
- Kapacita baterie [kWh]: 15
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
tak jsme to zkusil napsat do chat GPT, jen tak pro zajimavost. Zadani jsme zadal tohle ale mozna jsem to nepopsal dobre
Napis neblokojici kod pro arduino s nasledujici funkci. Mam dva vstupni piny na tlacitka a 4 vystupni piny na LED. Pokod stlacim a drzim tlacitko 1, rozsviti se prvni LED 1 a s periodou 1000ms se rozsvecuji postupne dalsi. Pokud tlacitko 1 pustim, led zhasnou. POkud stlacim a drzim tlacitko 2, okamzite se rozsviti LED 2. Kdyz tlacitko pustim, led zhasne.
a pak jsme ho jednou opravil, ze to udelal na prvni pohled blokujici. Jestli to funguje jsem nezkousel ani presne nekontroloval ale zda se to minimalne na inspiraci zajimave
Napis neblokojici kod pro arduino s nasledujici funkci. Mam dva vstupni piny na tlacitka a 4 vystupni piny na LED. Pokod stlacim a drzim tlacitko 1, rozsviti se prvni LED 1 a s periodou 1000ms se rozsvecuji postupne dalsi. Pokud tlacitko 1 pustim, led zhasnou. POkud stlacim a drzim tlacitko 2, okamzite se rozsviti LED 2. Kdyz tlacitko pustim, led zhasne.
a pak jsme ho jednou opravil, ze to udelal na prvni pohled blokujici. Jestli to funguje jsem nezkousel ani presne nekontroloval ale zda se to minimalne na inspiraci zajimave
Kód: Vybrat vše
const int buttonPin1 = 2; // Tlačítko 1
const int buttonPin2 = 3; // Tlačítko 2
const int ledPins[] = {4, 5, 6, 7}; // Piny pro LEDky
const int numLeds = 4; // Celkový počet LEDek
const int delayTime = 1000; // Časová prodleva mezi postupným rozsvěcováním LEDek
bool button1Pressed = false;
bool button2Pressed = false;
void setup() {
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT); // Nastavit piny LEDek jako výstupy
}
pinMode(buttonPin1, INPUT_PULLUP); // Nastavit tlačítko 1 jako vstup s pull-up rezistory
pinMode(buttonPin2, INPUT_PULLUP); // Nastavit tlačítko 2 jako vstup s pull-up rezistory
}
void loop() {
if (digitalRead(buttonPin1) == LOW) {
// Tlačítko 1 je stisknuto
button1Pressed = true;
button2Pressed = false;
} else if (digitalRead(buttonPin2) == LOW) {
// Tlačítko 2 je stisknuto
button2Pressed = true;
button1Pressed = false;
}
if (button1Pressed) {
turnOnSequence();
} else if (button2Pressed) {
digitalWrite(ledPins[1], HIGH); // Rozsvítit LED 2
} else {
digitalWrite(ledPins[1], LOW); // Zhasnout LED 2
}
}
void turnOnSequence() {
static unsigned long previousMillis = 0;
static int currentLed = 0;
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= delayTime) {
digitalWrite(ledPins[currentLed], HIGH); // Rozsvítit aktuální LED
previousMillis = currentMillis;
currentLed++;
if (currentLed >= numLeds) {
currentLed = 0;
button1Pressed = false; // Resetovat příznak stisknutého tlačítka
}
}
}
-
- Příspěvky: 1807
- Registrován: pát lis 11, 2022 8:14 am
- Lokalita: Hlohovec, SR
- Systémové napětí: 48V
- Výkon panelů [Wp]: 5520
- Kapacita baterie [kWh]: 14
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Hlohovec, SR
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
A programátori budú bez práce
2x MUST PH1800 5.5kW, 8.85kWp 3x 2S3P, V+J+Z, 16x 280 Ah LiFePO4 (14.3 kWh), BMS JBD 200A, SW: Home Assistant na Synology DS923+ ku tomu ESPHome, Tasmota, MariaDB, InfluxDB, Telegraf, Grafana, Zigbee2MQTT..., HW: ESPlan (ESP32 + LAN 8720 + RS485 + UART). Nejaké moje projekty: MUST-ESPhome, ELTEK Flatpack2 ESPhome, ESP32-EMON, PZEM-017@WiFi, diyBMS-CurrentShunt-ESPhome 01/2023 -> 11/2024 = 8.6 MWh AC
-
- Příspěvky: 2607
- Registrován: stř úno 02, 2022 10:30 am
- Lokalita: okolí Mělníka
- Systémové napětí: 48V
- Výkon panelů [Wp]: 13000
- Kapacita baterie [kWh]: 15
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
programatori asi ne, prece jen nejde na to jen to napsat ale hlavne to vymyslet a to co nableje ted gpt se neda vzit a pouzit. To je jak to zkopirovat ze stack overflow ale treba prekladatele to budou mit urcite tezsi
-
- Příspěvky: 3860
- Registrován: pon úno 07, 2022 10:11 pm
- Lokalita: Zlaté Hory / Olomouc
- Systémové napětí: 24V
- Výkon panelů [Wp]: 3600
- Kapacita baterie [kWh]: 16
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Zlaté Hory
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Nejlepší je jak si uděláš blokový diagram jak to má postupovat aby jsi měl přehled.....
A pak to začneš přepisovat.
A pak to začneš přepisovat.
3,6kWp | 2x MUST PV18-3024 VHM, 3kW/24V | 16kWh
-
- Příspěvky: 16
- Registrován: pát bře 25, 2022 3:38 pm
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
TomHC, pull up tam netreba. Reálne MCU komunikuje cez optočleny. Ak to chcem ošetriť proti rušeniu tak už to cez 10k odpor buď dám na zem, ak sa tam privádza logická 1/HIGH alebo naopak na napájanie ak by sa tam privádzala 0/LOW... Ani prekmity tlačítka tam teda netreba riešiť. Práve že keby mi niekto napísal ako to má vyzerať s millis tak by mi to dosť pomohlo. Vedel by som to tak urobiť aj v budúcnosti a osvojiť si to. Ak by si mal čas tak budem velmi rád. Vyzerá to že ľudia tu by to mali prepísané za pár minút
Soban, dnes skúsim ten kód od teba vyskúšať. Ďakujem
glottis, pre srandu to vyskúšam tiež
Soban, dnes skúsim ten kód od teba vyskúšať. Ďakujem
glottis, pre srandu to vyskúšam tiež
-
- Příspěvky: 3860
- Registrován: pon úno 07, 2022 10:11 pm
- Lokalita: Zlaté Hory / Olomouc
- Systémové napětí: 24V
- Výkon panelů [Wp]: 3600
- Kapacita baterie [kWh]: 16
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Zlaté Hory
Re: kód postupného rozsvecovania LED a ich okamžitého zhasnutia
Ty odpory tam nejsou proti rušení, ale aby byla zaručená úroveň na vstupu jak je tlačítko rozpojené, či rozepnut jiný spínací prvek a proč nevyužít odpor který už je integrovaný v CPU?
A tady příklady: https://forum.arduino.cc/t/using-millis ... ide/483573
A tady příklady: https://forum.arduino.cc/t/using-millis ... ide/483573
3,6kWp | 2x MUST PV18-3024 VHM, 3kW/24V | 16kWh