Zbyšek Voda
Vytvořené odpovědi
-
AutorPříspěvky
-
Zbyšek VodaSprávce
Dobrý den.
To by mělo být standardní chování Arduina.
Po odpojení a připojení napájení dojde k restartu programu, ale není potřeba ho znovu nahrávat.Zbyšek VodaSprávceDobrý den,
je to spíše ukázka, jak se dají pole deklarovat.
Ale zrovna u příkladu
char jmeno[7] = "arduino";
bych ukončovací znak nedával, protože z povahy pole víme, že bude mít 7 prvků.U
char jmeno[] = "arduino";
už bych s ukončovacím znakem váhal.
Je to ale spíše otázka toho, jakým způsobem je pole použito dále v kódu, takže bych to u tohoto příkladu neřešil..Zbyšek VodaSprávceTady je o tom celý tutoriál: http://www.arduino.cc/en/Hacking/LibraryTutorial
Zbyšek VodaSprávceJá myslím, že u těch relé je jedno, do jakých pinů je připojíte. U teploměrů závisí na tom, jakou technologii přenosu dat používají.
Zbyšek VodaSprávcePoužil bych něco na tento způsob: https://bastlirna.hwkitchen.cz/arduino-zaklady-blikani-bez-funkce-delay/
Zbyšek VodaSprávceDobrý den,
to jenom s Arduinem nepůjde. I funkce analogWrite() totiž generuje PWM signál, což je taky digitál. Umí na pinu poslat buď 0, nebo 5V. Nic mezi.
Budete tedy potřebovat nějaký HW, například odporový žebřík.
Zbyšek VodaSprávceDobrý den,
když pošlete po sériové lince například:
Serial.println(hodnotaA) Serial.println(hodnotaB)
tak zařízení, které tyto hodnoty čte nemá šanci poznat, že se jednalo ho proměnné hodnotaA a hodnotaB. Přijatá data jsou to pro něj jenom série nul a jedniček (resp. bytů).
Při sériové komunikaci se většinou postupuje tak, že za číslem vždy následuje nějaký nečíselný znak. Na tento znak čeká program přijímající data. Podle toho pozná, že už číslo přišlo celé a z přijatých bytů poté poskládá přijaté číslo.
Druhou (a jednodušší) možností je použití Serial.parseInt(). Z Arduina, které data odesílá se pošle např.
Serial.print(hodnotaA); Serial.print('a') Serial.print(hodnotaB); Serial.print('a')
Kdy na místě ‚a‘ může být libovolný nečíselný znak.
Funkce Serial.parseInt() čeká, dokud neobdrží nějaký nečíselný znak a po jeho přijetí poskládá číslo z bytů přijatých před ním. Tedy v programu Arduina, které data přijímá by mělo být něco jako:int hodnotaA = Serial.parseInt() int hodnotaB = Serial.parseInt()
Každopádně bych ale asi zvážil, jestli je opravdu vhodné použití sériové linky v případě, když budete mít propojeno více Arduin než dvě. Někdy to nemusí vadit, ale mohlo by to dělat problémy. Možná by bylo lepší použít sběrnici i2c. Ta umožňuje přímé adresování jednotlivých desek.
Zbyšek VodaSprávceAha. Nemyslím ale, že je to něco, čeho byste se měl obávat 🙂
Zbyšek VodaSprávceTak to nevím, co by to mohlo být. Kde to psali?
Zbyšek VodaSprávcePopravdě moc nevím, co tím „bez ISP“ myslíte.
Pokud by to bylo bez ICSP, tak by se jednalo o to, že na desce není připájená programovací hlavice, ale takhle nevím.
Myslím, že se jako začátečník nemusíte ničeho obávat 🙂
Zbyšek VodaSprávceNejsem si jistý, jestli to vůbec jde.
Každopádně to určitě půjde udělat přes pole.Zbyšek VodaSprávceCo mě tak narychlo napadá…
Na Arduinu bude program, který se při překročení dané teploty na čidle pokusí připojit na adresu ve tvaru např.:
www.server.cz/mail.php?cidlo=cislo_cidla&teplota=namerena_teplota
Na dané adrese pak musí být soubor mail.php, který bude číst data z URL pomocí GET (to jsou ty údaje za otazníkem). Ty pak jen vezme a například pomocí funkce mail() je odešle.
Zbyšek VodaSprávceFB buď Zbyšek Voda, nebo stačí napsat na stránku Arduino.cz na FB
Zbyšek VodaSprávceProblém bude v tom, že tak, jak máte program napsaný je opravdu správně chování, že při zmáčknutí tlačítka se relé vypne!
if(buttonState == HIGH) { //!! tato funkce relé vypíná! digitalWrite(relePin1, LOW); } else{ digitalWrite(relePin1, HIGH); }
Pokud chcete, aby stejný stav jako má relé mělo i tlačítko, musíte prohodit LOW a HIGH:
if(buttonState == HIGH) { digitalWrite(relePin1, HIGH); } else{ digitalWrite(relePin1, LOW); }
Dva IFy na stejné úrovni se rozhodně nedají brát jako „hlavní“ a „podřadný“. „Podřadnosti“ dosáhnete až jejich zanořováním 🙂
Zbyšek VodaSprávceTo asi bude tim, ze readTemperature je funkce volana na objektu dht1. A funkce potrebuji mit za sebou zavorky (i kdyz treba prazdne). Spravny zapis by tedy byl dht1.readTemperature().
-
AutorPříspěvky