arduino milis
Moderátori: psichac, Moderátori
arduino milis
Ahoj.Potrebujem vytvorit programik,ktory po stlaceni tlacitka rosvieti LED,ale ta bude svietit este urcity cas aj po uvolneni tlacitka.Skusam to cez DELAY,sice to funguje,ale tlacitko musim drzat kym neprebehne loop delay.Skusam to teda cez MILIS,ale to mi uz vobec nefunguje.Upozornujem ze som ABSOLUTNY zaciatocnik v programovani.Najde sa niekto,kto mi napise priklad takehoto prog.DIK.
0
Re: arduino milis
najjednoduchsi "algoritmus" skus takyto, nema tam co neist:
Kód: Vybrať všetko
void loop() {
while (digitalRead(pin_tlacidla) == HIGH); // cakame pokym je tlacidlo rozpojene
digitalWrite(pin_ledky, HIGH); // zapneme ledku
delay(2000); // cakame 2 sekundy
digitalWrite(pin_ledky, LOW); // vypneme ledku
}
0
Re: arduino milis
Dakujem.tak som to odskusal...Ledka sa sice zapne,ale uz sa nevypne...Zacinam mat pocit ze to je chyba hardwaru
Pardon,mal som tam preklep.Ide to..
Pardon,mal som tam preklep.Ide to..
0
Re: arduino milis
tak skus to pretestovat tak, ze vyhodis ten riadok s tlacidlom a spravis si blikac:
a samozrejme predpokladam ze si nezabudol na setup:
Kód: Vybrať všetko
void loop() {
digitalWrite(pin_ledky, HIGH); // zapneme ledku
delay(1000); // cakame sekundu
digitalWrite(pin_ledky, LOW); // vypneme ledku
delay(1000); // cakame sekundu
}
Kód: Vybrať všetko
void setup() {
pinMode(pin_ledky, OUTPUT); // pin ledky ako vystup
pinMode(pin_tlacidla, INPUT_PULLUP); // vstup so zapnutym pullup rezistorom
// tlacidlo mame zapojene medzi pinom a zemou
}
0
Re: arduino milis
Akurat to ma jeden hacik.Potrebujem aby ZAKAŽDYM ked tlacitko stlacim,ledka sa rozsvietila a cyklus zacal odznova.To pojde podla mojho nazoru cez funkciu MILIS.Da mi niekto priklad?
0
Re: arduino milis
V první řadě nepoužívej Delay(); tímto způsobem se to nedělá.Nastav si timer a při přerušení inkrementuj proměnou.Až bude mít požadovanou hodnotu tak zapni led.Při stisku tlačítka vynuluj proměnnou i timer (aby to začalo čítat od začátku).Je třeba ošetřit to,jestli je třeba aby to začalo čítat hned po stisku,nebo až se pustí tlačítko.
0
Naposledy upravil/-a Sender v 13 Aug 2014, 19:33, upravené celkom 1 krát.
- dxr
- Ultimate člen
- Príspevky: 3968
- Dátum registrácie: 05 Aug 2013, 20:21
- Bydlisko: V strede nicoho
- Kontaktovať používateľa:
Re: arduino milis
Pozri si toto
http://playground.arduino.cc/Code/Bounce alebo novsi Bounce2
to je presne libka urcena na obsluhu tlacitiek vyssi level je to robit cez ISR/prerusenie
je na tebe co pouzijes.Alebo celkom pekny clanok urceny pre Arduino zaciatocnikov
Mas tam aj kratke/dlhe stlacenie jedneho tlacitka.
http://playground.arduino.cc/Code/Bounce alebo novsi Bounce2
to je presne libka urcena na obsluhu tlacitiek vyssi level je to robit cez ISR/prerusenie
je na tebe co pouzijes.Alebo celkom pekny clanok urceny pre Arduino zaciatocnikov
Mas tam aj kratke/dlhe stlacenie jedneho tlacitka.
0
Re: arduino milis
nestačilo by to takto? a da sa na to pouzit aj delay(); , len je to kusok dlhsie no :/
Kód: Vybrať všetko
#define LED 13 // napr
#define TLACIDLO 12 //napr
boolean stlacene = false;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(TLACIDLO, INPUT);
}
void loop()
{
if(digitalRead(TLACIDLO) == HIGH){
stlacene = true;
}
while(stlacene == true){
digitalWrite(LED, HIGH);
delay(2000); //svieti este 2 sekundy a potom sa vypne
digitalWrite(LED, LOW);
stlacene = false;
}
}
0
Vľavo fáza, vpravo nulák. Kto to nevie, ten je hlupák )
- dxr
- Ultimate člen
- Príspevky: 3968
- Dátum registrácie: 05 Aug 2013, 20:21
- Bydlisko: V strede nicoho
- Kontaktovať používateľa:
Re: arduino milis
V idealnom pripade ano ale mas na tlacitku zakmity (cize ked stlacis) hned potom tam mas LOW
Premyslam preco tam mas while stlacene preco nie if (stlacene == HIGH) ked to vtom bloku negujes.
Tym padom to zbehne vzdy prave raz cize kludne ten IF.....
preto sa vsade riesi debouncing cize mozes zakmitat aj viac krat ale tlacitko je zopnute az ked je drzane dlhsie.
a to riesi SW v MCU alebo hardverovo.
Okrem toho ak by si to mal takto takto a pre viac tlacitok ten kod ma v Arduino IDE viac ako vyska okna
a zle sa to cita preto lepsie pouzit kniznice zprehladni sa to.
Nehovoriac ze to co som pastol asi funguje lebo sa dlhsie neozyva alebo to inak vyriesil
a ten debounce vie aj rozlisit ako bolo tlacitko stlacene. co nieje naskodu pre niektore druhy projektov.
Premyslam preco tam mas while stlacene preco nie if (stlacene == HIGH) ked to vtom bloku negujes.
Tym padom to zbehne vzdy prave raz cize kludne ten IF.....
preto sa vsade riesi debouncing cize mozes zakmitat aj viac krat ale tlacitko je zopnute az ked je drzane dlhsie.
a to riesi SW v MCU alebo hardverovo.
Okrem toho ak by si to mal takto takto a pre viac tlacitok ten kod ma v Arduino IDE viac ako vyska okna
a zle sa to cita preto lepsie pouzit kniznice zprehladni sa to.
Nehovoriac ze to co som pastol asi funguje lebo sa dlhsie neozyva alebo to inak vyriesil
a ten debounce vie aj rozlisit ako bolo tlacitko stlacene. co nieje naskodu pre niektore druhy projektov.
0
Re: arduino milis
caute, ked uz ste pri tych casovacoch...potrebujem spravit dve funkcie a dako si nad tym lamem hlavu som v zaciatkoch takze trosku strpenia
1. potrebujem nieco take ze nejaka funkcia sa vykona len ked bude vstup aktivovany napr 2x a to do urciteho casu napr pol sekundy...takze ked sa aktivuje vstup raz a po pol sekunde druhy krat uz sa nic neudeje...
2. potrebujem zasa nieco take ze ked podrzim zapnuty vstup napr 2 sekundy zapne sa nejaky vystup na dobu pokial je zopnuty vstup, ak sa vstup vypne vypina sa aj vystup..ak sa vstup vypne za menej ako dve sekundy tak sa nic nestane....toto by sa dalo spravit jednoducho cez casove rele ktore sa predava uz hotove ale radsej by som bol keby to slo priamo cez arduino
rozmyslal som ako na to cez milis ale na nic som neprisiel takze to asi nebude ta spravna cesta...skor by som bral keby sa dalo spravit nieco takeho ze ak sa zopne vstup zapne sa nejaky casovac ktoreho cas potom porovnam
dik
1. potrebujem nieco take ze nejaka funkcia sa vykona len ked bude vstup aktivovany napr 2x a to do urciteho casu napr pol sekundy...takze ked sa aktivuje vstup raz a po pol sekunde druhy krat uz sa nic neudeje...
2. potrebujem zasa nieco take ze ked podrzim zapnuty vstup napr 2 sekundy zapne sa nejaky vystup na dobu pokial je zopnuty vstup, ak sa vstup vypne vypina sa aj vystup..ak sa vstup vypne za menej ako dve sekundy tak sa nic nestane....toto by sa dalo spravit jednoducho cez casove rele ktore sa predava uz hotove ale radsej by som bol keby to slo priamo cez arduino
rozmyslal som ako na to cez milis ale na nic som neprisiel takze to asi nebude ta spravna cesta...skor by som bral keby sa dalo spravit nieco takeho ze ak sa zopne vstup zapne sa nejaky casovac ktoreho cas potom porovnam
dik
0
- dxr
- Ultimate člen
- Príspevky: 3968
- Dátum registrácie: 05 Aug 2013, 20:21
- Bydlisko: V strede nicoho
- Kontaktovať používateľa:
Re: arduino milis
2) tlacitko podrzane dlhsie ako 2sek alebo PUSH_LIMIT sa da robit X sposobmi
jeden je v loop() a dalsi je ze mas attachinterrupt() timer proste pozeras ci je vstup _AKTIV_
ked je aktivny zvysis/zniziz citac
Tomu pripadu 1 sa dostanem ked mi bude lepsie lezim a je mi ble..
je na tebe ci chces loop() a v slucke pozerat alebo to spravis casovacom v interrupte ono je to lepsie nebude tak zasraty ten loop()
a zalezi ci ten loop je blokovany nejakym dlhsim kodom alebo ne prerusenie nebude nijak ovplyvnovat ak budes pouzivat delay()
kedze pises pre arduino by som to osobne zabalil do classy nech sa pure C/ASM MCUckari
bude sa ti to lepsie citat a budes to vediet lahsie presuvat medzi projektami
jeden je v loop() a dalsi je ze mas attachinterrupt() timer proste pozeras ci je vstup _AKTIV_
ked je aktivny zvysis/zniziz citac
potom ked uvolnis vtup cize vstup je dolu pozrestlacitko.counter1++
Kód: Vybrať všetko
if (tlacitko.counter1 > PUSH_LIMIT) tlacitko_akcia() + tlacitko.counter1=0;
else tlacitko.counter1=0;
je na tebe ci chces loop() a v slucke pozerat alebo to spravis casovacom v interrupte ono je to lepsie nebude tak zasraty ten loop()
a zalezi ci ten loop je blokovany nejakym dlhsim kodom alebo ne prerusenie nebude nijak ovplyvnovat ak budes pouzivat delay()
kedze pises pre arduino by som to osobne zabalil do classy nech sa pure C/ASM MCUckari
bude sa ti to lepsie citat a budes to vediet lahsie presuvat medzi projektami
0
Naposledy upravil/-a dxr v 10 Aug 2014, 15:03, upravené celkom 1 krát.
Re: arduino milis
dik skusim sa na to mrknut
este som teraz nasiel funkciu pulseIn cez to by to tiez mohlo fungovat
este som teraz nasiel funkciu pulseIn cez to by to tiez mohlo fungovat
0
- dxr
- Ultimate člen
- Príspevky: 3968
- Dátum registrácie: 05 Aug 2013, 20:21
- Bydlisko: V strede nicoho
- Kontaktovať používateľa:
Re: arduino milis
pulse in meria periodu a je ich viac pokial viem na tvoj problem sa to mozno da pouzit
ale nieje to na to urcene je to na to ked merias otacky si uvedom ze ty mas jednu periodu cez 2 sek tam to asi havaruje
si pozri kolko je minimalna meratelna freq inak ti to crashne.
-- Spojený príspevok 10 Aug 2014, 15:07 --
Skor si pozri nejaky long press button toto hladaj button je totiz vstup takze ak chces pouzit nieco hotove
je to prave toto.
ale nieje to na to urcene je to na to ked merias otacky si uvedom ze ty mas jednu periodu cez 2 sek tam to asi havaruje
si pozri kolko je minimalna meratelna freq inak ti to crashne.
-- Spojený príspevok 10 Aug 2014, 15:07 --
Skor si pozri nejaky long press button toto hladaj button je totiz vstup takze ak chces pouzit nieco hotove
je to prave toto.
0
Re: arduino milis
ja som to zatial urobil cez delay,samozrejme nie je to idealne,ale cez milis mi to neslo,tak budem rad ak toto vlakno bude pokracovat...
0
Re: arduino milis
vyzera ze uz to mam, pomohlo mi toto
http://jmsarduino.blogspot.sk/2009/05/c ... for-b.html
musim to este doladit ale snad to pojde
http://jmsarduino.blogspot.sk/2009/05/c ... for-b.html
musim to este doladit ale snad to pojde
0
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 4 Odpovedí
- 1060 Zobrazení
-
Posledný príspevok od používateľa lucky62
-
- 20 Odpovedí
- 1113 Zobrazení
-
Posledný príspevok od používateľa jankrizan
-
- 11 Odpovedí
- 1787 Zobrazení
-
Posledný príspevok od používateľa mirosne
-
- 10 Odpovedí
- 687 Zobrazení
-
Posledný príspevok od používateľa budvar10
-
- 3 Odpovedí
- 4174 Zobrazení
-
Posledný príspevok od používateľa jankrizan