/** * MAPID/CP * * Malte's Arduino-Powered Info Display Control Program */ #include #include #include #include #include "boards.h" #include "config.h" #include "readme.h" #ifndef README_PROGMEM #pragma warning "README_PROGMEM not set. The command README will not work." #endif SerialCommand SCmd; serLCD lcd(PIN_LCD); int line; void setup() { pinMode(PIN_LED, OUTPUT); digitalWrite(PIN_LED, LOW); Serial.begin(TTY_SPEED); while (!Serial); Serial.print("Booting..."); // Generic SCmd.addCommand("VER", showVersion); SCmd.addCommand("GETTY", showGetty); SCmd.addCommand("HELP", help); // LED SCmd.addCommand("ON", ledOn); SCmd.addCommand("OFF", ledOff); // LCD SCmd.addCommand("LCDON", lcdOn); SCmd.addCommand("LCDOFF", lcdOff); SCmd.addCommand("ECHO", lcdEcho); SCmd.addCommand("CLS", lcdClear); SCmd.addCommand("LINE", lcdLine); // Show README SCmd.addCommand("README", showReadMe); SCmd.setDefaultHandler(commandNotFound); Serial.println("Ready."); Serial.print("Running "); Serial.print(OS_NAME); Serial.print(" v"); Serial.println(OS_VERSION); Serial.println("Connected to TTY"); Serial.println("[INFO] Commands are all uppercase!"); line = 1; lcd.clear(); lcd.selectLine(line); lcd.print("Welcome to"); lcd.selectLine(2); lcd.print(OS_NAME); lcd.print(" v"); lcd.print(OS_VERSION); // Show prompt Serial.println(); Serial.print(TTY_PROMPT); } void loop() { SCmd.readSerial(); } void commandNotFound(char *cmd) { Serial.println(""); //Serial.println("[ERROR @ TTY:IN] COMMAND NOT FOUND!"); Serial.println("[ERROR] COMMAND NOT FOUND!"); // Show prompt again Serial.print(TTY_PROMPT); } void lcdEcho() { Serial.println(""); char *text; //lcd.clear(); Serial.print(" [INFO] Writing text to LCD: "); for (int i=0; i<16; i++) { // Loop repeats once per token //text = text = SCmd.next(); text = SCmd.next(); if (text == NULL) break; // Since tokens don't include SPACE, print it to debug OUTPUT if (i > 0) Serial.print(" "); Serial.print(text); if (i > 0) lcd.print(" "); lcd.print(text); } // Show prompt again Serial.println(); Serial.print(TTY_PROMPT); } void lcdLine() { Serial.println(""); line = atoi(SCmd.next()); Serial.print(" [INFO] Select line "); Serial.print(line); Serial.println(""); lcd.selectLine(line); // Show prompt again Serial.print(TTY_PROMPT); } void lcdClear() { Serial.println(""); lcd.clear(); // Show prompt again Serial.println(); Serial.print(TTY_PROMPT); } void showVersion() { Serial.println(""); Serial.print(OS_NAME); Serial.print(" v"); Serial.println(OS_VERSION); Serial.print("Hardware: Arduino "); Serial.println(BOARD); Serial.print(TTY_PROMPT); } void showGetty() { Serial.println(""); lcd.clear(); lcd.selectLine(1); lcd.print("Welcome to"); lcd.selectLine(2); lcd.print(OS_NAME); lcd.print(" v"); lcd.print(OS_VERSION); // Show prompt again Serial.print(TTY_PROMPT); } void showReadMe() { #ifdef README_PROGMEM Serial.print(readme); #else Serial.println("Option README_PROGMEM not set in config.h!"); #endif } void help() { Serial.println(); Serial.println("Commands:"); Serial.println(" VER"); Serial.println(" GETTY"); Serial.println(" HELP"); Serial.println(" ON"); Serial.println(" OFF"); Serial.println(" LCDON"); Serial.println(" LCDOFF"); Serial.println(" ECHO Text"); Serial.println(" CLS"); Serial.println(" LINE i"); #ifdef README_PROGMEM Serial.println(" README"); #endif // Show prompt again Serial.println(); Serial.print(TTY_PROMPT); } void ledOn() { Serial.println(""); Serial.println("Turning LED to *ON*"); //lcd.println("LED on"); digitalWrite(PIN_LED, HIGH); // Show prompt again Serial.print(TTY_PROMPT); } void ledOff() { Serial.println(""); Serial.println("Turning LED to *OFF*"); //lcd.println("LED off"); digitalWrite(PIN_LED, LOW); // Show prompt again Serial.print(TTY_PROMPT); } void lcdOn() { Serial.println(""); // Turn display on Serial.println("Turning LCD screen to *ON*"); lcd.display(); lcd.setBrightness(30); // Show prompt again Serial.print(TTY_PROMPT); } void lcdOff() { Serial.println(""); // Turn display on Serial.println("Turning LCD screen to *OFF*"); lcd.noDisplay(); lcd.setBrightness(1); // Show prompt again Serial.print(TTY_PROMPT); }