Advertisement
pippero

Untitled

Nov 6th, 2022
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 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[3];
  19. int count[3];
  20. int temp[3];
  21. char str[20];
  22. float val[2] ;
  23. };
  24. mydata dato;
  25.  
  26. byte stato = 0;
  27. unsigned long previousMillis = 0;
  28. const long interval = 500;
  29.  
  30. byte buff[100];
  31. int i = 0;
  32.  
  33. void setup() {
  34. lcd.begin();
  35. lcd.backlight();
  36. RS485Serial.begin(9600);
  37. Serial.begin(9600);
  38. pinMode(SSerialTxControl, OUTPUT);
  39. digitalWrite(SSerialTxControl, RS485Receive);
  40. }
  41.  
  42.  
  43.  
  44. void loop() {
  45. if (millis() - previousMillis >= interval) {
  46. previousMillis += interval;
  47. digitalWrite(SSerialTxControl, RS485Transmit);
  48. RS485Serial.write(stato ); //produce una sequenza: 0, 1, 2
  49. digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit
  50. if (stato < 5) stato = stato + 1;
  51. else stato = 0;
  52. }
  53.  
  54. if (stato == 0) {
  55. if (RS485Serial.available()) {
  56. lcd.clear();
  57. byte n = RS485Serial.read();
  58. if ((char)n == '\n') {
  59. memcpy(&dato, buff, i);
  60. Serial.print(stato); Serial.println(" stato");
  61. Serial.print(dato.cmd[1]); Serial.print(" - ");
  62. Serial.print(dato.count[1]); Serial.print(" - ");
  63. Serial.print(dato.val[1]); Serial.print(" - ");
  64. Serial.print(dato.temp[1]); Serial.print("\n");
  65. Serial.print(dato.str); Serial.print("\n");
  66. Serial.print("ricevuti: "); Serial.println("bytes END");
  67.  
  68. lcd.setCursor(0, 0); lcd.print(dato.cmd[1]);
  69. lcd.setCursor(6, 0); lcd.print(dato.val[1], 2);
  70. lcd.setCursor(0, 1); lcd.print(dato.count[1]);
  71. lcd.setCursor(0, 2); lcd.print(dato.temp[1]);
  72. lcd.setCursor(6, 1); lcd.print(dato.val[0]);
  73. lcd.setCursor(0, 3); lcd.print(dato.str);
  74. lcd.setCursor(12, 0); lcd.print("ricevuti");
  75. lcd.setCursor(12, 1); lcd.print(i);
  76. lcd.setCursor(15, 1); lcd.print("byte");
  77. i = 0;
  78. } else {
  79. buff[i] = n;
  80. i++;
  81. }
  82. }
  83. }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement