#include #include "button.h" #include "lcd.h" #include "leds.h" #include "term.h" struct terminal term; char message[] = "Beste Mart, van harte gefeliciteerd! \x01\x00\r\n" "Hier een herprogrammeerbare terminal. "; void setup() { Serial.begin(115200); lcd_setup(); leds_setup(); button_setup(); for (byte i = 0; i < ROWS * COLS; i++) term.contents[i] = ' '; for (byte i = 0; i < sizeof(message) - 1; i++) write(&term, message[i]); leds.a = LED_GRN | LED_BLINK; leds.b = LED_RED | LED_BLINK; leds.c = LED_GRN | LED_BLINK; leds.d = LED_RED | LED_BLINK; } enum read_state { S_DEFAULT, S_LED, S_BACKLIGHT }; enum read_state read_state; void handle_character(char c) { switch (read_state) { case S_DEFAULT: switch (c) { case '\x11': read_state = S_LED; break; case '\x12': read_state = S_BACKLIGHT; break; default: write(&term, c); break; } break; case S_LED: switch (c & 0x30) { case 0x00: leds.a = c & 0x0f; break; case 0x10: leds.b = c & 0x0f; break; case 0x20: leds.c = c & 0x0f; break; case 0x30: leds.d = c & 0x0f; break; } read_state = S_DEFAULT; break; case S_BACKLIGHT: bl_set((enum backlight_state) c); read_state = S_DEFAULT; break; } } void loop() { leds_tasks(); button_tasks(); bl_tasks(); while (Serial.available()) handle_character(Serial.read()); }