6x nezávislý časovač v Arduinu nano
6x nezávislý časovač v Arduinu nano
Ahoj,
pouštím se do druhého projektu a bez vaší pomoci to nedám
Potřebuji do "nana" naprogramovat 6 na sobě nezávislých časovačů.
Vstupy a výstupy aktivní na GND.
Vstup D0 a jeho výstup D1, další časovač vstup D2 a jeho výstup D3 atd.
Všechny budou mít reakci na náběžnou hranu na GND a časování se ukončí i když nestihl doběhnout čas ukončením aktivace vstupu.
Po aktivaci časovače na náběžnou hranu na GND výstup nebude nic dělat, jen se spustí příslušný odpočet. Po dočasování sepne výstup na GND a tam zůstane až do ukončení aktivace vstupu.
1, Zpožděný rozběh 4m30s
2, Zpožděný rozběh 30s
3,Zpožděný rozběh 10m35s
Po aktivaci časovačena náběžnou hranou výstup nebude nic dělat, jen se spustí příslušný odpočet. Po dočasování sepne výstup na GND jen na 1s. Další odpočet se spustí až po uvolnění vstupu a opětovné aktivaci.
4, Zpožděný rozběh 30s
5, Zpožděný rozběh 5m25s
Po aktivaci časovače na náběžnou hranou výstup nebude nic dělat, jen se spustí příslušný odpočet. Po dočasování sepne výstup na GND na 1s, po 30s opět výstup na 1s a to do doby ukončení aktivace vstupu.
6, Asymetrický cyklovač začínající mezerou 30s/1s.
Ještě drobnost, jdou v programu dát časy do hlavičky na jedno místo? Možná bude nutné časy upravit až to spustím, děkuji.
Můj mladej (19 let) - prej to nejde:(
Já věřím, že to jde. Pomůžete mi s tím někdo?
Děkuji.
RR
pouštím se do druhého projektu a bez vaší pomoci to nedám
Potřebuji do "nana" naprogramovat 6 na sobě nezávislých časovačů.
Vstupy a výstupy aktivní na GND.
Vstup D0 a jeho výstup D1, další časovač vstup D2 a jeho výstup D3 atd.
Všechny budou mít reakci na náběžnou hranu na GND a časování se ukončí i když nestihl doběhnout čas ukončením aktivace vstupu.
Po aktivaci časovače na náběžnou hranu na GND výstup nebude nic dělat, jen se spustí příslušný odpočet. Po dočasování sepne výstup na GND a tam zůstane až do ukončení aktivace vstupu.
1, Zpožděný rozběh 4m30s
2, Zpožděný rozběh 30s
3,Zpožděný rozběh 10m35s
Po aktivaci časovačena náběžnou hranou výstup nebude nic dělat, jen se spustí příslušný odpočet. Po dočasování sepne výstup na GND jen na 1s. Další odpočet se spustí až po uvolnění vstupu a opětovné aktivaci.
4, Zpožděný rozběh 30s
5, Zpožděný rozběh 5m25s
Po aktivaci časovače na náběžnou hranou výstup nebude nic dělat, jen se spustí příslušný odpočet. Po dočasování sepne výstup na GND na 1s, po 30s opět výstup na 1s a to do doby ukončení aktivace vstupu.
6, Asymetrický cyklovač začínající mezerou 30s/1s.
Ještě drobnost, jdou v programu dát časy do hlavičky na jedno místo? Možná bude nutné časy upravit až to spustím, děkuji.
Můj mladej (19 let) - prej to nejde:(
Já věřím, že to jde. Pomůžete mi s tím někdo?
Děkuji.
RR
První velkou akci jsem zvládl už v 8 letech. Vyrazil jsem hlavni jistič pro panelák.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
Re: 6x nezávislý časovač v Arduinu nano
Jestli se nepletu, tak D0 a D1 jsou serial a krome problemu s ladenim ti to i zkomplikuje zivot s nahravanim programu.
Casovacu jako takovych ma nano tusim tak 3, ale to se da snadno obejit (kdyz ti bezi na 16MHz, tak pruchod loop() trva z lidskeho pohledu zanedbatelne kratko). Zvlast pokud ty hrany budes brat z tlacitek, co nekdo macka
Do hlavicky to snadno das pomoci nebo jako promenne ci konstanty.
Zakladni myslenka (pisu z hlavy a nepresne)
Casovacu jako takovych ma nano tusim tak 3, ale to se da snadno obejit (kdyz ti bezi na 16MHz, tak pruchod loop() trva z lidskeho pohledu zanedbatelne kratko). Zvlast pokud ty hrany budes brat z tlacitek, co nekdo macka
Do hlavicky to snadno das pomoci
Kód: Vybrat vše
#define
Zakladni myslenka (pisu z hlavy a nepresne)
Kód: Vybrat vše
int vstupy[6]={2,4,6,8,10,12}; // D2, D4, ...
int vystupy[6]={3,5,7,9,11,13}; // D3, D5 ....
int posledni_stav[6]={1,1,1,1,1,1}; // vsechno je na zacatku HIGH
bool aktivovan[6]={false,false,false,false,false,false}; // na zacatku neni nic aktivni
bool deaktivovan[6]= {true,true,true,true,true,true}; // nejsme aktivni
unsigned long int posledni_zmena_v[6] = {0,0,0,0,0,0}; // cas posledniho sepnuti
unsigned long int zpozdeni[6]={(4*60+30)*1000,30*1000,(10*60+35)*1000,30*1000,(5*60+25)*1000,30*1000}; // tady jsou ty casy
void setup(){
for (int i =0 i<6;++i) {
pinMode(vstupy[i],INPUT_PULLUP);
pinMode(vystupy[i],OUTPUT);
digitalWrite(vystupy[i],HIGH); // zaciname s vystupy nahore
};
};
void loop() {
for (int i =0 i<6;++i) {
if (digitalRead(vstupy[i]) == LOW) {
if (posledni_stav[i]==1) {
// presli jsme do nuly, zacneme odpocet
posledni_stav[i]=0;
posledni_zmena_v[i]=millis();
aktivovan[i]=false; // nase chvile jeste neprisla
deaktivovan[i]=false; // natoz aby skoncila
} else { // posledni stav ==0
// uz v nule jsme, nemame se aktivovat?
// https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
unsigned long currentMillis = millis();
if (! aktivovan[i] && ! deaktivovan[i]) {
if (currentMillis - posledni_zmena_v[i] >= zpozdeni[i]) {
// uz jsme cekali dost dlouho, aktivujme se
digitalWrite(vystup[i],LOW);
aktivovan[i]=true;
posledni_zmena_v[i]=millis();
};
} else if (aktivovan[i] && ! deaktivovan[i]) {
// uz jsme mozna aktivni dost dlouho
if (currentMillis - posledni_zmena_v[i] >= 1000) {
// utekla sekunda, deaktivujme se
digitalWrite(vystup[i],HIGH);
deaktivovan[i]=true;
};
};
};
} else { //digitalRead(vstupy[i]) == HIGH
if (posledni_stav[i]==0) { // nasilne se deaktivujeme a rusime casovani
posledni_stav[i]=1;
aktivovan[i]=false;
deaktivovan[i]=true;
digitalWrite(vystup[i],HIGH);
};
}; // konec for cyklu
}; // konec loop
Re: 6x nezávislý časovač v Arduinu nano
Ahoj,
jasně tak od D2 v pohodě,ano vstup je z kontaktu, taková přesnost není třeba.
Jen to nemůžu nahrát
Okopírované chybové zprávy.
Napíše to:
Arduino: 1.8.6 Hourly Build 2018/01/03 03:33 (Windows 10), Vývojová deska: "Arduino Nano, ATmega168"
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:41: warning: integer overflow in expression [-Woverflow]
unsigned long int zpozdeni[6]={(4*60+30)*1000,30*1000,(10*60+35)*1000,30*1000,(5*60+25)*1000,30*1000}; // tady jsou ty casy
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:65: warning: integer overflow in expression [-Woverflow]
unsigned long int zpozdeni[6]={(4*60+30)*1000,30*1000,(10*60+35)*1000,30*1000,(5*60+25)*1000,30*1000}; // tady jsou ty casy
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:88: warning: integer overflow in expression [-Woverflow]
unsigned long int zpozdeni[6]={(4*60+30)*1000,30*1000,(10*60+35)*1000,30*1000,(5*60+25)*1000,30*1000}; // tady jsou ty casy
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:101: warning: narrowing conversion of '7856' from 'int' to 'long unsigned int' inside { } [-Wnarrowing]
unsigned long int zpozdeni[6]={(4*60+30)*1000,30*1000,(10*60+35)*1000,30*1000,(5*60+25)*1000,30*1000}; // tady jsou ty casy
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:101: warning: narrowing conversion of '-20360' from 'int' to 'long unsigned int' inside { } [-Wnarrowing]
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:101: warning: narrowing conversion of '-2680' from 'int' to 'long unsigned int' inside { } [-Wnarrowing]
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino: In function 'void setup()':
sketch_apr11a:10: error: expected ';' before 'i'
for (int i =0 i<6;++i) {
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino: In function 'void loop()':
sketch_apr11a:18: error: expected ';' before 'i'
for (int i =0 i<6;++i) {
^
sketch_apr11a:33: error: 'vystup' was not declared in this scope
digitalWrite(vystup,LOW);
^
sketch_apr11a:41: error: 'vystup' was not declared in this scope
digitalWrite(vystup,HIGH);
^
sketch_apr11a:51: error: 'vystup' was not declared in this scope
digitalWrite(vystup,HIGH);
^
sketch_apr11a:54: error: expected '}' at end of input
}; // konec loop
^
exit status 1
expected ';' before 'i'
Nalezena neplatná knihovna v C:\Users\spravce\Documents\Arduino\libraries\sketch_feb21a: C:\Users\spravce\Documents\Arduino\libraries\sketch_feb21a
Nalezena neplatná knihovna v C:\Users\spravce\Documents\Arduino\libraries\sketch_feb21a: C:\Users\spravce\Documents\Arduino\libraries\sketch_feb21a
Táto zpráva by měla mít víc informacií v
"Zobrazení podrobného výstupu při kompilaci"
podle zapnuté volby v Soubor -> Nastavení.
jasně tak od D2 v pohodě,ano vstup je z kontaktu, taková přesnost není třeba.
Jen to nemůžu nahrát
Okopírované chybové zprávy.
Napíše to:
Arduino: 1.8.6 Hourly Build 2018/01/03 03:33 (Windows 10), Vývojová deska: "Arduino Nano, ATmega168"
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:41: warning: integer overflow in expression [-Woverflow]
unsigned long int zpozdeni[6]={(4*60+30)*1000,30*1000,(10*60+35)*1000,30*1000,(5*60+25)*1000,30*1000}; // tady jsou ty casy
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:65: warning: integer overflow in expression [-Woverflow]
unsigned long int zpozdeni[6]={(4*60+30)*1000,30*1000,(10*60+35)*1000,30*1000,(5*60+25)*1000,30*1000}; // tady jsou ty casy
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:88: warning: integer overflow in expression [-Woverflow]
unsigned long int zpozdeni[6]={(4*60+30)*1000,30*1000,(10*60+35)*1000,30*1000,(5*60+25)*1000,30*1000}; // tady jsou ty casy
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:101: warning: narrowing conversion of '7856' from 'int' to 'long unsigned int' inside { } [-Wnarrowing]
unsigned long int zpozdeni[6]={(4*60+30)*1000,30*1000,(10*60+35)*1000,30*1000,(5*60+25)*1000,30*1000}; // tady jsou ty casy
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:101: warning: narrowing conversion of '-20360' from 'int' to 'long unsigned int' inside { } [-Wnarrowing]
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino:7:101: warning: narrowing conversion of '-2680' from 'int' to 'long unsigned int' inside { } [-Wnarrowing]
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino: In function 'void setup()':
sketch_apr11a:10: error: expected ';' before 'i'
for (int i =0 i<6;++i) {
^
C:\Users\spravce\Documents\Arduino\sketch_apr11a\sketch_apr11a.ino: In function 'void loop()':
sketch_apr11a:18: error: expected ';' before 'i'
for (int i =0 i<6;++i) {
^
sketch_apr11a:33: error: 'vystup' was not declared in this scope
digitalWrite(vystup,LOW);
^
sketch_apr11a:41: error: 'vystup' was not declared in this scope
digitalWrite(vystup,HIGH);
^
sketch_apr11a:51: error: 'vystup' was not declared in this scope
digitalWrite(vystup,HIGH);
^
sketch_apr11a:54: error: expected '}' at end of input
}; // konec loop
^
exit status 1
expected ';' before 'i'
Nalezena neplatná knihovna v C:\Users\spravce\Documents\Arduino\libraries\sketch_feb21a: C:\Users\spravce\Documents\Arduino\libraries\sketch_feb21a
Nalezena neplatná knihovna v C:\Users\spravce\Documents\Arduino\libraries\sketch_feb21a: C:\Users\spravce\Documents\Arduino\libraries\sketch_feb21a
Táto zpráva by měla mít víc informacií v
"Zobrazení podrobného výstupu při kompilaci"
podle zapnuté volby v Soubor -> Nastavení.
První velkou akci jsem zvládl už v 8 letech. Vyrazil jsem hlavni jistič pro panelák.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
- SkullKeep
- Příspěvky: 290
- Registrován: 23 srp 2017, 18:51
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: 6x nezávislý časovač v Arduinu nano
Bylo tam pár drobných chyb, ale ty jsem opravil.
toto by se mělo dát nahrát.
Kód: Vybrat vše
int vstupy[6] = {2, 4, 6, 8, 10, 12}; // D2, D4, ...
int vystupy[6] = {3, 5, 7, 9, 11, 13}; // D3, D5 ....
int posledni_stav[6] = {1, 1, 1, 1, 1, 1}; // vsechno je na zacatku HIGH
bool aktivovan[6] = {false, false, false, false, false, false}; // na zacatku neni nic aktivni
bool deaktivovan[6] = {true, true, true, true, true, true}; // nejsme aktivni
unsigned long int posledni_zmena_v[6] = {0, 0, 0, 0, 0, 0}; // cas posledniho sepnuti
unsigned long int zpozdeni[6] = {(4 * 60 + 30) * 1000, 30 * 1000, (10 * 60 + 35) * 1000, 30 * 1000, (5 * 60 + 25) * 1000, 30 * 1000}; // tady jsou ty casy
void setup() {
for (int i = 0; i < 6; ++i) {
pinMode(vstupy[i], INPUT_PULLUP);
pinMode(vystupy[i], OUTPUT);
digitalWrite(vystupy[i], HIGH); // zaciname s vystupy nahore
}
}
void loop() {
for (int i = 0; i < 6; ++i) {
if (digitalRead(vstupy[i]) == LOW) {
if (posledni_stav[i] == 1) {
// presli jsme do nuly, zacneme odpocet
posledni_stav[i] = 0;
posledni_zmena_v[i] = millis();
aktivovan[i] = false; // nase chvile jeste neprisla
deaktivovan[i] = false; // natoz aby skoncila
} else { // posledni stav ==0
// uz v nule jsme, nemame se aktivovat?
// https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
unsigned long currentMillis = millis();
if (! aktivovan[i] && ! deaktivovan[i]) {
if (currentMillis - posledni_zmena_v[i] >= zpozdeni[i]) {
// uz jsme cekali dost dlouho, aktivujme se
digitalWrite(vystupy[i], LOW);
aktivovan[i] = true;
posledni_zmena_v[i] = millis();
}
} else if (aktivovan[i] && ! deaktivovan[i]) {
// uz jsme mozna aktivni dost dlouho
if (currentMillis - posledni_zmena_v[i] >= 1000) {
// utekla sekunda, deaktivujme se
digitalWrite(vystupy[i], HIGH);
deaktivovan[i] = true;
}
}
}
} else { //digitalRead(vstupy[i]) == HIGH
if (posledni_stav[i] == 0) { // nasilne se deaktivujeme a rusime casovani
posledni_stav[i] = 1;
aktivovan[i] = false;
deaktivovan[i] = true;
digitalWrite(vystupy[i], HIGH);
}
}// konec for cyklu
} // konec loop
}
P. Q. M.
Re: 6x nezávislý časovač v Arduinu nano
integer overflow - ty vypocty casu asi dela v int a potreboval by je v long int , takze prepsat casy treba do tvaru
opravit preklepy, jako je chybejici strednik ve
a vsechny maji samozrejme byt
Jak rikam, psal jsem to z hlavy spis jako ukazku, jakym smerem uvazovat (cili pomoc jak zacit, nikoli hotove reseni)
Kód: Vybrat vše
unsigned long int zpozdeni[6]={(unsigned long int)1000*(4*60+30),(unsigned long int)1000*30,...
Kód: Vybrat vše
for (int i =0; i<6;++i) {
Kód: Vybrat vše
digitalWrite(vystup,
Kód: Vybrat vše
digitalWrite(vystupy[i],
Re: 6x nezávislý časovač v Arduinu nano
Děkuji za ochotu,
jsem bohužel jen spotřebitel mám nulovou praxi. Dokážu to jen do Arduina nahrát. Můj mladej až se vrátí z dnešní maturity zkoušky tak ho seřežu že se líp neučil. Protože jsem blbej, rád za hotovou práci zaplatím.
Děkuji moc.
RR
jsem bohužel jen spotřebitel mám nulovou praxi. Dokážu to jen do Arduina nahrát. Můj mladej až se vrátí z dnešní maturity zkoušky tak ho seřežu že se líp neučil. Protože jsem blbej, rád za hotovou práci zaplatím.
Děkuji moc.
RR
První velkou akci jsem zvládl už v 8 letech. Vyrazil jsem hlavni jistič pro panelák.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
Re: 6x nezávislý časovač v Arduinu nano
Nerez ho moc, ta moje kostra bude potrebovat jeste dodelat
Re: 6x nezávislý časovač v Arduinu nano
Tak nic
Kokam, ze to fakt nejde!
Mladej mel holt pravdu......
Dik a at se dari....
RR
Kokam, ze to fakt nejde!
Mladej mel holt pravdu......
Dik a at se dari....
RR
První velkou akci jsem zvládl už v 8 letech. Vyrazil jsem hlavni jistič pro panelák.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
Re: 6x nezávislý časovač v Arduinu nano
Zdravím.
Jestli to ještě chcete vytvořit, tak bych měl dotaz k zadání.
Tyhle dvě věty se podle mne vylučují:
"... Vstupy a výstupy aktivní na GND ..."
"... Všechny budou mít reakci na náběžnou hranu na GND..."
Tak jak to je?
V klidu jsou všechny vstupní piny v LOW a čítače se aktivují náběžnou hranou, nebo jsou vstupní piny normálně v HIGH a čítače se aktivují sepnutím na GND?
Jestli to ještě chcete vytvořit, tak bych měl dotaz k zadání.
Tyhle dvě věty se podle mne vylučují:
"... Vstupy a výstupy aktivní na GND ..."
"... Všechny budou mít reakci na náběžnou hranu na GND..."
Tak jak to je?
V klidu jsou všechny vstupní piny v LOW a čítače se aktivují náběžnou hranou, nebo jsou vstupní piny normálně v HIGH a čítače se aktivují sepnutím na GND?
Re: 6x nezávislý časovač v Arduinu nano
Ahoj,
je to stejne jako posledni projekt. Jak dam na vstup GND tak se to spusti. Vystupy jsou v klidu high, po skoncenem odpoctu na low(GND).
Moooc ti dekuji.
RR
je to stejne jako posledni projekt. Jak dam na vstup GND tak se to spusti. Vystupy jsou v klidu high, po skoncenem odpoctu na low(GND).
Moooc ti dekuji.
RR
První velkou akci jsem zvládl už v 8 letech. Vyrazil jsem hlavni jistič pro panelák.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
Životní moudro: Ještě se nestalo, aby to nějak nedopadlo.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů