Zbyšek Voda
Vytvořené odpovědi
-
AutorPříspěvky
-
Zbyšek VodaÚčastník
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 VodaÚčastníkDobrý 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 VodaÚčastníkTady je o tom celý tutoriál: http://www.arduino.cc/en/Hacking/LibraryTutorial
Zbyšek VodaÚčastníkJá 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 VodaÚčastníkPoužil bych něco na tento způsob: https://bastlirna.hwkitchen.cz/arduino-zaklady-blikani-bez-funkce-delay/
Zbyšek VodaÚčastníkDobrý 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 VodaÚčastníkDobrý 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 VodaÚčastníkAha. Nemyslím ale, že je to něco, čeho byste se měl obávat 🙂
Zbyšek VodaÚčastníkTak to nevím, co by to mohlo být. Kde to psali?
Zbyšek VodaÚčastníkPopravdě 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 VodaÚčastníkNejsem si jistý, jestli to vůbec jde.
Každopádně to určitě půjde udělat přes pole.Zbyšek VodaÚčastníkCo 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 VodaÚčastníkFB buď Zbyšek Voda, nebo stačí napsat na stránku Arduino.cz na FB
Zbyšek VodaÚčastníkProblé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 VodaÚčastníkTo 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().
Zbyšek VodaÚčastníkNebude chyba v tom, ze cisla zabalujete do uvozovek? On je pak program bere jako String a ne jako cislo 😉
Zbyšek VodaÚčastníkTomu se věnují třeba tady: http://diy-scib.org/blog/multiple-dht-humidity-sensors-arduino
Sám jsem to ale ještě nezkoušel.Zbyšek VodaÚčastníkDobrý den,
myslím, že to bude tím že nemáte staženou, nebo správně přidanou knihovnu. V návodu máte odkaz přímo v prvním odstavci. Kdyžtak návod, jak přidat knihovnu najdete zde: https://bastlirna.hwkitchen.cz/jak-importovat-knihovnu-do-arduino-ide/:)
Zbyšek VodaÚčastníkTo asi nebude problém zapojení. Zkoušel jste nahrát program do Arduina bez čehokoliv k němu připojeného?
Zbyšek VodaÚčastníkAhoj, ten čip používá driver CH340G.
Mělo by stačit stáhnout driver odsud: http://www.arduined.eu/ch340g-converter-windows-7-driver-download/
Je to zip, tak bude možná potřeba ho rozbalit.Pak otevřeš ovládací panely -> Správce zařízení a po připojení nového Arduina by se mělo zobrazit v seznamu zařízení – Neznámé zařízení. Klikneš pravým, dáš aktualizovat ovladač, instalovat z lokálního uložiště a navedeš instalační program na stažený balíček.
To by mělo fungovat.
Zbyšek VodaÚčastníkOmlouvám se za problémy s linky. Mohl za to spam filtr, který většinu příspěvků s odkazem vyhodnotil jako spam. Nevím, proč se tak zachoval, většinou není tak „agresivní“. Už to snad bude OK 🙂
admin
Zbyšek VodaÚčastníkAhoj.
Pokud opravdu trváš na tom C, tak se podívej třeba sem: https://balau82.wordpress.com/arduino-in-c/Jinak pokud jsi opravdu začátečník, tak bych radil začít spíš v klasickém Wiring (knihovna C++), ve kterém se Arduino normálně programuje, a až po chvilce bych se dal do toho C 🙂
Na začátek ten Wiring stačí a přechod na C pak nebude nijak složitý.
Zbyšek VodaÚčastníkJde to! Český návod naleznete zde: http://www.hwkitchen.com/news/a16-nas-prvni-klon-arduina/
-
AutorPříspěvky