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;
- int count;
- int temp;
- char str[20];
- };
- mydata dato;
- byte stato = 0;
- unsigned long previousMillis = 0;
- const long interval = 300;
- byte buff[20];
- int i = 0;
- void setup() {
- lcd.begin();
- lcd.backlight();
- RS485Serial.begin(4800);
- Serial.begin(9600);
- pinMode(SSerialTxControl, OUTPUT);
- digitalWrite(SSerialTxControl, RS485Receive);
- }
- void loop() {
- unsigned long currentMillis = millis();
- if (currentMillis - previousMillis >= interval) {
- previousMillis = currentMillis;
- digitalWrite(SSerialTxControl, RS485Transmit);
- int a = (stato % 3);
- RS485Serial.write( a ); //produce una sequenza: 0, 1, 2
- digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit
- stato++;
- }
- if (RS485Serial.available()) {
- byte n = RS485Serial.read();
- if ((char)n == '\n') {
- Serial.println(n);
- memcpy(&dato, buff, i);
- Serial.print(dato.cmd); Serial.print(" - ");
- Serial.print(dato.count); Serial.print(" - ");
- Serial.print(dato.temp); Serial.print("\n");
- Serial.print(dato.str); Serial.print("\n");
- lcd.setCursor(0, 0);
- lcd.print(dato.cmd); lcd.print(" - ");
- lcd.setCursor(0, 1);
- lcd.print(dato.count); lcd.print(" - ");
- lcd.setCursor(0, 2);
- lcd.print(dato.temp); lcd.print(" - ");
- lcd.setCursor(0, 3);
- lcd.print(dato.str); lcd.print(" - ");
- lcd.setCursor(10, 0);
- lcd.print("ricevuti: ");
- lcd.setCursor(13, 1);
- lcd.print(i);
- lcd.setCursor(10, 2);
- lcd.print("bytes END");
- i = 0;
- } else {
- buff[i] = n;
- i++;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement