Elindítottam egy youtube csatornát annak érdekében, hogy minél többet megismerjék a benne rejlő lehetőségeket, és minél többet kedvet kapjanak egy kis programozáshoz, akár csak egy hobbiprojekt erejéig. Remélem hasznosak lesznek számotokra vagy ismerőseitek számára!
És egyáltalán nem is jó így a kód, ha a kapcsosat kiveszem, vagy csak felesleges lépések vannak ?
PID-be nem kívánok belekezdeni, mert ezt is vért izzadva hoztam össze, nulla előképzettség nélkül, úgy érzem az most magas lenne, ezt is főként angol fórumokból bogarásztam :).
Az eredeti így nézett volna ki, csak azt hittem ha nincs benne a második if-else függvény akkor folyamatosan fűtene?!?!?!?!?!?!
Hibás a kód, a loop függvényed első delay(6000) utasítása után véget ér, tekintve a záró kapcsos-zárójelre. A programod további része így soha sem fut le. Helyezd át az utolsó delay(6000) utánra.
Véleményem szerint nem jó a kapcsolási sémád, mert folyamatosan fűrészfogas lesz a hőmérséklet és a páratartalom is. Hagyod mindig lehűlni a terráriumot 28 fokig, majd felfűtöd 31-ig és kezded előlről. Kitalálták már a vezérléstechnikában, hogy miként lehet ezt elkerülni, PID szabályzásnak hívják. Beállítasz egy célhőmérsékletet/párát és amennyire a fűtő/párásító eszközeid engedik annyira fogják ezt a beállított szintet tartani. Mindezt akkor is pontosan próbálja tartani, ha rásüt a nap, vagy teregetsz a szobában.
Szerintem találsz bőven arduinora is példaprogramot.
A fő kérdés a következő lenne... kell-e a második if-else függvény a hőmérsékletnél és a páratartalomnál? Tehát ami kikapcsolja a relét, ha eléri a kívánt tartományt!?!?!?!
Rendeltem régebben egy Nanot, csak gondoltam PIC után kipróbálom mit tud, de nem is foglalkoztam vele. Most szereztem egy UNO-t össze is dobtam vele a kerti 16 zónás öntözőrendszert szivattyúvezérléssel és talajnedvesség érzékeléssel, gondoltam játszok a NANOval is.
Gond nélkül rá is kötöttem az LCD-t és megcsináltam a HELLO WORLD programot, fut is egészen addig amíg le nem húzom USBről. A következő alkalommal mikor áramot adok neki már nincs benne a program, elfelejt mindent. Közben rájöttem, hogy nem is eredeti arduino hanem DCCDUINO. Olvasgattam mindenféle bootloader égetésről, de szerintem nem ez az enyémmel a gond. Van valakinek ötlete? Vagy ez a klón ennyit tud? Köszi.
Egy kis problémába ütköztem. Szeretnék mérni két db hőmérsékletet, és egy darab nyomásértéket. A Hőm. Max6675K hőelemekkel, a nyomást pedig sima analóg bemeneten 0-5V között. Majd mindezt kitenném egy Nextion LCD-re I2C-n .
A program működik, soros monitoron minden szépen látszik is, de a kijelzőre nem jut ki a mért érték, vagy ha igen, akkor is csak egyszer. A csatolt képen továbbá az is látszik, hogy ha a sisak értékre ugyanazt méri mint az előző, akkor nem küld újabbat.
Tudnátok ebben segíteni, hogy az LCD-re miért nem jut ki adat? ( az 50,22 érték azt jelenti, hogy nem kapott adatot írhattam volna error-t is )
sisaknew = (thermocouple.readCelsius()); // Hőmérséklet érték beolvasása
(Serial.available()>1); // bevallom nem tudom mi célt szolgál egy másik működő mérésemben benne volt
if (sisaknew==sisakold) {;}
else { sisakold=sisaknew; // szintén nem tiszta a dolog, hogy miért kell az if, else kombó de a másik mérésem csak így működött. sisak=sisaknew;
Serial.print("sisak.txt="); // a nextion sisak.txt=**** néven várja a kiírandó adatot Serial.write(0x22); Serial.print(sisak); Serial.write(0x22); Serial.write(0xff); Serial.write(0xff); Serial.write(0xff); // szintén a várt formátum miatt szükséges }
cefre = (thermocouple1.readCelsius()); // mivel az első hőmérséklet sem tökéletes, ezért nem csináltam tovább, de a soros monitoron így is jön sensorValue = analogRead(pressureIn); Pressure = map(sensorValue, 0, 1023, -28, 272); barValue = Pressure * 0.006895;
Így van, valószínűleg az hiányzott a gondolatmenetből, hogy más a program írás-fordítás-letöltés, és más a futás, amikor az arduino processzora futtatja a kódot. Akkor kell a libeket betöltenie a fordítónak a pc-n, amikor fordít, a beírt sorokból bináris kódot generál. Aztán áttöltjük ezt a kódot az arduinora, és onnantól nem kell már pc a futtatáshoz.
miután feltöltötted a programot az Arduino eszközre, az "benne marad", így ezután már elég csak tápfeszültséget adni neki, automatikusan elkezdi végrehajtani az utasítás sorozatot. (Nem kell hozzá számítógép.)
> Hogyan lehet megoldani egy project állandó működését egész nap, úgy hogy nem kapcsolok be számítógépet ?
Ez egyszerű: Nem kapcsolsz be számítógépet.
> Arra gondolok, pl ha van szenzorom, akkor #include -nál a library-t gépről tölti be usb-n keresztül, nem ?
Nem. Ajánlott irodalom: C és C++ fordító működése, lib-ek importálása.
> Lényeg h mobilizálni szeretném , hogy ne kelljen állandó pc kapcsolat?!?!?!
Nem kell.
> Erre való az sd-kártyás megoldás ?
Nem. Az SD kártya az plusz háttértér. Ajánlott irodalom: Számítógépek elvi felépítése, majd utána mikrokontrollerek felépítése, működése.
A mikrokontroller ugyanis egy KOMPLETT számítógép. Van benne processzor, háttértár, munkamemória, stb.
> Mit jelent a bootloader égetése ?
Szerintem erre térjünk vissza később. :-)
> Teljes mértékben kezdő vagyok,
Nem is olyan rég én is az voltam. ;-) Ha sokat olvasol, és sok mindent kipróbálsz, akkor ez az állapot hamar elmúlik.
> 2 hete még nem is hallottam az arduinoról,
Valamilyen hardvered már van?
> sőt c++-ban sincs semmi korábbi tapasztalatom, úgyhogy 0-ról kezdem
Alapvető programozási logikát érdemes először megtanulni. Vezérlési szerkezetek, logikai műveletek. A hardver piszkos részleteit (regiszterek, címzési módok, megszakítások és hasonlók) az Arduino környezet úgyis elrejti.
> és amit eddig megtudtam az mind "google a barátod" szindróma :)
Az továbbra is sokat segít.
Nekem mára már a programozás a munkám. Amit tudok, azt java részt a Google-nak köszönhetem. :-)
Megpróbáltam megoldani az elém kerülő problémákat. Sokszor nem értettem, hogy mit miért javasolnak a fórumokban, de azért megpróbáltam. Sokszor elrontottam, ami teljesen természetes, és nagyon sokat tanultam belőle.
Amúgy meg angol nyelven rengeteg anyag érhető el. A fórumokban pedig már kérdezni sem kell: Minden kérdést feltettek már, elég elolvasni a válaszokat. :-)
Attól függ milyen az a késleltetés. Ha delay, akkor hiába.
Érdemes megcsinálni delay nélkül a késleltetéseket, és akkor továbbra is gyorsan pörög a program, és simán elkapja a gombnyomásokat minden további ügyeskedés nélkül is.
Van egy arduino uno-m, amin jelenleg egy 20x4 es lcd és pár hőmérő található. Működik, a kijelzőn hőmérséklet és páratartalom adatokat jelenít meg. Viszont a kijelző egyfolytában világít. Hogy tudnám úgy megvezérelni, hogy egy nyomógomb hatására adott időre kapcsoljon be a háttérvilágítás. (addig persze megvan, hogy nyomógomb az egyik bemenetre, kijelző háttérvilágítás egy kimenetre, csak a programban hogy oldjam meg?) Gondolom a megszakításkezelésnek kellene utánanéznem, mert a programban vannak 2-5mp-es késleltetések is, gyanítom ez alatt hiába nyomkodnám a gombot....
0,7 A-t húznak a relék (legalábbis az enyémek), úgyhogy relénként 0,7 A, plusz 50% tartalék, az nálam 2,1 A. A legközelebbi nagyobb 2,5 A körül van. 5V stabilizált. Nem lesz gond vele.
Az RTC csak az időt méri (az Arduino belső "óráitól" függetlenül), azt viszont hálózattól függetlenül méri.
A feszültségszabályozóval nem sokat érsz el. Az Arduino-n van egy, de ha a táplábra rátolod a reléket és behúzod mind a kettőt, akkor simán elhasalhat. Külső táp, ahogy a későbbin írtad (bocsánat, nem tudok most Fritzingelni, de ha mutatsz sémát, akkor arra elég gyorsan tudnak itt tanult topiktársaink bólintani).
1. Relék mindenképp külön áramkörről (külön tápról) menjenek, semmiképp se az ARDUINO táplábáról. Elég jelentős áramfelvételt produkálnak, ennek megfelelően a sima USB tápellátás el sem bírja őket (egyet még csak-csak, ha nagyon nincs más).
2. i2c LCD kicsit kifinomultabb, de ez is megteszi.
3. RTC: ha bármi oka van, hogy pontosan időt mérj, akkor igen, egyébként irreleváns.
4. Watchdog!!!!
5. Hűtő fokozat 31 fok felett?
6. Az LCD háttérvilágítását teheted egy tranzisztorral egy PWM lábra, így tudod változtatni a háttérvilágítás erősségét (akár fényérzékelővel automatikusan is).
Köszi. Próbálgattam,de a windows irja valami protocol hiányzik,és nem egyszerű a szisztéma. Elvileg sima mega2560 kontaktált régebben,nem kellett ilyen rumba se más. DE hasznos,köszönöm. 1117 fesz. szabályzórol valaki tud valami hasznos infót ? Ki kell cserélnem valószínűleg,mondjuk utána kéne mérnem multival tuti az a baj-e .... Előre köszönöm.
Tudom... Belekavarodtam mert nem csak az ftpi drivertől függ... Azt se tudom melyik ftdi ismerné fel... Próbálok Microsoft módra gondolkodni :D Google a barátom. És Mega2560al kapcsolatosan nem tudsz segíteni ?
De mondjuk ez hadján,mert jött kinából egy "keyes"mega2560+ramp.1.4A+4988 5db és első feltöltés megvolt és leblokkolt a nyák... Nem csinál semmit. Ötlet? Marlin_v1 töltöttem fel rá,de utána mint ha letiltott. VAn ez így?
amig hozzá nem értem a szoftveres részhez addig jó volt. Meg bekötéssel volt baj,de utána faszán ment. "Chinnai" módra. Ismeretlen Usb eszközlekérést ír rá most ki. Számtekes csóka mondja kuka,de nem hiszem...