Advertisement
ArduinoCz

35 - vysliac protokol

Feb 7th, 2015
24,753
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.75 KB | None | 0 0
  1.  
  2. #include <SoftwareSerial.h> // inicializijeme knihovnu
  3.  
  4. #define SSerialRX        10  //Serial Receive pin
  5. #define SSerialTX        11  //Serial Transmit pin
  6.  
  7. #define SSerialTxControl 3   // RS modul pin 3
  8.  
  9. // vytvorime seriovy port na pinu 10 a 11 se jménem RS485Serial
  10. SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX
  11.  
  12. // moje adresa, aby prijmac poznal od koho jsou hodnoty
  13. // můžete zvolit jakékoliv čislo od 2 do 255
  14. byte myAddress = 8;
  15. // buffer pro funkci převodu čísla na text  
  16.  
  17. char buff[10];
  18.  
  19.  
  20. void setup()  
  21. {
  22.   // Inicializujeme seriový port na klasickém pin 0 a 1 (TX a RX)
  23.   Serial.begin(9600);
  24.  
  25.   // nastartujeme software serial
  26.   RS485Serial.begin(14400);
  27. }
  28.  
  29.  
  30. void loop()  {
  31.  
  32.   // preved na text do promenné buffer
  33.   // analogovou hodnotu z A0
  34.   sprintf (buff,"%d", analogRead(A0));
  35.   // odešli data pomocí funkce SendData
  36.   SendData(1, 1,buff); // SendData(adresát, cislo promenné, data v char[])
  37.   //SendData(1, 2, "Ahoj lidi"); // mužete odeslat i text jaký chcete
  38.  
  39.  
  40.    
  41.   delay(3600); // v jakém inervrvalu se data budou odesílat  
  42. }
  43.  
  44. ///////////////////////////////////////////////////////
  45. // deklarace funkce které data v určitém formátu odešle
  46. void SendData(byte address, byte var, char data[]){
  47.  
  48.  digitalWrite(SSerialTxControl, 1); // mod odesílání
  49.  RS485Serial.write(0x02); //start byte
  50.  RS485Serial.write(address); // ardesat (komu odesíláme) - u primece neni vyuzito
  51.  RS485Serial.write(myAddress); //moje adresa - od koho to prijmaci doslo
  52.  RS485Serial.write(var); // ocislovaní promenné
  53.  RS485Serial.write(data); // hodnota nebo data
  54.  RS485Serial.write(0x03); // stop byte
  55.  digitalWrite(SSerialTxControl, 0); // konec modu odelilaní
  56.  
  57.  
  58.  
  59.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement