Keresés

Részletes keresés

titusz99 Creative Commons License 2016.02.25 0 0 1756

A setup-ban nem érdemes.

A loop-ban talán akkor, ha kevés (200-300).

Lényeg, hogy lásd mennyi van akkor és ott.

 

Előzmény: szatti (1755)
szatti Creative Commons License 2016.02.25 0 0 1755

Köszi, viszont ha ezt a setupban íratom ki, akkor nem a valóságot fogom látni.

Ezt többször ki kell íratni a program futása közben, hogy lássam miként alakul a szabad ram mennyisége?

Mondjuk miután az összes hőmérséklet be van olvasva és előkészítve a wifi küldésre. 

Előzmény: titusz99 (1754)
titusz99 Creative Commons License 2016.02.25 0 0 1754
Előzmény: szatti (1753)
szatti Creative Commons License 2016.02.25 0 0 1753

Igen a kukac az csak elírás. Az & akart lenni.

 

A szabad memóriát hol tudom megnézni?

Mintha az újabb Arduino IDE-k kiírtak volna több infot fordításkor, de nekem az 1.0.6.  van fent, mert csak ezzel

tudom az Optiboot féléket programozni.

 

Előzmény: titusz99 (1748)
vfp Creative Commons License 2016.02.24 0 0 1752

Nálam a laptopon az alábbi verziók vannak fent:

-1.05

-1.06

-1.55

-1.63

 

De csak az 1.05-ben volt benne

Előzmény: granov (1751)
granov Creative Commons License 2016.02.24 0 0 1751

Köszi.

Eléggé el...tt dolog, hogy nem lehet sehogyan se leszedni, mert elvileg az install csomagban lenne, de mégsincs benne.

 

Előzmény: vfp (1750)
vfp Creative Commons License 2016.02.24 0 0 1750

Csak az 1.05-ben találtam meg nálam.

link: https://goo.gl/yk2ulw

 

Előzmény: granov (1749)
granov Creative Commons License 2016.02.24 0 0 1749

wire library kerestetik!

 

Egész délután ezt a könyvtárat vadászom. Az új installban benne sincs, holott a könyvtár kezelő szerint telepítve van. Mindenféle egyéb I2C kezelőt leltem de az eredeti, gyári nem tudom honnan lenne letölthető.

 Akinek megvan tegye elérhetővé lécci. Köszönet előre is.

 

titusz99 Creative Commons License 2016.02.24 0 0 1748

Ugye csak elírás:

Field1=69.4&Field2=68.2&Field3=1@field4=10.0

(kukac)

A szóköznek nem szabad ilyen problémát okozni hacsak az a szóköz nem chr(0).

A String egy csomó tipust automatikusan konvertál.

Azt nézted már, hogy a loop-ban mennyi a szabad memória?

A NANO 2k-ja nem túl sok, hamar el szokott fogyni.

Előzmény: szatti (1747)
szatti Creative Commons License 2016.02.24 0 0 1747

Nekem az tűnt fel, mintha a szóközt nem számolná bele.

Legutóbbi esetben az értékek valami ilyen formában voltak:

 

Field1=69.4&Field2=68.2&Field3=1@field4=10.0

 

Ahol a negyedik a puffer töltöttsége százalékban.

 

Amikor az 10% alá csökkent, attó kezdve nem ment el az adat. A sor így nézett ki:

 

Field1=69.4&Field2=68.2&Field3=1@field4= 9.0

 

A 9 előtti szóközt mintha nem számolta volna és kevesebbet küldött az "AT+CIPSEND="  értékre.

Vagy csak más miatt nem jött ki az érték. A százalékot most INT -re állítottam, így nem működik.

Lehetséges, hogy ha a hőmérséklet értékek valamelyike 10 fok alá menne ( ami ez esetben szerencsére nem játszik) akkor

megint megállna a történet.

 

Ki fogom próbálni ez a reserved  parancsot.

 

Tehát akkor ha jól értem az összes string-et elhagyhatom az INT és FLOAT változók előtt.

Ezt is tesztelni fogom.

 

Köszönöm!

Előzmény: titusz99 (1746)
titusz99 Creative Commons License 2016.02.24 0 0 1746

Akkor valami lenyeli vagy hibás a find.

A string statikus objektum, a tartalma viszont a HEAP-en van.

Amikor bővíted a tartalmát megpróbálja a blokkot megnövelni.

Ha nem megy újat foglal. A memóriád meg feldarabolódik rosszabb esetben egyre kisebb blokkokra.

Ha nem talál megfelelő blokkot akkor kezd furcsán viselkedni a rendszer.

A string-nek vannak operátorai a konverzióra, ha nem kell speciális átalakítást végezni akkor elegek azok is.

Két string összeadásakor két külön blokkot kell összeadnia, ez csak új blokk foglalással fog menni.

Ha a reserved-et beállítod, akkor lefoglal egy nagyobb blokkot. Így nem kell menet közben növelgetnie.

"getStr += String(szoba);"  megegyezik a "getStr += szoba;" -val végeredményét tekintve.

A string hosszát nem érinti ezen változtatás.

De elképzelhető, hogy a string hossza azért nem stimmel, mert valamely programsorodnál elfogyott a HEAP.

Ilyenkor jobb esetben csak üres stringed lesz.

Érdemes figyelni a szabad memóriát.

Előzmény: szatti (1745)
szatti Creative Commons License 2016.02.24 0 0 1745

Nem marad el a > jel. Figyeltem a soros kommunikációt. 

Azonnal megjön, de a program nem veszi észre!

 

a szoba  int típusú.

a többi érték float.

 

Ezt a string dolgot valójában nem értem hogy működik, csak egy ilyen programot találtam a neten ami működött elsőre.

Miután sok dolgon változtattam jöttek a hibák.

 

Ha az int és a float értékeknél nem kell a string, akkor hogy lehet a karakterlánc hosszát másképpen kiszámoltatni?

Előzmény: titusz99 (1739)
szatti Creative Commons License 2016.02.24 0 0 1744

Ezzel a vezérléssel sok olyat meg tudunk valósítani, ami Rexel - Sestossal lehetetlen.

Pl: nekem csak akkor indul a pillangó vezérlés, ha a kazán már 40 fokos ( begyújtáskor nem folytogatja ).

A puffertöltés pedig csak 60 fokos kazánnál indul el, nem akkor amikor a füstgáz miatt amúgy indulna.

stb......

Előzmény: Törölt nick (1742)
szatti Creative Commons License 2016.02.24 0 0 1743

A zavarszűrő sok esetben segíthet, de csak olyat érdemes ami a földeléshez is csatlakozik.

Én nem használok 5V-os reléket, mert a relé is meg tudja zavarni a procit ( induktív impulzusok) , főleg ha az 5V rendszeren megy.

Tudom dióda van rajtuk, de akkor is jobb, ha nem azon megy.

 

Nekem ilyen tápról megy :  http://orkodo.hu/Kameratap-12V-2A

Van egy 5V táp IC a nyákon a Nanohoz ami az 5V lábra adja be a tápot. Nem használom a beépített táját, mert az is okozhat fagyást, mert melegszik. ( tapasztalat)

A relék 12V-ről mennek és a léptetőmotor vezérlése szintén.

 

Az 5V táp IC-t eléggé melegszik, ezért még ki fogom cserélni egy ilyenre : http://www.ebay.co.uk/itm/170734419936?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

 

Ezzel a táppal eddig még nem fagyott le a Nano ( lassan 3 hónap folyamatos üzem). 

Egyedül az I2C busz állt meg 2 alkalommal, a kijelzőről tűntek el a betűk, de a vezérlés ment rendben.

Ez állítólag az I2C busz hátránya, hogy néha ki kell resetelni programból.

A 220-at is a panelen levő relék kapcsolják!

 

Előzmény: Törölt nick (1740)
Törölt nick Creative Commons License 2016.02.23 0 0 1742

Automata és kézi üzemben is működhet a rendszer.

A füstgáz szabályozása nem arduino alapú volt, az is megdöglött idővel, ez nem az arduino sajátossága.

A szivattyúkat kapcsolja a kazán/szoba termosztát is, a biztosítás nem egyszeri.

Egy bizonyos cégnél magasszintű automatizált rendszeren is, ipari eszközök mellett fordul elő rendszerhiba, az egyéni megoldásaimnak van még hová fejlődnie.

A vezérlés elemenként is megvalósítható, de egy szinten túl sok lesz az elem, itt jön képbe a mikrovezérlő.

 

Előzmény: lala1961 (1741)
lala1961 Creative Commons License 2016.02.23 0 0 1741

Mondtam ,hogy túl bonyolítod az életed/fűtésed !:-) Főleg ha a szivattyú kapcsolásával történik valami "barba trükk" !:-((

Előzmény: Törölt nick (1740)
Törölt nick Creative Commons License 2016.02.23 0 0 1740

Ma fűrészbakot hegesztettem, a keringető szivattyúk méltatlankodásától kisérve, + ki kellett kapcsolni az Arduino automata vezérlést, állandóan lefagyott.

Mi lenne, ha a tápegységéhez beiktatnék egy hálózati zavarszűrőt?

Vettem 5V-os reléket is azokra kapcsolna 5V-ot a jelenlegi relé, és azok kapcsolnák a szivattyúk 230 V-ját, messze az Arduino-tól.

Előzmény: szatti (1737)
titusz99 Creative Commons License 2016.02.23 0 0 1739

OK.

De! Olyan, túl gyorsan megjött nincs!

Ellenben:

előbb deklaráld a string változókat.

majd használd a reserved() metódusát megfelelő értékkel.

az int, float meg egyéb értékekhez nem kell (sőt szerintem hiba is lehet) a String használata.

vagyis

   getStr += szoba; // gondolom a szoba float

 

 

Azt látom, hogy másoknál is jelentkezik a "AT+CIPSEND=" hibád.

Mintha kb minden 20. esetben maradna el a '>' jel.

Egyébként egy másodperc a várakozás alapértelmezetten.

Esetleg firmware update segíthet.

Előzmény: szatti (1733)
lala1961 Creative Commons License 2016.02.23 0 0 1738

Ok, amúgy nagyon klasssz !:-)

Előzmény: szatti (1737)
szatti Creative Commons License 2016.02.23 0 0 1737

Már ez van helyette :-)

szatti Creative Commons License 2016.02.23 0 0 1736

Már nincs.  Pár nap alatt elvitték.

Előzmény: lala1961 (1735)
lala1961 Creative Commons License 2016.02.23 0 0 1735

Bocsi a zavarásért ,megvan még a belimo &sestosod ? Esteleg beszélhetnék róla!

 

Előzmény: szatti (1734)
szatti Creative Commons License 2016.02.23 0 0 1734

Én 1 poti és 1 nyomógombbal úgy oldanám meg, hogy gombnyomásra olvasnám be a poti értékét. Először poti beállít, aztán gombra olvas. Persze ha lényeges, hogy melyik poti állás melyik változóhoz való, akkor kell valami visszajelzés is, hogy hol tart éppen a léptetés.

Előzmény: bal_zsi (1730)
szatti Creative Commons License 2016.02.23 0 0 1733

Nem az a baj, hogy várnom kell, hanem a cmd elküldése után olyan gyorsan megjön a > jel, hogy a program nem észeleli és vár tovább.  De nem is ez a gond, mert ezt kihagyva is működik.  Ami legtöbbször gondot okozott az a string lenght számítása:

 

 

 

Előzmény: titusz99 (1729)
szatti Creative Commons License 2016.02.23 0 0 1732

A fórum motor kiszedegeti a bemásolásból a backlash jeleket, ezért nem jó amit becopyztam.

Itt a jó programrészlet:

Előzmény: titusz99 (1729)
vfp Creative Commons License 2016.02.20 0 0 1731

Ugyan nem értem a problémádat, de ha ezt átnézed, akkor talán egy lépéssel tovább tudsz lépni a menü megvalósításban.

 

http://tronixstuff.com/2010/06/06/getting-started-with-arduino-chapter-nine/

 

A 9.2 és 9.3 megvalósításra gondoltam. Én ebből kiindulva csináltam meg 1 potival és 1 nyomógombbal. ( a rotary encoder-n gondolkodtam, de nem volt időm belemélyedni a feladatba)

Előzmény: bal_zsi (1730)
bal_zsi Creative Commons License 2016.02.20 0 0 1730

Kedves hozzáértők!

 

Én egyenlőre minden cél nélkül, hobbiból kezdtem el foglalkozni Ardiuino programozással C++. Pár dologra már rájöttem, viszont az elején már elakadtam, hiába szántam rá több estét a keresgélésre semmi siker, ezért is fordulnék hozzátok. Potival meg tudok adni változónak értékét (pld. hőmérsékleti értéket), amiből tovább tudok lépni, viszont ennek az a hátránya, hogy ahány változó, annyi poti kell. Lenne ennek egy gyakorlatiasabb  változata, miszerint egy mikrokapcsolóval lépkedni lehetne a „menüben”, másik kettő digitális bemenetre kötött kapcsolóval pedig növelni vagy csökkenteni lehetne az értéküket. Ebben ha Valaki segítene, nagyon megköszönném.

titusz99 Creative Commons License 2016.02.19 0 0 1729

Ez a rész lefordul?

 

String cmd = "AT+CIPSTART="TCP","";
cmd += "184.16.153.149"; // api.thingspeak.com
cmd += "",80";

Nem inkább így kéne kinézni?

 

String cmd = "AT+CIPSTART=""TCP"",""";
cmd += "184.16.153.149"; // api.thingspeak.com
cmd += """,80";

Másik: elküldöd a cmd-t, ez időbe telík. vagy vársz és keresel, vagy a keresésnek kell várni egy ideig.

Előzmény: szatti (1728)
szatti Creative Commons License 2016.02.18 0 0 1728

Sziasztok!

 

November óta működik a Nanoval a fűtés vezérlésem.

Egy dologgal küzdök amire nem jövök rá.

Gondolom sokan ismeritek már a Thingspeak logolásának módját:

 

// convert to string

char buf[16];

String strTemp = dtostrf(temp, 4, 1, buf);

Serial.println(strTemp);

// TCP connection

String cmd = "AT+CIPSTART="TCP","";

cmd += "184.16.153.149"; // api.thingspeak.com

cmd += "",80";

ser.println(cmd);

if(ser.find("Error"))

{ Serial.println("AT+CIPSTART error");

return; }

// prepare GET string

String getStr = "GET /update?api_key=";

getStr += apiKey;

getStr +="&field1=";

getStr += String(strTemp);

getStr += "rnrn";

// send data length

cmd = "AT+CIPSEND=";

cmd += String(getStr.length());

ser.println(cmd);

if(ser.find(">")){ ser.print(getStr);

} else{ ser.println("AT+CIPCLOSE"); // alert user Serial.println("AT+CIPCLOSE"); }

 

2 hónap hibátlan üzemelés után egyszercsak nem vette észre a program a ">" jelet ( utolsó előtti sor)  és

nem küldte az adatokat el. Vagyis 20-ból egyszer elküldte, de legtöbbször nem.  Nem jöttem rá miért, de kihagytam ezt a sort és

a cmd után várok egy kicsit és küldöm. Így működik.

 

De ami nem áll össze az a String hossza adat.

Először ugye el kell küldeni, hogy hány karakter a küldendő adat, majd el kell küdeni az adatokat. Már sokadszorra járok úgy, hogy nem jön ki a hossz az adatokkal és csak részlegesen mennek át az értékel.  Például leutóbb a puffer százalékot float-al számoltam. 4 karakter és 1 tizedes konvertálással "dtostrf(temp, 4, 1, buf);" Egész addig jó amíg 10% felett van. Alatta lesz ugye egy üres karakter a 9.0  előtt, és így már nem egyezik a lenght  és nem küldi el.

 

Valaki meg tudja mondani mi ennek a logikája?

Törölt nick Creative Commons License 2016.02.17 0 0 1727

A mozgatás, kommunikáció, egy-egy része lesz a droid tudományának, nem kevés programozási és hardwer feladattal.

Ki kellene tűznöd egy minimum elvárást, abból elindulni.

Előzmény: haky01 (1726)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!