Začátky s Arduinem

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
kodl69
Příspěvky: 7379
Registrován: sob črc 19, 2014 8:56 pm
Reputace: 866
Lokalita: severně od Brna
Systémové napětí: 48V
Výkon panelů [Wp]: 8kWp
Kapacita baterie [kWh]: 12kWh
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: Začátky s Arduinem

Příspěvek od kodl69 »

zkusil bych "unsigned long lastjob1=0" asi je to tím, jak přeteče registr časovače. Já na to používám knihovnu interval.h
je tam ošetřený i přetečení registru millis co je každých 72 hodin, zkus si to najít na webu.
ostrov skoro 8kWp neustále ve stádiu zrodu: smartshunt(ex WBJR), MPPT150/45, MPPT 250/100(ex midnitesolar 150 clasic lite), 16S a různě P cca 340Ah Winston, MP II 5000,( ex Powerjack 8kW, ex samodomo cca 4kW). 48V DC rozvody a spotřebiče.
bednar
Příspěvky: 79
Registrován: čtv čer 07, 2012 2:15 pm
Reputace: 3

Re: Začátky s Arduinem

Příspěvek od bednar »

Pavel.Z. píše:Mám jednoduchý program, kde snímam stav tlačítka a chcem aby sa na x sekúnd zapla led napr. 5s. Všetko ide bez problémov, len keď to skúšam bez delay, tak raz svieti 2s, raz 5s, nikdy to nie je presne :-( neviem kde môže byť problém. Ďakujem opäť za radu.
Řekl bych, že je třeba ošetřit zákmity toho tlačítka.
Pavel.Z.
Příspěvky: 160
Registrován: ned lis 25, 2012 10:06 am
Reputace: 5

Re: Začátky s Arduinem

Příspěvek od Pavel.Z. »

díky moc. Tým tlačítkom to ale na 99perrcent nebude. Už mám aj taký program čo je ošetrené tlačítko a stále. Skúsim cez víkend tú knihovňu. Vďaka
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Ahoj, spustil sem arduino droid na xiaomi. Při kompilaci to nenajde knihovnu, ikdyž v přehledu dostupných je. Mám android 2. den, adresářovou strukturu mám stejnou jako u původních knihoven, které jdou kompilovat. Dělám někde chybu? Díky za info
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Tak jsem sw pro arduino na androidoi nerozchodil, ale vřera jsem se učil a sestrojil logovač. Na zkoušku připojen teploměr a hodiny. tady je výsledek https://www.facebook.com/pavel.taclik.3 ... nref=story Prosím, jak zkrotit proměnnou, aby se ukládal čas ve formátu 01:08 a ne 1:8 Teday aby v proměnné bylo 01 a ne jen 1 Díky za radu
kodl69
Příspěvky: 7379
Registrován: sob črc 19, 2014 8:56 pm
Reputace: 866
Lokalita: severně od Brna
Systémové napětí: 48V
Výkon panelů [Wp]: 8kWp
Kapacita baterie [kWh]: 12kWh
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: Začátky s Arduinem

Příspěvek od kodl69 »

stačí se podívat na příklad s hodinami co je u knihovny rtc, prostě se do stringu dopíšou nuly, pokud je číslo menší než 10.
Ale pro další zpracování logovanejch dat to asi problém nebude, excel si to jistě přebere.
ostrov skoro 8kWp neustále ve stádiu zrodu: smartshunt(ex WBJR), MPPT150/45, MPPT 250/100(ex midnitesolar 150 clasic lite), 16S a různě P cca 340Ah Winston, MP II 5000,( ex Powerjack 8kW, ex samodomo cca 4kW). 48V DC rozvody a spotřebiče.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

do výpisu na serial to tak funguje, jde jen o kosmetickou drobnost, graf excel zpracuje dobře i bez nul. Nevím, jak zneplatnit nulu v proměnný. Pak mi ji to tam přihazuje, i když už není potřeba
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Nuly mám vyřešené, ale problém s grafem. Pokud ukládám celé číslo z DHT11, graf se kreslí pěkně. S použitím DS18B20 se mi nedaří vyplodit graf. Přitom data uložená na SD jsou pěkně ztrukturovaná. Čím to?
Přílohy
nejde mi graf.ods
(8.57 KiB) Staženo 137 x
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Začátky s Arduinem

Příspěvek od solárník »

DHT11 stojí pěkně za ho**. Chyba měření vlhkosti až 10% (nehledě na to, co tvrdí v datasheetu) a časem se ještě zhoršuje. Hrozný senzor, který se používá v nejlevnějších stolních meteostaničkách. Je to způsobené i tím, že u nás ve všech eshopech prodávají čínské kopie senzorů. Ale konkrétně DHT11 má ten nejhorší - odporový senzor na vlhkost. Ten už se nepoužívá v solidních zařízeních nikde. Už pouze kvalitní kapacitní.

Originál senzory se dají koupit už pouze na mouseru nebo farnellu. Tam mám potvrzeno, že tolerance koupených senzorů jsou přesně podle datasheetu.

Když to koupíte v obyčejném našem e-shopu, nebo nedej bože na ebay, tak na datasheet rovnou zapomeňte. Místo chyby 2% RH to bude mít deset.
kodl69
Příspěvky: 7379
Registrován: sob črc 19, 2014 8:56 pm
Reputace: 866
Lokalita: severně od Brna
Systémové napětí: 48V
Výkon panelů [Wp]: 8kWp
Kapacita baterie [kWh]: 12kWh
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: Začátky s Arduinem

Příspěvek od kodl69 »

jestli není problém desetinná tečka místo čárky...
ostrov skoro 8kWp neustále ve stádiu zrodu: smartshunt(ex WBJR), MPPT150/45, MPPT 250/100(ex midnitesolar 150 clasic lite), 16S a různě P cca 340Ah Winston, MP II 5000,( ex Powerjack 8kW, ex samodomo cca 4kW). 48V DC rozvody a spotřebiče.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

neumím ji nahradit, mám to tak:
sensors.requestTemperatures();
String teplota = String(sensors.getTempC(TEPLOMER)); //String teplota = String(sensors.getTempC(TEPLOMER)+ 0.06); korekce teplomeru v případě potreby
DateTime now = RTC.now();
char cas [20];
sprintf (cas, "%02d:%02d:%02d___%02d:%02d ", now.day (), now.month (), now.year (), now.hour (), now.minute ()); //, now.second () vyjmuto
Serial.print(cas);
Serial.print(" ");
Serial.println(teplota);
String data =cas+teplota;

File soubor = SD.open( "data.csv", FILE_WRITE);
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

potřeboval bych ukládat 18,45 místo18.45
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Začátky s Arduinem

Příspěvek od solárník »

Mně kreslí grafy rovnou Arduino na webovou stránku pomocí html5 canvasu. Ale když už to musíš exportovat, tak buď to vynásob 100 a ukládej jako 1845 a pak si to v excelu zas vyděl, nebo to musíš asi převést na String (řetězec) a pak v něm vyměnit tečku za čárku. Je asi sto způsobů, jak to vyřešit, při printu dát jen celou část čísla pak čárku a pak desetinnou část čísla, to už záleží na tvé představivosti a umu.

Ale původní průser vznikl proto, že v ČR používáme desetinnu čárku a ve většině ostatních zemí (včetně itálie, kde naprogramovali Arduino IDE) desetinnou tečku.

Když si otevřeš v počítači mezinárodní nastavení a tam dáš jako oddělovač desetinné části tečku, tak to do excelu načteš i takhle a graf ti to udělá.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Třetí varianta se mi zdá nejsnažší... jdu testovat Díky
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Začátky s Arduinem

Příspěvek od solárník »

Ta druhá varianta by byla třeba

double teplota; //tohle jen pro pořádek, v tom máš už asi teplotu takže to tam psát nebudeš
String t1 = String(teplota, 2); // převede na řetězec s názvem t1 s přesností na 2 desetinná místa
String t2 = t1.replace(".", ","); // vymění v t1 místo tečku čárku a uloží výsledek do proměnné t2

a už můžeš tisknout t2, kde je místo tečky čárka. Doufám , že si to pamatuju dobře, píšu to z hlavy, kdyby ne tak soráč, není složité si to na netu ověřit.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Když to vynásobím 100, tak se mi ukazuje 1845.00

z druhé možnosti nefunguje
tento řádek String t2 = t1.replace(".", ","); // vymění v t1 místo tečku čárku a uloží výsledek do proměnné t2
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Začátky s Arduinem

Příspěvek od solárník »

A) vysledek 1845 prirad do celociselne (napriklad int tepl = teplota) proměnné a pak to teprv tiskni.

B) urcite jsi to dobre opsal? Jestli jo podivam se na net kde je chyba. Pomohlo by kdybys poslal chybovou hlasku.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

tak int funguje, už to ukazuje 1845 co se 2. řádku týká - viz obrázek
Přílohy
problem.jpg
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Začátky s Arduinem

Příspěvek od solárník »

Zkus tam dát jen

double teplota; //tohle jen pro pořádek, v tom máš už asi teplotu takže to tam psát nebudeš
String t1 = String(teplota, 2); // převede na řetězec s názvem t1 s přesností na 2 desetinná místa
t1.replace(".", ",");

a pak tisknout t1, co to udělá
kodl69
Příspěvky: 7379
Registrován: sob črc 19, 2014 8:56 pm
Reputace: 866
Lokalita: severně od Brna
Systémové napětí: 48V
Výkon panelů [Wp]: 8kWp
Kapacita baterie [kWh]: 12kWh
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: Začátky s Arduinem

Příspěvek od kodl69 »

já se snažím všchny proměnný udržet jako int nebo unsigned int, procesor to má rychlej spočítaný, a když se to má třeba poslat jako řetězec do rádiovýho modulu, je to jednodušší. Mít víc než 5 platnejch míst je z technickýho hlediska blbina, jako třeba: Měřím výkon tak, že na jednom a/d mám proud, na druhým napětí, tj 10bit rozlišení v optimálním případě, tj 1024 hodnot. Pokud postupuju rozumně, vystačím si s int: P=Iměř*Uměř*koeficient kterej si spočítám bokem podle děličů napětí a výsledek bude třeba vynásobenej 10 nebo 100 aby to pěkně do toho int vyšlo. Hlavně poznámky do kódu, jinak se v tom sám nevyznáš.
A nebo I=Iměř*koefI, U=Uměř*koefU , P=U*I a tady už jsem v koncích, koeficienty jsou třeba 0,01587, takže výsledek je jistě float, a už se v tom vezu, přetypování a další blbiny. Je potřeba strávit pár nocí při bádání nad takovejma věcma co mají fungovat a nefungují, a pak už znovu tu blbost neuděláš.
ostrov skoro 8kWp neustále ve stádiu zrodu: smartshunt(ex WBJR), MPPT150/45, MPPT 250/100(ex midnitesolar 150 clasic lite), 16S a různě P cca 340Ah Winston, MP II 5000,( ex Powerjack 8kW, ex samodomo cca 4kW). 48V DC rozvody a spotřebiče.

Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek