duinozone.cz - Arduino a Raspberry fórum

Autor Téma: komunikacia medzi arduinami  (Přečteno 1333 krát)

Offline radoslav

  • Bastlíř začátečník
  • *
  • Příspěvků: 41
komunikacia medzi arduinami
« kdy: Březen 06, 2017, 22:57:23 odpoledne »
Zdravim
mam dve arduina z jedneho potrebujem poslat do druheho teploty pricom ten vysielaci bude 18b20 iba citat a posielat ich cez   TX a ten druhy by ich mal vediet precitat a pracovat z tymi hodnotami. ako spravit kod vo visielaci a v primaci? googlil som a nejako som nevedel dat nic dokopy.  :-\

dakujem za rady


Offline astromik

  • Pokročilý bastlíř
  • ***
  • Příspěvků: 116
Re:komunikacia medzi arduinami
« Odpověď #1 kdy: Březen 07, 2017, 15:55:34 odpoledne »
Zkusil bych na tom vysílacím Arduinu použít obyčejné Serial.print() a na tom přijímacím Arduinu Serial.available().

Odkazy:
  https://www.arduino.cc/en/Serial/Print
  https://www.arduino.cc/en/Serial/Available


Offline radoslav

  • Bastlíř začátečník
  • *
  • Příspěvků: 41
Re:komunikacia medzi arduinami
« Odpověď #2 kdy: Březen 08, 2017, 09:10:25 dopoledne »
toto som nasiel aj ja ale ono by pomohlo nejaky funkcny priklad na ktorom by som sa naucil to spravne pouzivat.
Serial.print poznam ale co v primacom ? v primacom som zatial skusil primat data a posielat ich do pc to mi funguje, ale ako vybrat nejaku konkretnu teplotu / hodnotu z viacerych a pracovat s nou v primacom arduine?

Dakujem

Offline K.K

  • Bastlíř amatér
  • **
  • Příspěvků: 87
Re:komunikacia medzi arduinami
« Odpověď #3 kdy: Březen 11, 2017, 07:57:18 dopoledne »
ale ako vybrat nejaku konkretnu teplotu / hodnotu z viacerych a pracovat s nou v primacom arduine?

Tak si musiš posilat něco podle čeho poznaš na druhe straně co je to za teplotu, ne?
Serial.println("Cidlo_01,"+ sensors.getTempC(Thermometer1));
Serial.println("Cidlo_02,"+ sensors.getTempC(Thermometer2));

Pak to přijmeš a zpracuješ třeba takto.

if (stringOne. startsWith ("Cidlo_01", 0)) {
Serial.println("Nasel jsem Cidlo_01 ");
Cidlo_01 = stringOne.substring(9); // od 9 pozice do konce
}
« Poslední změna: Březen 11, 2017, 08:01:17 dopoledne od K.K »

Offline radoslav

  • Bastlíř začátečník
  • *
  • Příspěvků: 41
Re:komunikacia medzi arduinami
« Odpověď #4 kdy: Březen 11, 2017, 14:49:54 odpoledne »
no tak z tohto zase nic neviem potreboval by som kompletny kod. Zacinam z programovanim cize z  nejakeho strucneho vycucu sa neviem vysomarit  :-\

bol by som velmi vdacny keby mi z tym vedel niekto pomoct

Offline radoslav

  • Bastlíř začátečník
  • *
  • Příspěvků: 41
Re:komunikacia medzi arduinami
« Odpověď #5 kdy: Březen 18, 2017, 10:11:53 dopoledne »
nikto ziadne skusenosti? :-\

Offline K.K

  • Bastlíř amatér
  • **
  • Příspěvků: 87
Re:komunikacia medzi arduinami
« Odpověď #6 kdy: Březen 18, 2017, 11:29:47 dopoledne »
To odesilaní s arduina maš třeba tady.
http://arduino-project.net/podklyuchenie-ds18b20-arduino/

Jen to odesilaní bych upravil.

Serial.println("Cidlo_01,"+ Thermometer1);
Serial.println("Cidlo_02,"+ Thermometer2);

Offline radoslav

  • Bastlíř začátečník
  • *
  • Příspěvků: 41
Re:komunikacia medzi arduinami
« Odpověď #7 kdy: Březen 18, 2017, 18:19:37 odpoledne »
odosielanie mam spravene nasledovne :

 if (senzor_teplota_1.getTempCByIndex(0)+0.3 < -125.0) {
    Serial.println("err_001");
  } else {
    Serial.print("t1=");
    Serial.println(senzor_teplota_1.getTempCByIndex(0)+0.3);

ale co v primacom? potrebujem v primacom  pracovat z hodnotami  konkretneho teplotneho senzoru len neviem ako. citat tieto hodnoty v primacom a posielat ich cez usb do pc ide.

Serial.println("t1="+ senzor_teplota_1.getTempCByIndex(0)+0.3); mi nejako nefunguje vyhadzuje chybu na tom riadku.

Offline K.K

  • Bastlíř amatér
  • **
  • Příspěvků: 87
Re:komunikacia medzi arduinami
« Odpověď #8 kdy: Březen 19, 2017, 07:34:51 dopoledne »
if (sensors.getTempCByIndex(0)+0.3 < -125.0) {
    Serial.println("err_001");
  } else {
    Serial.print("t1=");
    Serial.println(sensors.getTempCByIndex(0)+0.3);
}   


V neděli ráno mi to moc nemysli a nějak mi to medová smysl.

Ty si načteš hodnotu s čidla
if (sensors.getTempCByIndex(0)+0.3 < -125.0)
a pak jí znovu s čidla načítáš a posíláš ven.
Serial.println(sensors.getTempCByIndex(0)+0.3);

Načti si hodnotu s čidla do float a pak s ní pracuj.

float  teplota
teplota = sensors.getTempCByIndex(0);

Bych se vykašlal na nějake podminky a řešení chyb v přijimacím arduinu.
To co dostanu s čidla bych hned odesilal.
Zbytek bych řešíl už v přijimacím radiu

Takovým způsobem však mužeš ke knihovně DallasTemperature přistupovat, pokud máš k arduinu připichle jen jedno čidlo.
Jak čtu Tvůj druhý příspěvek, tak máš vice čidel.
Jak jsem psal dřív.
Tady je jednoduché řešení, které musíš zvládnout i Ty
http://arduino-project.net/podklyuchenie-ds18b20-arduino/
« Poslední změna: Březen 19, 2017, 07:46:14 dopoledne od K.K »

Offline radoslav

  • Bastlíř začátečník
  • *
  • Příspěvků: 41
Re:komunikacia medzi arduinami
« Odpověď #9 kdy: Březen 19, 2017, 09:58:35 dopoledne »
Tak som zaciatocnik ucim sa to iba kratko nikdy predtym som taketo nieco nerobyl a vzdy ma to lakalo anglictinu tiez moc neovladam takze mam to docela tazke.  float pisat az v loop alebo este v setup? Tie senzory mam ich viac a kazdy pichnuty do zvlast vstupu kedze sa mi moc nechce babrat z adresami senzorou za druhe by som si kazdy musel oznacit na co sluzi  a v pripade poruchy by som musel znova prepisat adresu. Alebo som tomu pochopil zle?   ???

Offline radoslav

  • Bastlíř začátečník
  • *
  • Příspěvků: 41
Re:komunikacia medzi arduinami
« Odpověď #10 kdy: Březen 20, 2017, 10:30:41 dopoledne »
takze posielam z vysielacieho arduina teploty v tvare:
t1_20.00
t2_20.00
...

v primacom tieto hodnoty vydim neviem ako vyselektovat konkretnu teplotu trebarz t2 a nadstavit si na nu teplotu napriklad rele z nejakou hystereziou?

Offline K.K

  • Bastlíř amatér
  • **
  • Příspěvků: 87
Re:komunikacia medzi arduinami
« Odpověď #11 kdy: Březen 20, 2017, 20:16:59 odpoledne »
To už jsem tu psal.

Citace
Pak to přijmeš a zpracuješ třeba takto.

if (stringOne. startsWith ("Cidlo_01", 0)) {
Serial.println("Nasel jsem Cidlo_01 ");
Cidlo_01 = stringOne.substring(9); // od 9 pozice do konce
}

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:komunikacia medzi arduinami
« Odpověď #12 kdy: Březen 20, 2017, 22:28:34 odpoledne »
radoslave nechci te podcenovat ale ukrojil sis trochu vetsi krajic. tohle neni slozite ale musis myslet jako stroj. v realnem zivote ti spousta veci prijde jasna ale rict stroji jak to ma chapat ...  myslim ze z toho prikladu od k.k. tu hodnotu teploty vidis a jsi schopen rict ktere cidlo ma jakou teplotu.  na zacatku vidis t1 pak podtrzitko a ciselnou hodnotu. tak to uplne stejne udelej v programu. k.k. ti to uz ukazoval jak si zjistit o jakem cidle se bavis. to je ten priklad if(stringone... znamena to : jestli je na zacatku text "cidlo1"  tak napis "nasel jsem cidlo1".
u tebe budes hledat text "T1" na zacatku textu. bacha na velky/maly pismena. kdyz na zacatku textu najdes "T1" pak musi udelat to ze oriznes text o vsechno pred podtrzitkem vcetne podtrzitka. pak ten text musis zkonvertovat do cisla. jsou to vsechno zaklady. podivej se do referncni prirucky arduina ...

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:komunikacia medzi arduinami
« Odpověď #13 kdy: Březen 20, 2017, 22:30:19 odpoledne »

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:komunikacia medzi arduinami
« Odpověď #14 kdy: Březen 20, 2017, 22:32:05 odpoledne »