#include #include #define LINE_LENGTH 16 #define BUF_LENGTH 64 LiquidCrystal_I2C lcd(0x3F, LINE_LENGTH, 2); static char input_buf[BUF_LENGTH]; static int input_i = 0; void setup() { lcd.init(); //initialize the lcd lcd.backlight(); //open the backlight Serial.begin(9600); } void update_screen() { char line1[LINE_LENGTH+1]; char line2[LINE_LENGTH+1]; int n; n = sscanf(input_buf, "%[^;];%[^;]", line1, line2); lcd.clear(); switch (n) { case 2: // line2 (optional) lcd.setCursor(0, 1); lcd.print(line2); case 1: // line1 lcd.setCursor(0, 0); lcd.print(line1); break; case 0: default: lcd.setCursor(0, 0); lcd.print("Error!"); break; } } void loop() { char c; if (Serial.available()) { c = Serial.read(); if (input_i == BUF_LENGTH-1 || c == '\n') { input_buf[input_i] = '\0'; input_i = 0; update_screen(); } else { input_buf[input_i] = c; input_i++; } } }