2X Arduino + TX/RX + prenos cisel
2X Arduino + TX/RX + prenos cisel
Ahojte, nikde jsem to tu nenasel, takze posledni zachrana ... nekomu zvednout tlak, jestli to tu nekde je, prosim link, at se neprobira 10x
PROSIM, jednim A-Mega merim 16 hodnot na vsech A0-A15. Funguje, mam 16 cisel, trimistnych.
Potreboval bych to v nekolikasekundovem taktu presypat pres TX/RX do centralniho A-Mega.
Nasel jsem na inetu nekolik prikladu, at uz s pouzitim I2C nebo Tx/Rx (toto by s ohledem na obsazene piny vyhovovalo vic), ale pokud mi poradite komunikaci pres I2C klidne (tam na centrale visi voltmetr), ale jestli tomu spravne rozumim, ciste teoreticky by to vadit nemelo, ... jenze ja uz vim, ze teorie je jedna vec, praxe druha.
Jenze vsechny priklady prenaseji 1 nebo 2 , nebo jen pismenko H a L. Priklady mi funguji, ale dam s tim pohnout neumim. Poradi nekdo? diky predem
PROSIM, jednim A-Mega merim 16 hodnot na vsech A0-A15. Funguje, mam 16 cisel, trimistnych.
Potreboval bych to v nekolikasekundovem taktu presypat pres TX/RX do centralniho A-Mega.
Nasel jsem na inetu nekolik prikladu, at uz s pouzitim I2C nebo Tx/Rx (toto by s ohledem na obsazene piny vyhovovalo vic), ale pokud mi poradite komunikaci pres I2C klidne (tam na centrale visi voltmetr), ale jestli tomu spravne rozumim, ciste teoreticky by to vadit nemelo, ... jenze ja uz vim, ze teorie je jedna vec, praxe druha.
Jenze vsechny priklady prenaseji 1 nebo 2 , nebo jen pismenko H a L. Priklady mi funguji, ale dam s tim pohnout neumim. Poradi nekdo? diky predem
Re: 2X Arduino + TX/RX + prenos cisel
Naměřené hodnoty si ukládej do pole.
EDIT: tedy pokud se ta trojmístná čísla vejdou do rozsahu byte. Jinak si ty inty rozlož na byty a přepočítej velikost buff.
Pak je pošli po serialu:
https://www.arduino.cc/reference/en/lan ... ial/write/
Na druhém načti:
https://www.arduino.cc/reference/en/lan ... readbytes/
Kód: Vybrat vše
byte buff[16];
Pak je pošli po serialu:
https://www.arduino.cc/reference/en/lan ... ial/write/
Kód: Vybrat vše
Serial.write(buff, 16);
https://www.arduino.cc/reference/en/lan ... readbytes/
Re: 2X Arduino + TX/RX + prenos cisel
prosim te jsem lama.
tohle mi dal nepomuze. az kdyz mam prikladek, tusim co se deje, dokazu upravit dal.
tvoje linky potrebuji opet poradnou porci dalsich znalosti, ktere nemam. bohuzel.
z techhle prikladku se snazim odpichnout. posle to 1 nebo 2, a na druhym konci zhasne nebo rozne ledka.
jak poslu cislo 330 nevim.
mam vysilac - priklad:
prikad prijimac:
tohle mi dal nepomuze. az kdyz mam prikladek, tusim co se deje, dokazu upravit dal.
tvoje linky potrebuji opet poradnou porci dalsich znalosti, ktere nemam. bohuzel.
z techhle prikladku se snazim odpichnout. posle to 1 nebo 2, a na druhym konci zhasne nebo rozne ledka.
jak poslu cislo 330 nevim.
mam vysilac - priklad:
Kód: Vybrat vše
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
String readString;
String Q;
//-------------------------------Check Serial Port---------------------------------------
while (Serial1.available()){
delay(1);
if(Serial1.available()>0){
char c = Serial1.read();
Serial.print(c);
if (isControl(c)){
break;
}
}
}
while (Serial.available()) {
delay(1);
if (Serial.available() >0) {
char c = Serial.read(); //gets one byte from serial buffer
if (isControl(c)) {
//'Serial.println("it's a control character");
break;
}
readString += c; //makes the string readString
}
}
Q = readString;
//--------Checking Serial Read----------
if(Q=="on"){
Serial1.print("1");
Serial.println("Sent:On");
}
if(Q=="off"){
Serial1.print("2");
Serial.println("Sent:Off");
}
}
prikad prijimac:
Kód: Vybrat vše
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
String readString;
String Q;
//-------------------------------Check Serial Port---------------------------------------
while (Serial.available()) {
delay(1);
if (Serial.available() >0) {
char c = Serial.read(); //gets one byte from serial buffer
if (isControl(c)) {
//'Serial.println("it's a control character");
break;
}
readString += c; //makes the string readString
}
}
Q = readString;
//--------Checking Serial Read----------
if(Q=="1"){
digitalWrite(13,HIGH);
}
if(Q=="2"){
digitalWrite(13,LOW);
}
}
Re: 2X Arduino + TX/RX + prenos cisel
snazim se pochopit, cos napsal ... hele jsem mimo.
snad jen to s tim byte... koukal jsem, ze byte je cislo 0-255
tj moje hodnoty nabyvaji 250-360 (= 2,50V - 3,60V)
takze kdyz by se od nich odecetlo 150, pak hodnoty byly 100-210 ... pak by to s tim byte bylo pruchozi, a na druhy strane zas 150 prictu.
a jo, nacpat to do indexovane promenne cislo[16], to zvladnu
ale s tema funkcema fakt nehnu
snad jen to s tim byte... koukal jsem, ze byte je cislo 0-255
tj moje hodnoty nabyvaji 250-360 (= 2,50V - 3,60V)
takze kdyz by se od nich odecetlo 150, pak hodnoty byly 100-210 ... pak by to s tim byte bylo pruchozi, a na druhy strane zas 150 prictu.
a jo, nacpat to do indexovane promenne cislo[16], to zvladnu
ale s tema funkcema fakt nehnu
Re: 2X Arduino + TX/RX + prenos cisel
dobre tak jinak:
je tu nekdo, kdo za prachy posle 2x 20 radku programu, kde prenesu
16x cislo od 250-360 z jednoho do druhyho arduina po Tx/Rx ??
diky moc, dal asi pres PM (nebo info@quadprofi.cz)
je tu nekdo, kdo za prachy posle 2x 20 radku programu, kde prenesu
16x cislo od 250-360 z jednoho do druhyho arduina po Tx/Rx ??
diky moc, dal asi pres PM (nebo info@quadprofi.cz)
Re: 2X Arduino + TX/RX + prenos cisel
pro vysílač
pro přjímač
PS: kód vkládej pomocí tagu code ... takova ikonka </>
Kód: Vybrat vše
byte buff[16]; // buffer pro data, vytvoř ho ještě před setupem
//pak ho ve vysílači musíš nakrmit daty
//buff[0] = dataCidlo1;
//..
//buff[15] = dataCidlo16;
//a pak všechny tyhle data můžeš jednoduše poslat linkou ven
Serial.write(buff, 16); // zapíše do seriové linky všechno z bufferu a omezí na 16byte
Kód: Vybrat vše
byte buff[16]; // buffer pro data, vytvoř ho ještě před setupem
//pak ho musíš nakrmit daty
Serial.readBytes(buff, 16); // čti seriovou linku po 16bytech a nasyp ji do bufferu - bacha na timeout, jak nedorazí všech 16 za sekundu to zahodí
// a tim dostanes zpatky to co vysílač vyslal
//buff[0] = dataCidlo1;
//..
//buff[15] = dataCidlo16;
Re: 2X Arduino + TX/RX + prenos cisel
diky moc, zkusim to, sice zatim tusim
PS: tomu PS nerozumim vubec. pisu kod arduino IDE, ne html kod.
PS: tomu PS nerozumim vubec. pisu kod arduino IDE, ne html kod.
Re: 2X Arduino + TX/RX + prenos cisel
mel bych k danemu tematu otazku:
v prikladu vysilace je nahore:
v prikladu prijimace je nahore:
prijata data bych chtel vypsat pres usb na monitoru prijimace (v tomto pripade A-Uno), coz se mi nedari
A když nahoru do programu pripisu
Serial1.begin(9600); tak to pri kompilaci hazi chybu, a pise to : 'Serial1' was not declared in this scope
jaktoze tam vysilac muze mit Serial i Serial1, a na strane prijimace to nejde?
v prikladu vysilace je nahore:
Kód: Vybrat vše
Serial.begin(9600); ... tomu rozumím, že to spusteni komunikace do usb konektoru pro monitor
Serial[b]1[/b].begin(9600); ... tomu rozumim, že to je komunikace po TX[b]1[/b]/RX[b]1[/b]
Kód: Vybrat vše
pinMode(13,OUTPUT);
Serial.begin(9600); ... tohle by tedy melo aktivovat usb port, tak jaktoze to do pr**le funguje po tx/rx ??
A když nahoru do programu pripisu
Serial1.begin(9600); tak to pri kompilaci hazi chybu, a pise to : 'Serial1' was not declared in this scope
jaktoze tam vysilac muze mit Serial i Serial1, a na strane prijimace to nejde?
Re: 2X Arduino + TX/RX + prenos cisel
https://www.arduino.cc/reference/en/lan ... on/serial/
Některé čipy mají více sériových linek, je tam tabulka. Nemám tucha jak u ostatních desek ale u uno, nano, mega jsou piny 0 a 1 přivedeny na RS232 USB převodník. Pokud chceš logovat data z USB a zároveň komunikovat mezi deskama, tak logování nech na Serial a komunikaci zapoj na Serial1.
U UNA budeš potřebovat knihovnu softwareSerial ... funguje jen na některých pinech ... ta ti udělá druhou seriovou linku.
Nebo zkus zapojit jen pin z Mega Tx to UNO Rx ... To by pak mělo umět komunikovat svým Tx pinem směr PC ...
Některé čipy mají více sériových linek, je tam tabulka. Nemám tucha jak u ostatních desek ale u uno, nano, mega jsou piny 0 a 1 přivedeny na RS232 USB převodník. Pokud chceš logovat data z USB a zároveň komunikovat mezi deskama, tak logování nech na Serial a komunikaci zapoj na Serial1.
U UNA budeš potřebovat knihovnu softwareSerial ... funguje jen na některých pinech ... ta ti udělá druhou seriovou linku.
Nebo zkus zapojit jen pin z Mega Tx to UNO Rx ... To by pak mělo umět komunikovat svým Tx pinem směr PC ...
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 45 hostů