Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #define SSerialRX 9
- #define SSerialTX 8
- #define SSerialTxControl 7
- #define RS485Transmit HIGH
- #define RS485Receive LOW
- SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 20, 4);
- struct mydata {
- int cmd[3];
- int count[3];
- int temp[3];
- char str[20];
- float val[2] ;
- };
- mydata dato;
- byte stato = 0;
- unsigned long previousMillis = 0;
- const long interval = 500;
- byte buff[100];
- int i = 0;
- void setup() {
- lcd.begin();
- lcd.backlight();
- RS485Serial.begin(9600);
- Serial.begin(9600);
- pinMode(SSerialTxControl, OUTPUT);
- digitalWrite(SSerialTxControl, RS485Receive);
- }
- void loop() {
- if (millis() - previousMillis >= interval) {
- previousMillis += interval;
- digitalWrite(SSerialTxControl, RS485Transmit);
- RS485Serial.write(stato ); //produce una sequenza: 0, 1, 2
- digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit
- if (stato < 5) stato = stato + 1;
- else stato = 0;
- }
- if (stato == 0) {
- if (RS485Serial.available()) {
- lcd.clear();
- byte n = RS485Serial.read();
- if ((char)n == '\n') {
- memcpy(&dato, buff, i);
- Serial.print(stato); Serial.println(" stato");
- Serial.print(dato.cmd[1]); Serial.print(" - ");
- Serial.print(dato.count[1]); Serial.print(" - ");
- Serial.print(dato.val[1]); Serial.print(" - ");
- Serial.print(dato.temp[1]); Serial.print("\n");
- Serial.print(dato.str); Serial.print("\n");
- Serial.print("ricevuti: "); Serial.println("bytes END");
- lcd.setCursor(0, 0); lcd.print(dato.cmd[1]);
- lcd.setCursor(6, 0); lcd.print(dato.val[1], 2);
- lcd.setCursor(0, 1); lcd.print(dato.count[1]);
- lcd.setCursor(0, 2); lcd.print(dato.temp[1]);
- lcd.setCursor(6, 1); lcd.print(dato.val[0]);
- lcd.setCursor(0, 3); lcd.print(dato.str);
- lcd.setCursor(12, 0); lcd.print("ricevuti");
- lcd.setCursor(12, 1); lcd.print(i);
- lcd.setCursor(15, 1); lcd.print("byte");
- i = 0;
- } else {
- buff[i] = n;
- i++;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement