Stránka 1 z 7

2X Arduino + TX/RX + prenos cisel

Napsal: 09 úno 2022, 14:55
od Viktor_EX
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

Re: 2X Arduino + TX/RX + prenos cisel

Napsal: 09 úno 2022, 15:06
od KamilV
Naměřené hodnoty si ukládej do pole.

Kód: Vybrat vše

byte buff[16];
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/

Kód: Vybrat vše

Serial.write(buff, 16);
Na druhém načti:
https://www.arduino.cc/reference/en/lan ... readbytes/

Re: 2X Arduino + TX/RX + prenos cisel

Napsal: 09 úno 2022, 15:13
od Viktor_EX
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:

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

Napsal: 09 úno 2022, 15:37
od Viktor_EX
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

Re: 2X Arduino + TX/RX + prenos cisel

Napsal: 09 úno 2022, 15:45
od Viktor_EX
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)

Re: 2X Arduino + TX/RX + prenos cisel

Napsal: 09 úno 2022, 15:52
od kiRRow
pro vysílač

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
pro přjímač

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;
PS: kód vkládej pomocí tagu code ... takova ikonka </>

Re: 2X Arduino + TX/RX + prenos cisel

Napsal: 09 úno 2022, 16:09
od Viktor_EX
diky moc, zkusim to, sice zatim tusim

PS: tomu PS nerozumim vubec. pisu kod arduino IDE, ne html kod.

Re: 2X Arduino + TX/RX + prenos cisel

Napsal: 09 úno 2022, 16:46
od kiRRow
code.png
code.png (4.5 KiB) Zobrazeno 3144 x

Re: 2X Arduino + TX/RX + prenos cisel

Napsal: 09 úno 2022, 16:52
od Viktor_EX
mel bych k danemu tematu otazku:

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]
v prikladu prijimace je nahore:

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 ??
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?

Re: 2X Arduino + TX/RX + prenos cisel

Napsal: 09 úno 2022, 17:24
od kiRRow
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 ...