Fórum | MyPower.CZ | Obnovitelné zdroje energie - energetická soběstačnost | Právě je pát zář 21, 2018 2:43 am


Začátky s Arduinem

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Další

Začátky s Arduinem

Příspěvekod jan.westhuserlt » čtv pro 25, 2014 7:24 pm

Ahoj, při snaze o nahrání vzorového projektu (přiloženého k instalačnímu softwaru Arduina) se mi zobrazí tato chybová hláška: avrdude: stk500_getsync(): not in sync: resp=0x00
Používám software ve verzi 1.0.6., hardware je http://www.dx.com/p/nano-3-0-atmel-atme ... .VJw5-F4jA.

Trošku bych ocenil odkaz na ověřený software, ověřené vzory a podobně, dostal sem to z druhé ruky a není vůbec vyloučeno, že je problém v Softwaru. Hlavně je problém, že k tomu nemám periferie, takže potřebuji něco, co otestuji jen s pomocí té integrované testovací diody.

Děkuji.

PS: http://img24.cz/images/56362291040029911837.jpg v určitých detailech toho obrázku se ty desky liší, tak jsem pro jistotu tu svou ofotil.

http://forum.arduino.cc/index.php?topic=28223.0 a nic z tohoto nepomohlo
jan.westhuserlt
 
Příspěvky: 8
Registrován: čtv pro 25, 2014 6:03 pm
Reputation: 0

Re: Začátky s Arduinem

Příspěvekod TyTycko » pát pro 26, 2014 10:18 am

No chyba je v tom že ti ten převodník co máš zjevně ze spodní strany desky nekomunikuje s Atmelem.Párkrát sem to řešil výměnou diody co je ze spoda u stabilizátoru a jednou byl v háji stabilizátor.Otázka je jen taková do jaké míry se to vyplatí opravovat a jestli se spíš nevyplatí objednat jinou u číňana.Pokud umíš s mikropájkou a změřit si diodu a proměřit stabilizátor,tak je práce zadara :-)
Polánka 1560W (24v),8 x MoserBaer 195w,Tristar MPPT 60,NiCd 4x160Ah + 1x120Ah, PowerJack LF 5kW by Matěj
TyTycko
 
Příspěvky: 105
Registrován: pon zář 03, 2012 7:47 pm
Reputation: 1

Re: Začátky s Arduinem

Příspěvekod jan.westhuserlt » pát pro 26, 2014 12:04 pm

VYŘEŠENO:

Ovladačem to u mě nebylo, ten přiložený funguje správně (je jediný, který jsem instaloval)

Tak nakonec vyřešeno: u mě byl problém s nastavením komunikace... V Tools sem musel na záložce Board vybrat správnej typ desky, a u Serial Portu zvolit COM4.

Kdyžtak přikládám osvědčený ovladač. Instalace setupem, zvolte soubor CH341SER.INF.

http://www.ebastlirna.cz/modules.php?na ... d&id=45233

----

Ale hele, chtěl bych nějaký typ na zapojení a naprogramování zapojení s poťákem, prostě něco sofistikovanějšího :-) Mám jen tento základní program, kde mi bliká testovací "L" dioda, ale nemám k tomu žádné další periferie. :-)

Dá se tento program upravit i pro použití na mém NANU? http://www.arduino.cc/en/tutorial/potentiometer

http://img24.cz/images/74475244091290492011.jpg
Jinak, to origiální nano a to moje čínské mají probohezné porty... selský rozum mi říká, že je to na 99% procent jedno... pin 26 bude vždy 26, a je jedno, zda se označí číslem A0 anebo A7. takže tady je ten program, upravený pro mé NANO.

int potPin = 26; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
int val = 0; // variable to store the value coming from the sensor

void setup() {
pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
}

void loop() {
val = analogRead(potPin); // read the value from the sensor
digitalWrite(ledPin, HIGH); // turn the ledPin on
delay(val); // stop the program for some time
digitalWrite(ledPin, LOW); // turn the ledPin off
delay(val); // stop the program for some time
}

Kam mám ale fyzicky zapojit tu diodu, a jak určím, při jaké napěťové hodnotě se mi ta dioda zapne/vypne?
jan.westhuserlt
 
Příspěvky: 8
Registrován: čtv pro 25, 2014 6:03 pm
Reputation: 0

Re: Začátky s Arduinem

Příspěvekod ome » ned kvě 10, 2015 1:16 pm

Nazdar, potrebujem poradit s displayom arduina 16x02.
Zbastlil som si elektricmeter http://forum.mypower.cz/viewtopic.php?f=3&t=2057#p38992 pri pokusoch som mojou vinou odpalil arduino a display. Po vymene za obidva nove mi display zobrazuje necitatelne znaky. Arduino v serial monitore pracuje spravne. Skontroloval som vsetky kontakty od displaya az po nozicky cipu arduina, ok. Moze to byt ze mi cinan poslal display s cipom neeuropskej znakovej sady, alebo kde je podla vas chyba? Ten novy je presne taky ako povodny (spaleny).
Přílohy
IMG_20150509_164017.jpg
500Wp seriovo balkon JZ a 960Wp paralelne strecha J a JV,
epsolar 2210, 24v 19xKPH 150 + 12xSunica 70 cca 3,3 kW/h, menice modif. sinus 1000W cina a PJ 3000W LF
ome
 
Příspěvky: 139
Registrován: úte čer 03, 2014 4:16 pm
Reputation: 25

Re: Začátky s Arduinem

Příspěvekod radeczek » ned kvě 10, 2015 6:36 pm

Hoj, jen tipuju: Jsou opravdu dobře připojení kontakty? proměřeno, že se žádný nedotýká vedlejšího? Jdou všichni do dobrého pinu na arduinu? Podobnou chybu mi to dělalo, když jsem měl špatný kontakt a třeba v průběhu vypadával.

Co opravdu doporučuju je "Arduino keypad shiled", což je shield s displayem a tlačítky, který se nasazuje přímo na arduino, takže odpadají špatné kontakty. Tlačítka jsou jako bonus ;)
radeczek
 
Příspěvky: 55
Registrován: stř črc 30, 2014 11:03 pm
Reputation: 3

Re: Začátky s Arduinem

Příspěvekod TyTycko » ned kvě 10, 2015 6:51 pm

Taky zkus nepoužité piny LCD připojit na GND,občas se stává že to nemá nulová data na D0-D3.
Polánka 1560W (24v),8 x MoserBaer 195w,Tristar MPPT 60,NiCd 4x160Ah + 1x120Ah, PowerJack LF 5kW by Matěj
TyTycko
 
Příspěvky: 105
Registrován: pon zář 03, 2012 7:47 pm
Reputation: 1

Re: Začátky s Arduinem

Příspěvekod kodl69 » pon kvě 11, 2015 2:28 pm

já tipuju přehozený vývody d4-d7 displeje s arduinem, něco podobnýho se mi povedlo taky, samoznaky neuvěřitelnýho typu. Ten údaj je tam stále, nebo to nějak se posunuje a mění? Základ je zkusit příklad co je u arduina (nemusí se dycky psát hello word :-)) ) a zkusit v LiquidCrystal lcd(12, 11, 5, 4, 3, 2); je to v pořadí RS, EN, D4, D5, D6, D7, vývod R/W displeje na gnd - kolikrát je jednodušší přepsat toto než pájet drátky...
Displayshield mám na pokusy taky, ale lepší je displej přes I2C, stačí dva dráty a je to, akorát jsem bojoval s knihovnou a vývody i2c převodníku (u některé knihovny jdou předefinovat, u některé ne...)
ostrov 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2650
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 180

Re: Začátky s Arduinem

Příspěvekod ome » pon kvě 11, 2015 3:46 pm

Dakujem vsetkym za pomoc. Bol to skrat na plosaku medzi D4 a D5. Na skrat som to nepremeriaval, moja chyba. Uz to funguje.
500Wp seriovo balkon JZ a 960Wp paralelne strecha J a JV,
epsolar 2210, 24v 19xKPH 150 + 12xSunica 70 cca 3,3 kW/h, menice modif. sinus 1000W cina a PJ 3000W LF
ome
 
Příspěvky: 139
Registrován: úte čer 03, 2014 4:16 pm
Reputation: 25

Re: Začátky s Arduinem

Příspěvekod 250w_gridfree » úte kvě 19, 2015 12:33 pm

Ahoj, právě jsem zprovoznil modul reálného času ds3231 a zadal správné údaje už si to správná data pamatuje i při odpojení napájení arduina. Korektně to vypisuje na seriovou linku, jak ale přiřadit údaj do proměnné - pro zápis ntřeba na SD, nebo jakoukoliv jinou činnost?

promenna_daum = displayTime(); // takhle to teda nefunguje

Díky



#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return( (val/16*10) + (val%16) );
}



void setup()
{
Wire.begin();
Serial.begin(9600);
//set the initial time here:
// DS3231 seconds, minutes, hours, day, date, month, year
// setDS3231time(00,50,11,3,19,05,15);



}

void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)

{

// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set next input to start at the seconds register
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}


void displayTime()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
&year);
// send it to the serial monitor
Serial.print(hour, DEC);
// convert the byte variable to a decimal number when displayed
Serial.print(":");
if (minute<10)
{
Serial.print("0");
}
Serial.print(minute, DEC);
Serial.print(":");
if (second<10)
{
Serial.print("0");
}
Serial.print(second, DEC);
Serial.print(" ");
Serial.print(dayOfMonth, DEC);
Serial.print("/");
if (month<10)
{
Serial.print("0");
}
Serial.print(month, DEC);
Serial.print("/");
Serial.print("20");
Serial.print(year, DEC);
Serial.print(" ");
Serial.print(" Den v tydnu: ");
switch(dayOfWeek){
case 1:
Serial.println("Nedele");
break;
case 2:
Serial.println("Pondeli");
break;
case 3:
Serial.println("Utery");
break;
case 4:
Serial.println("Streda");
break;
case 5:
Serial.println("Ctvrtek");
break;
case 6:
Serial.println("Patek");
break;
case 7:
Serial.println("Sobota");
break;
}
}




void loop()
{
displayTime(); // display the real-time clock data on the Serial Monitor,
delay(1000); // every second
}
250w_gridfree
 
Příspěvky: 72
Registrován: pon zář 08, 2014 9:55 am
Reputation: 2

Re: Začátky s Arduinem

Příspěvekod rottenkiwi » úte kvě 19, 2015 1:00 pm

Ked to chcem vypisat do suboru na SD karte, ja to robim takto:

if ( Log_index == Max_buff )
{

// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
for ( int i = 0 ; i < Max_buff ; i++ )
{
for ( int j = 0 ; j < Max_sensor ; j++ )
{
dataFile.print( Log_buffer [i][j]);
dataFile.print(",");
}
dataFile.println ();
};

Log_index = 0;
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
Log_index = 0;
};


}

To znamena napisat si novu funkciu get_Time()
a namiesto Serial.print dat dataFile.print, kde dataFile je typu File
a este je dobre si tam zvolit nejaky buffer a ten cely zapisat na koniec suboru,
inac to budem zapisovat niekolko krát viac, a stále otvarat a zatvarat subor.
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1713
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: Začátky s Arduinem

Příspěvekod 250w_gridfree » úte kvě 19, 2015 1:37 pm

void get_Time()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
}

datum = get_Time();

Díky za snahu, zdroják je to pro mne velmi složitý... prozatím by mi stačilo pracovat s proměnnou, nemusí se rovnou zapisovat

lcd.print(datum); // očekávám na LCD 14:33:20 19/05/2015

ale vono furt nic.
250w_gridfree
 
Příspěvky: 72
Registrován: pon zář 08, 2014 9:55 am
Reputation: 2

Re: Začátky s Arduinem

Příspěvekod 250w_gridfree » úte kvě 19, 2015 4:56 pm

Takže už je šet a furt nic, bude to bez logu a jdu na pivo.... Ještě jsem se nikdy nebabral s něčím tak dlouho...
250w_gridfree
 
Příspěvky: 72
Registrován: pon zář 08, 2014 9:55 am
Reputation: 2

Re: Začátky s Arduinem

Příspěvekod Frenky » úte kvě 19, 2015 5:45 pm

250w_gridfree píše:Takže už je šet a furt nic, bude to bez logu a jdu na pivo.... Ještě jsem se nikdy nebabral s něčím tak dlouho...


A to je teprve začátek, mě trvalo cca půl roku každý den tak 3 hodiny, nežli jsem alespoň trochu tušil o čem si programátoři vlastně povídají. :lol:

Chce to hodně trpělivosti a hodně studia :D
Přeji aby obého se dostávalo a úspěch se zajisté dostaví :mrgreen:
2x Solární panel IBC Polysol 230 DS Pmpp=230W, Regulátor STUDER VT-80, Střídač Studer XTS 1200-24, BSP, RCC, AKU 24V LFP100AH – WB-LYP100AHA. 2x Aktivní balancer ON4-UTP 4x7A, Řizení a dohled microlog, SDS, vlastní vyčítání arduinem do RPi s databází a html stránkou. Dříve SIEMENS S7-1200 s PC na WINDOWS ala Netko.
http://frenky.dreamsys.cz/index.html
Uživatelský avatar
Frenky
 
Příspěvky: 631
Registrován: pon led 21, 2013 6:36 pm
Bydliště: Mladá Boleslav
Reputation: 46

Re: Začátky s Arduinem

Příspěvekod 250w_gridfree » úte kvě 19, 2015 6:00 pm

Nedalo mi to, došel jsem si do džbánku a hned se dostavily úspěchy, nyní sháním obdobu pro arduino, co bylo pro PHP $promenna = “rok” . “mesic” . “den”;

úspěšně jsem lokalizoval proměnné rok, mesic, den ---- jak je v arduinu spojit do jedné proměnné ? //předpokládám vysledek 150519

Díky... // taky su musím naučit používat ty ksiftíky :)
250w_gridfree
 
Příspěvky: 72
Registrován: pon zář 08, 2014 9:55 am
Reputation: 2

Re: Začátky s Arduinem

Příspěvekod ixo » úte kvě 19, 2015 6:05 pm

Najrýchlejšie je spýtať sa Googlu: https://www.google.sk/webhp?sourceid=ch ... %20strings
940 Wp, Pb OpZs 24V/300Ah, Tristar MPPT 60A, Meanwell 1 kW, PowerJack 5kW, Bratislava
Výkonnosť systému: http://homeinfo.sk/e?user=viktor
(Ne)návratnosť systému: http://tinyurl.com/cx74hkv
Zdieľaná databáza meničov: http://tinyurl.com/mx6gvsj
Uživatelský avatar
ixo
 
Příspěvky: 404
Registrován: stř říj 10, 2012 5:11 pm
Bydliště: Bratislava
Reputation: 14

Re: Začátky s Arduinem

Příspěvekod 250w_gridfree » úte kvě 19, 2015 6:25 pm

problém je, že mi to proměnné sečte a vyhazuje to "39"
250w_gridfree
 
Příspěvky: 72
Registrován: pon zář 08, 2014 9:55 am
Reputation: 2

Re: Začátky s Arduinem

Příspěvekod rottenkiwi » úte kvě 19, 2015 6:59 pm

Ak to chceme mat v jednej premennej, musi byt schopna to cislo uchovat, bez
nejakej hlasky: "bla bla overflow"
Ak je to taka premena a je kompatibilna s premennymi: rok, mesiac, den,
tak potom do premennej:
cely_Datum = rok * 10000 + mesiac * 100 + den;

a dame je vypisat bud na serial.print ( cely_Datum )
alebo dataFile.print ( cely_Datum)

alebo ked mame funkciu, ktora to zabrazi na LCD, tak napr.
vypis_na_LCD ( cely_Datum );

Ak by to neslo, tak este treba robit typecasting, nieco ako (long) premenna alebo (float) premenna.
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Zverák 787 Dreamliner Issue Ako žiť eko Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1713
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: Začátky s Arduinem

Příspěvekod 250w_gridfree » úte kvě 19, 2015 8:09 pm

Díky, s tím násobením je to dobrý nápad a funguje, v závislosti na čase mohu spouštět naplánované úkoly. jeden_den = hodina * 3600 + minuta * 60 + sekunda;
Atp.
250w_gridfree
 
Příspěvky: 72
Registrován: pon zář 08, 2014 9:55 am
Reputation: 2

Re: Začátky s Arduinem

Příspěvekod kodl69 » stř kvě 20, 2015 7:49 am

přetypování se to jmenuje, stálo mě to 6 hodin života při jiné příležitosti.
Pořád mi vycházelo 512*122= -3072 a ne 62464 . Pokud máme long a, int b,c, tak výsledek c=a*b přeteče, protože to bude int.... dokonce hodnota z analogovýho vstupu přepíše proměnou na int, ať je definováno cokoliv.
s přetypováním to vypadá takhle: c=(long)a * b - stačí přetypovat jednu proměnnou a je to správně. Jak je to při sčítání sem nezkoumal, ale není problém to přetypovat taky, a taky třeba na float, pokud se třeba dělí...
rottenkiwi to myslel původně jinak, že by vzniklo číslo,něco jako yymmddhhmmss což by do unsigned long vlezlo jistě, a dá se s tím pracovat, ale třeba počet sekund třeba od roku 1.1. 2010 je taky řešení - líp se plánují pravidelné operace.
ostrov 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2650
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 180

Re: Začátky s Arduinem

Příspěvekod 250w_gridfree » stř kvě 20, 2015 9:08 am

Jednoduchý čítač s využitím eeprom, zbývá integrovat do solárního regulátoru... Zatím se to při odpojení vynuluje.

#include <EEPROM.h> //knihovna eeprom
int stovky = EEPROM.read(9); //načteme hodnotu stovek
int desitky = EEPROM.read(10); // načteme hodnotu desítek
float suma;
float prirustek;
int ulozeno;



void setup()
{
Serial.begin(9600);
//EEPROM.write(9,000); //nulujeme eeprom
//EEPROM.write(10,000); //nulujeme eeprom
}


void loop(){
Serial.print("Hodnota stovky : "); //vypisujeme hodnoty
Serial.print(stovky);
Serial.print(" ");
Serial.print("Hodnota desitky : ");
Serial.print(desitky);
Serial.print(" ");
if (desitky >= 100) { //když jsou desítky větší nebo rovno 100, zvětšíme stovky o +1, stačilo by ale ==100 v zápisu
stovky += 1;
EEPROM.write(9,stovky); //zápis do eeprom
desitky = 0; // desitky pocitame od zacatku
}


if (prirustek >= 10) { // ta sama operace jako vyse, zvetsujeme desitky o +10 prirustkem
desitky += 10;
EEPROM.write(10,desitky);
prirustek = 0;
}



prirustek += 0.5; //zvetšeni prirustku - simulujeme vykon
Serial.print("Hodnota prirustek : ");
Serial.print(prirustek);
suma = stovky*100 + desitky + prirustek; //pocitame celkovy vykon
ulozeno = stovky*100 + desitky;
Serial.print(" A mame vysledek : ");
Serial.print(suma);
Serial.print(" Ale v pameti ulozeno : ");
Serial.println(ulozeno); // zachytny bod po deseti ulozen v eeprom
delay(500); // cekame 0.5 s a jdeme na zacatek loop


}


Ještě přidám funkci denního výkonu, tzn. přidat proměnnou vykon_den a tuto např o půlnoci vynulovat

Je to ale dřina... díky všem za podporu
250w_gridfree
 
Příspěvky: 72
Registrován: pon zář 08, 2014 9:55 am
Reputation: 2

Další

Zpět na Arduino

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

cron
Reputation System ©'