Spúštanie a vypínanie programu jedným tlačítkom
Moderátor: Moderátori
-
- Stály člen
- Príspevky: 196
- Dátum registrácie: 13 Máj 2011, 00:00
- Vek: 47
Spúštanie a vypínanie programu jedným tlačítkom
Ahoj.
Som Arduino úplný začiatočník ale skúšam si napísať jednoduchý program.
Po pripojení napätia Arduino čaká na stlačenie tlačitka.
Po stlačení tlačítka zopne rele na 1 munútu
Potom čaká 30 sekún a tak dookola. Je to ako cyklovač, kým opäť nestlačím tlačítko.
Jedným stačením program spustím, druhým stlačením program ukončím.
Napísal som si program. Funguje to ale neviem ako urobiť to ukončenie stlačením tlačitka. Môžete mi prosím pomôcť doplniť môj program?
Ďakujem veľmi pekne
const int button_enter = 8;
byte sw_enter = 0;
void setup() {
//zaciatok progamu ktory prebehne iba raz (inicializacia)
//nastavenie pinu 8 ako tlacitko vstup
pinMode(button_enter, INPUT_PULLUP);
//nastavenie pinu 2 ako vystup
pinMode(2, OUTPUT);
//nastavenie +5V na vystupe
digitalWrite(2, HIGH);
}
void loop() {
if ((digitalRead (button_enter) == 0) || (sw_enter == 1)) //stlacenie tlacitka, na pin 8 GND
{
sw_enter = 1;
//program Arduina
//zaciatok programu ktory bezi dookola kym nestlacim opat tlacitko
// delay(cas); znamena ze program nerobi nic a caka urceny cas v ms
digitalWrite(2, LOW); //pin 2 prepne na 0V (GND)
delay(60000); //cas zapnutia pinu 2 na 1minutu (60000ms)
digitalWrite(2, HIGH); //pin 2 prepne na +5V
delay(30000); //caká 30sekund (30000ms)
// caka na stlacenie tlacitka
Som Arduino úplný začiatočník ale skúšam si napísať jednoduchý program.
Po pripojení napätia Arduino čaká na stlačenie tlačitka.
Po stlačení tlačítka zopne rele na 1 munútu
Potom čaká 30 sekún a tak dookola. Je to ako cyklovač, kým opäť nestlačím tlačítko.
Jedným stačením program spustím, druhým stlačením program ukončím.
Napísal som si program. Funguje to ale neviem ako urobiť to ukončenie stlačením tlačitka. Môžete mi prosím pomôcť doplniť môj program?
Ďakujem veľmi pekne
const int button_enter = 8;
byte sw_enter = 0;
void setup() {
//zaciatok progamu ktory prebehne iba raz (inicializacia)
//nastavenie pinu 8 ako tlacitko vstup
pinMode(button_enter, INPUT_PULLUP);
//nastavenie pinu 2 ako vystup
pinMode(2, OUTPUT);
//nastavenie +5V na vystupe
digitalWrite(2, HIGH);
}
void loop() {
if ((digitalRead (button_enter) == 0) || (sw_enter == 1)) //stlacenie tlacitka, na pin 8 GND
{
sw_enter = 1;
//program Arduina
//zaciatok programu ktory bezi dookola kym nestlacim opat tlacitko
// delay(cas); znamena ze program nerobi nic a caka urceny cas v ms
digitalWrite(2, LOW); //pin 2 prepne na 0V (GND)
delay(60000); //cas zapnutia pinu 2 na 1minutu (60000ms)
digitalWrite(2, HIGH); //pin 2 prepne na +5V
delay(30000); //caká 30sekund (30000ms)
// caka na stlacenie tlacitka
0
Re: Spúštanie a vypínanie programu jedným tlačítkom
Rozdel si program v Loop() na dve časti:
1. testuj stlačenie tlačítka. Ak je tlačidlo stlačené, nastav príznak sw_enter na opačný (0->1 resp. 1->0)
Tým zabezpečíš, že jedným tlačidlom budeš zapínať, resp vypínať cyklovač.
2. testuj nastavenie sw_enter: Ak je =1, len vtedy prebehne 1 cyklus cyklovača.
A takto to pôjde stále dokola ...
1. testuj stlačenie tlačítka. Ak je tlačidlo stlačené, nastav príznak sw_enter na opačný (0->1 resp. 1->0)
Tým zabezpečíš, že jedným tlačidlom budeš zapínať, resp vypínať cyklovač.
2. testuj nastavenie sw_enter: Ak je =1, len vtedy prebehne 1 cyklus cyklovača.
A takto to pôjde stále dokola ...
0
-
- Stály člen
- Príspevky: 196
- Dátum registrácie: 13 Máj 2011, 00:00
- Vek: 47
Re: Spúštanie a vypínanie programu jedným tlačítkom
Ďakujem.
Dúfam, že som to správne pochopil. Skúsim to prepísať alebo dufam že to nebude drzé ale môžeš mi prepísať ten môj program a ja urobím CTRL-C a CTRL-V
Dúfam, že som to správne pochopil. Skúsim to prepísať alebo dufam že to nebude drzé ale môžeš mi prepísať ten môj program a ja urobím CTRL-C a CTRL-V
0
Re: Spúštanie a vypínanie programu jedným tlačítkom
Jedna poznamka. Snaz sa nepouzivat delay(). Blokujes si ostatne casti programu, aj ked v tomto pripade je to OK. Ale ak ho budes rozsirovat, mozu nastat problemy.
Pozri si funckiu millis() trebars tu
https://arduinoposlovensky.sk/programov ... ay-millis/
Pozri si funckiu millis() trebars tu
https://arduinoposlovensky.sk/programov ... ay-millis/
0
-
- Stály člen
- Príspevky: 196
- Dátum registrácie: 13 Máj 2011, 00:00
- Vek: 47
Re: Spúštanie a vypínanie programu jedným tlačítkom
Ďakujem za upozornenie. Finalny čas cyklovača sa bude pohybovať okolo 15 minút zapnuté relé a 10 sekúnd vypnuté. Preto som použil delay(). Prepáčte že som to nepovedal hneď. Krátke časy som použil na testovanie.
0
-
- Ultimate člen
- Príspevky: 2587
- Dátum registrácie: 20 Júl 2010, 00:00
- Bydlisko: okolie KE
- Vek: 27
Re: Spúštanie a vypínanie programu jedným tlačítkom
O to väčší dôvod vyhýbať sa delay. Ak by ste neskôr chceli, aby program počas čakania reagoval na tlačidlo, máte problém.
Správny postup je podľa millis sledovať, kedy ubehne určený čas (a medzitým sa môže robiť čo len chcete).
Správny postup je podľa millis sledovať, kedy ubehne určený čas (a medzitým sa môže robiť čo len chcete).
0
-
- Pokročilý člen
- Príspevky: 652
- Dátum registrácie: 06 Dec 2020, 11:46
- Bydlisko: Banska Stiavnica
- Vek: 39
Re: Spúštanie a vypínanie programu jedným tlačítkom
Ak pouzijes delay() tak nemas ako ten cyklovac pocas behu (tych 15-tich minut) vypnut. Jedine ak by si obsluhoval tlacitko cez interrupt.
Dokonca aj po uplynuti delay-u je problem ten cyklovac vypnut. Musel by si ho nastavit iba na jeden 15min cyklus a manualne ho zakazdym spustat.
Dokonca aj po uplynuti delay-u je problem ten cyklovac vypnut. Musel by si ho nastavit iba na jeden 15min cyklus a manualne ho zakazdym spustat.
0
"No pain, no gain." (KC238)
Re: Spúštanie a vypínanie programu jedným tlačítkom
Ono ide urobit aj kratky delay, a inkrementovat premenu..... Ale to u potom radsej fakt ten milis.
0
-
- Stály člen
- Príspevky: 196
- Dátum registrácie: 13 Máj 2011, 00:00
- Vek: 47
Re: Spúštanie a vypínanie programu jedným tlačítkom
Ak by som veľmi pekne poprosil, môžete mi niekto prepísať ten program, aby fungoval správne tak ako som písal hore? Nájde sa niekto? Ja naozaj nerozumiem tomu. Aby som ho skopíroval a nahral iba? Vidím, že ste odborníci na toto tak mi to napíšte niekto.
Ďakujem
Ďakujem
0
-
- Ultimate člen
- Príspevky: 2587
- Dátum registrácie: 20 Júl 2010, 00:00
- Bydlisko: okolie KE
- Vek: 27
Re: Spúštanie a vypínanie programu jedným tlačítkom
Kód: Vybrať všetko
#define BUTTON_PIN 0
#define RELAY_PIN 1
#define ON_TIME 1000
#define OFF_TIME 1000
#define STATUS_READY 0
#define STATUS_ON 1
#define STATUS_OFF 2
int status;
long nextEventTicks;
int lastButtonState;
void setup()
{
pinMode(BUTTON_PIN,INPUT_PULLUP);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN,0);
status = STATUS_READY;
lastButtonState = digitalRead(BUTTON_PIN);
}
void loop()
{
int buttonState = digitalRead(BUTTON_PIN);
long ticks = millis();
if(buttonState & !lastButtonState)
{
if(status == STATUS_READY)
{
status = STATUS_ON;
digitalWrite(RELAY_PIN,1);
nextEventTicks = ticks + ON_TIME;
}
else
{
status = STATUS_READY;
digitalWrite(RELAY_PIN,0);
}
}
lastButtonState = buttonState;
if(status == STATUS_ON)
{
if(ticks > nextEventTicks)
{
status = STATUS_OFF;
digitalWrite(RELAY_PIN,0);
nextEventTicks = ticks + OFF_TIME;
}
}
else if(status == STATUS_OFF)
{
if(ticks > nextEventTicks)
{
status = STATUS_ON;
digitalWrite(RELAY_PIN,1);
nextEventTicks = ticks + ON_TIME;
}
}
}
0
-
- Pokročilý člen
- Príspevky: 652
- Dátum registrácie: 06 Dec 2020, 11:46
- Bydlisko: Banska Stiavnica
- Vek: 39
Re: Spúštanie a vypínanie programu jedným tlačítkom
Spravil som to cez jeden switch (stavovu masinu) aby to bolo pokope. Chyba tam vyriesenie zakmitov na tlacitku -celkovo jednoznacny spolahlivy stisk v tom digitalRead() if-e. Nemam arduino ani to vyvojove prostredie, pisal som to v .txt takze nerucim.
Edit: Prisiel som na to ze existuje online compiler, bola tam chybka v dvojitej deklaracii premennnej currentMillis, tak som to opravil.
Edit: Prisiel som na to ze existuje online compiler, bola tam chybka v dvojitej deklaracii premennnej currentMillis, tak som to opravil.
Kód: Vybrať všetko
unsigned char status = 0;
unsigned long previousMillis = 0;
unsigned long currentMillis;
unsigned long duration = 0;
const int button_enter = 8;
void setup() {
//zaciatok progamu ktory prebehne iba raz (inicializacia)
//nastavenie pinu 8 ako tlacitko vstup
pinMode(button_enter, INPUT_PULLUP);
//nastavenie pinu 2 ako vystup
pinMode(2, OUTPUT);
//nastavenie +5V na vystupe
digitalWrite(2, HIGH);
}
void loop() {
if(digitalRead (button_enter) == 0) {
delay(500); // pre zamedzenie opatovneho volania pocas jedneho stisku tl.
if(status == 0) {
status = 1;
} else {
status = 0;
digitalWrite(2, HIGH); //pin 2 prepne na +5V
}
}
switch(status) {
////////////Cyklovac vypnuty/////////
case 0:
break;
////////////Nastav casovac na 60000, uloz akt. cas, Nastav Pin2 Low/////////
case 1:
duration = 60000;
previousMillis = millis();
digitalWrite(2, LOW); //pin 2 prepne na 0V (GND)
status = 2;
break;
////////////Kontroluj casovac, po uplynuti 60sec nastav Pin2 High /////////
case 2:
currentMillis = millis();
if (currentMillis - previousMillis >= duration) {
digitalWrite(2, HIGH); //pin 2 prepne na +5V
status = 3;
}
break;
////////////Nastav casovac na 30000, uloz akt. cas/////////
case 3:
duration = 30000;
previousMillis = millis();
status = 4;
break;
////////////Kontroluj casovac, po uplynuti 30sec skoc na case 1 /////////
case 4:
currentMillis = millis();
if (currentMillis - previousMillis >= duration) {
status = 1;
}
break;
default:
break;
}
}
0
Naposledy upravil/-a miso156 v 11 Okt 2021, 14:12, upravené celkom 6 krát.
"No pain, no gain." (KC238)
-
- Stály člen
- Príspevky: 196
- Dátum registrácie: 13 Máj 2011, 00:00
- Vek: 47
Re: Spúštanie a vypínanie programu jedným tlačítkom
Ďakujem veľmi pekne.
Debouncing tlačidla riešim podľa obrázka: Čo sa týka dlžky cyklovania tak bude cyklovať cca 5 x max. Niekde v štvrtom alebo piatom 15 minutovom cykle ho stopnem.
Debouncing tlačidla riešim podľa obrázka: Čo sa týka dlžky cyklovania tak bude cyklovať cca 5 x max. Niekde v štvrtom alebo piatom 15 minutovom cykle ho stopnem.
0
Re: Spúštanie a vypínanie programu jedným tlačítkom
martinhudak napísal: ↑11 Okt 2021, 08:41Som Arduino úplný začiatočník ale skúšam si napísať jednoduchý program. ...
Ctrl+C a Ctrl+V hotového programu nie je najlepší spôsob, ako sa učiť programovať.martinhudak napísal: ↑11 Okt 2021, 12:39Ak by som veľmi pekne poprosil, môžete mi niekto prepísať ten program, aby fungoval správne tak ako som písal hore? Nájde sa niekto? Ja naozaj nerozumiem tomu. Aby som ho skopíroval a nahral iba? ...
Ak sa s tým nepopasuješ sám (aj s radami a usmerneniami), nenaučíš sa to.
Dostal si sa k upečenej rybe, no ďalšiu si chytiť nevieš.
Predložené programy možno intuitívne pochopíš, ako fungujú, ale nevieš, prečo to bolo práve takto navrhnuté.
Záver: Ak sa chceš aj niečo naučiť, toto nie je cesta. Ale možno nebolo cieľom prejsť od statusu "úplný začiatočník" k statusu "začiatočník".
A bola tu šanca - na zaujímavom probléme, ktorý ťa naviac aj zaujíma, prejsť postupnosťou úprav a pochopiť aj osvojiť si postupy vedúce k fungujúcemu a dobrému programu.
0
-
- Stály člen
- Príspevky: 196
- Dátum registrácie: 13 Máj 2011, 00:00
- Vek: 47
Re: Spúštanie a vypínanie programu jedným tlačítkom
Ano pravda. Ja o programovani v Arduine neviem nic. Skúsal som niečo počítať po nete a potom vytvoriť. Trvalo mi to týžden a aj tak to nejde tak ako by som chcel. Preto som oslovil tu. Nájde sa niekto a napíše mi to správne. Ja to nahrám, dokončím hardware tak ako potrebujem a koniec. Možno už nikdy nebudem potrebovať Arduino. Preto toto bola ľahká cesta. Myslel som že si takto možeme pomáhať. Teda urýchliť problém. Nemusím sa hneď začať učiť programovať ak potrebujem len pre jeden projekt program. Ale nechcel som nikoho uraziť alebo niečo podobné. Nejaké návrhy som tu dostal a snáď sa s toho vysomárim a bude to fungovať. Ďakujem všetkým za ochotu a prajem pekný deň
0
Re: Spúštanie a vypínanie programu jedným tlačítkom
OK - cieľom bola ryba, nie udica..
To moje rečovanie by bolo aktuálne, ak by si sa chcel učiť programovať ...
Chválihodné je, že si si to skúsil a nielen žiadal, kto ti napíše hotový program.
Takto sa aj skôr dostaneš k rade a pomoci, ak by ti niečo nešlo tak, ako si si to predstavoval.
Prajem úspešné dokončenie projektu.
To moje rečovanie by bolo aktuálne, ak by si sa chcel učiť programovať ...
Chválihodné je, že si si to skúsil a nielen žiadal, kto ti napíše hotový program.
Takto sa aj skôr dostaneš k rade a pomoci, ak by ti niečo nešlo tak, ako si si to predstavoval.
Prajem úspešné dokončenie projektu.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Spúštanie a vypínanie programu jedným tlačítkom
V prvom rade by som rád pokritizoval niekoľko predošlých postov.
1. Odstránie zákmitov kondenzátorom. Ak niekto nevie čo urobí skratovanie kondenzátora tak nech sa pozrie na video TO220 na youtube. V tomto prípade je síce kondenzátor podstatne slabší. Takže kontakt mikrospínača sa nezničí okamžite, ale až po nejakej dobe. Treba tam doplniť ešte jeden odpor aby to bolo OK.
2. maskrtnik01 prečo sem dávaš chybný kód, keď vieš že je chybný (nerieši pretečenie). To si si nemohol zobrať kód z linku čo dal dan21 kde je to naprogramované OK? Aký to má zmysel šíriť bludy začiatočníkom. Navyše zákerné jak sviňa. To žiadny začiatočník nepochopí čo je na tom zle.
3. V tomto prípade si myslím že millis je kanón na vrabca. Pre začiatočníka to musí byť absolútne nepochopitelné. Dokonca aj tie arduino príklady na tlačítka sa mi moc nepáčia.
Čo napr. toto? Je to tiež nepochopitelné?
1. Odstránie zákmitov kondenzátorom. Ak niekto nevie čo urobí skratovanie kondenzátora tak nech sa pozrie na video TO220 na youtube. V tomto prípade je síce kondenzátor podstatne slabší. Takže kontakt mikrospínača sa nezničí okamžite, ale až po nejakej dobe. Treba tam doplniť ešte jeden odpor aby to bolo OK.
2. maskrtnik01 prečo sem dávaš chybný kód, keď vieš že je chybný (nerieši pretečenie). To si si nemohol zobrať kód z linku čo dal dan21 kde je to naprogramované OK? Aký to má zmysel šíriť bludy začiatočníkom. Navyše zákerné jak sviňa. To žiadny začiatočník nepochopí čo je na tom zle.
3. V tomto prípade si myslím že millis je kanón na vrabca. Pre začiatočníka to musí byť absolútne nepochopitelné. Dokonca aj tie arduino príklady na tlačítka sa mi moc nepáčia.
Čo napr. toto? Je to tiež nepochopitelné?
Kód: Vybrať všetko
const int button_enter = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
//Pocka na stisnutie a uvolnenie tlacika
void waitPushRelease()
{
while(digitalRead (button_enter) == 1); //cakaj pokym je tlacitko pustene
delay(50); //ignoruj zakmity zatvorenim oci na 50ms
while(digitalRead (button_enter) == 0); //cakaj pokym je tlacitko stlacene
delay(50); //ignoruj zakmity zatvorenim oci na 50ms
}
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(button_enter, INPUT_PULLUP);
}
void loop() {
waitPushRelease(); //pockaj az stisne a pusti
digitalWrite(ledPin, HIGH); //zapni led
waitPushRelease(); //pockaj az stisne a pusti
digitalWrite(ledPin, LOW); //vypni led
}
1
1
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
-
- Stály člen
- Príspevky: 196
- Dátum registrácie: 13 Máj 2011, 00:00
- Vek: 47
Re: Spúštanie a vypínanie programu jedným tlačítkom
Prosím skúste nekritizovať, ale poradiť. Veľmi to oceníme aj my, ktorý tomu nerozumieme. A ešte jedna vec. Ak viem, čo má robiť program a niekto mi ho napíše, pozerám na ten kód a podstatne skôr pochopím čo znamená ako keď ho mám písať sám. Takže aj takto sa ľudia učia. Každý máme svoj spôsob.
peterple ak si videl že maskrtnik01 sem dal zlý kód, prečo si ten kód neopravil, nevložil sem s milým poučením a takto by sme sa to robiť správne naučili všetci vrátane maskrtnik01 a to podstatne príjemnejším spôsobom. Ja chápem že sú tu múdrejší ľudia ako ja ale ja naozaj oceňujem snahu maskrtnik01 mi pomôcť. Za to sa mu chcem poďakovať.
peterple ďakujem za kritiku tlačítka, pravdepodobne si narážal na môj obrázok ale ja som čerpal z učenia na webe https://zschlebnice.sk/kopr/arduino.php tak potom už neviem ako zistiť čo je správne. A na druhej strane si mohol chlapsky ku komentu pribaliť tvoju presnú schému aj s odporom a povedať "takto je to správne" Aby sme to mohli používať aj my obyčajný ľudia. Toto by bolo pekné.
Chcem ale veľmi pekne poďakovať miso156. Urobil presne to, čo som od tohto fóra očakával. Vložil sem svoj program upravený pre mňa. Dokonca je to pekne jednoducho popísané, takže som hneď pochopil tie povely. Upravil som si už čas a funguje to pekne. Má to nejaké mušky (citlivosť tlačítka a blikanie počas stlačenia) ale pre moje použitie je to úplne fantastické. Ďakujem ešte raz. Páči sa mi tento prístup k nám nováčikom.
Ďakujem Vám všetkým a prajem pekný deň (vyriešené )
peterple ak si videl že maskrtnik01 sem dal zlý kód, prečo si ten kód neopravil, nevložil sem s milým poučením a takto by sme sa to robiť správne naučili všetci vrátane maskrtnik01 a to podstatne príjemnejším spôsobom. Ja chápem že sú tu múdrejší ľudia ako ja ale ja naozaj oceňujem snahu maskrtnik01 mi pomôcť. Za to sa mu chcem poďakovať.
peterple ďakujem za kritiku tlačítka, pravdepodobne si narážal na môj obrázok ale ja som čerpal z učenia na webe https://zschlebnice.sk/kopr/arduino.php tak potom už neviem ako zistiť čo je správne. A na druhej strane si mohol chlapsky ku komentu pribaliť tvoju presnú schému aj s odporom a povedať "takto je to správne" Aby sme to mohli používať aj my obyčajný ľudia. Toto by bolo pekné.
Chcem ale veľmi pekne poďakovať miso156. Urobil presne to, čo som od tohto fóra očakával. Vložil sem svoj program upravený pre mňa. Dokonca je to pekne jednoducho popísané, takže som hneď pochopil tie povely. Upravil som si už čas a funguje to pekne. Má to nejaké mušky (citlivosť tlačítka a blikanie počas stlačenia) ale pre moje použitie je to úplne fantastické. Ďakujem ešte raz. Páči sa mi tento prístup k nám nováčikom.
Ďakujem Vám všetkým a prajem pekný deň (vyriešené )
0
-
- Pokročilý člen
- Príspevky: 652
- Dátum registrácie: 06 Dec 2020, 11:46
- Bydlisko: Banska Stiavnica
- Vek: 39
Re: Spúštanie a vypínanie programu jedným tlačítkom
Ten debounce bol mysleny asi takto:
R1 je nizky aby si eliminoval ucinok prechodoveho odporu tlacitka.
R2 znizuje vybijaci prud kondenzatora, taktiez predlzi casovu konstantu na cca 2ms (22k x 100n) co je vhodne, kedze bezne tlacitka zakmitavaju okolo 20ms, menej kvalitne aj okolo 50ms.
R1 je nizky aby si eliminoval ucinok prechodoveho odporu tlacitka.
R2 znizuje vybijaci prud kondenzatora, taktiez predlzi casovu konstantu na cca 2ms (22k x 100n) co je vhodne, kedze bezne tlacitka zakmitavaju okolo 20ms, menej kvalitne aj okolo 50ms.
0
"No pain, no gain." (KC238)
-
- Ultimate člen
- Príspevky: 2587
- Dátum registrácie: 20 Júl 2010, 00:00
- Bydlisko: okolie KE
- Vek: 27
Re: Spúštanie a vypínanie programu jedným tlačítkom
Chcel by som to trošku ukľudniť. Od peterple som dostal zaslúžene. Bohužial správne ošetrenie pretečenia už nie je úplne moja doména.
Či je to v tomto konkrétnom prípade pruser závisí od toho, ako dlho bude arduino zapnuté. 47 dní(aj niečo) sa nebude diať nič, potom príde problém. Po resete zase 47 dní kľud.
Tým kódom som ale aj tak chcel poukázať na inú vec. Delay nie je až taká milá pomoc ako by sa zdalo. Keď dáte delayom čakať 15 minút, 15 minút sa nič nemôže diať. Žiadne predčasné ukončenie, dokonca ani zobrazenie ostávajúceho času na displayi.
Preto lepší prístup je ako bol demonštrovaný na obidvoch ukážkach kódu - millis. Dĺžka jedného behu loop() sa zminimalizuje, a je možné kvazi-paralelne vykonávať viac vecí.
Či je to v tomto konkrétnom prípade pruser závisí od toho, ako dlho bude arduino zapnuté. 47 dní(aj niečo) sa nebude diať nič, potom príde problém. Po resete zase 47 dní kľud.
Tým kódom som ale aj tak chcel poukázať na inú vec. Delay nie je až taká milá pomoc ako by sa zdalo. Keď dáte delayom čakať 15 minút, 15 minút sa nič nemôže diať. Žiadne predčasné ukončenie, dokonca ani zobrazenie ostávajúceho času na displayi.
Preto lepší prístup je ako bol demonštrovaný na obidvoch ukážkach kódu - millis. Dĺžka jedného behu loop() sa zminimalizuje, a je možné kvazi-paralelne vykonávať viac vecí.
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Spúštanie a vypínanie programu jedným tlačítkom
maskrtnik01:
Aký máš s tým problém? Jediná vec je že musíš robiť rozdiel a porovnávať tú časovú differenciu. Tá sa vypočíta správne aj keď je aktuálny čas pretečený a odpamätaný je ešte pred pretečením. Treba si to predstaviť tak že sa nepohybuješ po číselnej osi po priamke ale vlastne v kruhu. To je jediná zmena. Už som tu (SvetElektro) niekoľkokrát na to upozorňoval a dával odkaz kde to vysvetľujem, ale je to marný, je to marný, je to marný.
martinhudak:
Mojim cieľom bolo poukázať na bludy ktoré sa tu šíria. Na tej stránke ZŠ a MŠ na to jaksi nemá kto a ako upozorniť. Ono riadiť sa a argumentovať podľa agentúry JPP (jedna pani povedala), nie je dvakrát moc múdre. Inak klobúk dole pred učiteľom na tej škole. Schémy pekne nakreslené v eagle, žiadne omaľovávanky arduinistov alebo paintbrush ako často tu v iných vláknach.
Tá kritika je pre teba a ďalších aby vedeli že tieto riešenia obsahujú čertovo kopýtko. Alebo si myslíš že je v poriadku že vznikla ďalšia stránka ktorá šíry hlúposti?
A že som neporadil? Si si istý? Skúšal si kód z bodu 3?
Ešte taká malá podotázka. Viete prečo si na AVR možete dovoliť ten kondenzátor na digitálny vstup pripojiť? Vďaka čomu? Je to možné pripojiť na hocijaký MCU?
Aký máš s tým problém? Jediná vec je že musíš robiť rozdiel a porovnávať tú časovú differenciu. Tá sa vypočíta správne aj keď je aktuálny čas pretečený a odpamätaný je ešte pred pretečením. Treba si to predstaviť tak že sa nepohybuješ po číselnej osi po priamke ale vlastne v kruhu. To je jediná zmena. Už som tu (SvetElektro) niekoľkokrát na to upozorňoval a dával odkaz kde to vysvetľujem, ale je to marný, je to marný, je to marný.
martinhudak:
Mojim cieľom bolo poukázať na bludy ktoré sa tu šíria. Na tej stránke ZŠ a MŠ na to jaksi nemá kto a ako upozorniť. Ono riadiť sa a argumentovať podľa agentúry JPP (jedna pani povedala), nie je dvakrát moc múdre. Inak klobúk dole pred učiteľom na tej škole. Schémy pekne nakreslené v eagle, žiadne omaľovávanky arduinistov alebo paintbrush ako často tu v iných vláknach.
Tá kritika je pre teba a ďalších aby vedeli že tieto riešenia obsahujú čertovo kopýtko. Alebo si myslíš že je v poriadku že vznikla ďalšia stránka ktorá šíry hlúposti?
A že som neporadil? Si si istý? Skúšal si kód z bodu 3?
Nerobí to čo si požadoval? Keby si si ho prečítal a pochopil tak by si vedel že žiadne hw odstraňovanie zákmitov nepotrebuje. Tak načo by som kreslil nejaké schémy ktoré nie sú vôbec treba. Zbytočne niekam trepať externé súčiastky (až 3 aby to bolo OK).martinhudak napísal: ↑11 Okt 2021, 08:41Jedným stačením program spustím, druhým stlačením program ukončím.
Ešte taká malá podotázka. Viete prečo si na AVR možete dovoliť ten kondenzátor na digitálny vstup pripojiť? Vďaka čomu? Je to možné pripojiť na hocijaký MCU?
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 4 Odpovedí
- 1283 Zobrazení
-
Posledný príspevok od používateľa lucky62