Advertisement
pippero

Untitled

Nov 6th, 2022
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2.  
  3.  
  4.  
  5. #define SSerialRX 9
  6. #define SSerialTX 8
  7. #define SSerialTxControl 7
  8. #define RS485Transmit HIGH
  9. #define RS485Receive LOW
  10.  
  11. SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX
  12.  
  13. #include <LiquidCrystal_I2C.h>
  14. LiquidCrystal_I2C lcd(0x27, 20, 4);
  15.  
  16.  
  17. struct mydata {
  18. int cmd;
  19. int count;
  20. int temp;
  21. char str[20];
  22. };
  23. mydata dato;
  24.  
  25. byte stato = 0;
  26. unsigned long previousMillis = 0;
  27. const long interval = 300;
  28.  
  29. byte buff[20];
  30. int i = 0;
  31.  
  32. void setup() {
  33. lcd.begin();
  34. lcd.backlight();
  35. RS485Serial.begin(4800);
  36. Serial.begin(9600);
  37. pinMode(SSerialTxControl, OUTPUT);
  38. digitalWrite(SSerialTxControl, RS485Receive);
  39. }
  40.  
  41.  
  42.  
  43. void loop() {
  44.  
  45. unsigned long currentMillis = millis();
  46. if (currentMillis - previousMillis >= interval) {
  47. previousMillis = currentMillis;
  48. digitalWrite(SSerialTxControl, RS485Transmit);
  49. int a = (stato % 3);
  50. RS485Serial.write( a ); //produce una sequenza: 0, 1, 2
  51. digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit
  52. stato++;
  53.  
  54. }
  55. if (RS485Serial.available()) {
  56.  
  57.  
  58.  
  59. byte n = RS485Serial.read();
  60. if ((char)n == '\n') {
  61. Serial.println(n);
  62.  
  63. memcpy(&dato, buff, i);
  64. Serial.print(dato.cmd); Serial.print(" - ");
  65. Serial.print(dato.count); Serial.print(" - ");
  66. Serial.print(dato.temp); Serial.print("\n");
  67. Serial.print(dato.str); Serial.print("\n");
  68.  
  69. lcd.setCursor(0, 0);
  70. lcd.print(dato.cmd); lcd.print(" - ");
  71. lcd.setCursor(0, 1);
  72. lcd.print(dato.count); lcd.print(" - ");
  73. lcd.setCursor(0, 2);
  74. lcd.print(dato.temp); lcd.print(" - ");
  75. lcd.setCursor(0, 3);
  76. lcd.print(dato.str); lcd.print(" - ");
  77.  
  78. lcd.setCursor(10, 0);
  79. lcd.print("ricevuti: ");
  80. lcd.setCursor(13, 1);
  81. lcd.print(i);
  82. lcd.setCursor(10, 2);
  83. lcd.print("bytes END");
  84. i = 0;
  85. } else {
  86. buff[i] = n;
  87. i++;
  88. }
  89. }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement