Restructure
[liquid-crystal-terminal.git] / terminal / lcd.ino
diff --git a/terminal/lcd.ino b/terminal/lcd.ino
new file mode 100644 (file)
index 0000000..61c352c
--- /dev/null
@@ -0,0 +1,38 @@
+#include "lcd.h"
+
+struct backlight backlight;
+
+void lcd_setup(void)
+{
+       lcd.createChar(0, char_music);
+       lcd.createChar(1, char_smile);
+
+       lcd.begin(COLS, ROWS);
+       lcd.blink();
+
+       pinMode(LCD_BL, OUTPUT);
+}
+
+void bl_tasks(void)
+{
+       if (backlight.state == BL_FLASH)
+               if (!--backlight.timer)
+                       backlight.state = BL_OFF;
+
+       switch (backlight.state) {
+               case BL_OFF:
+                       digitalWrite(LCD_BL, 0);
+                       break;
+               case BL_FLASH:
+               case BL_ON:
+                       digitalWrite(LCD_BL, 1);
+                       break;
+       }
+}
+
+void bl_set(enum backlight_state state)
+{
+       backlight.state = state;
+       if (state == BL_FLASH)
+               backlight.timer = (unsigned int) -1;
+}