#include #define rxPin 2 #define txPin 3 #define buttonPin 4 SoftwareSerial mySerial(rxPin, txPin, true); // * // * ------------ // * Control a Serial LCD Display // * // * Tested on a Matrix Orbital model LCD0821 display. // * Other diplays will work but may have slightly different // * command codes and hardware setups. // * // * Copyleft 2006 by djmatic // * // * ------------ // * // * // Declare your program variables here // Arduino and LCD setup void setup() { //beginSerial(19200); pinMode(rxPin, INPUT); pinMode(txPin, OUTPUT); pinMode(buttonPin, INPUT); Serial.begin(9600); mySerial.begin(2400); //mySerial.begin(9600); delay(1000); clearLCD(); // LCD setup commands: uncomment the ones you want to use // Note: These codes (i.e. the ones following 254) may have to be changed for // different manufacturer's displays // Turn Auto scroll ON // Serial.print(254, BYTE); // Serial.print(81, BYTE); // // Turn Auto scroll OFF // Serial.print(254, BYTE); // Serial.print(82, BYTE); // Turn ON AUTO line wrap // Serial.print(254, BYTE); // Serial.print(67, BYTE); // Turn OFF AUTO line wrap // Serial.print(254, BYTE); // Serial.print(68, BYTE); // Turn OFF the block cursor // Note that setting both block and underline // cursors may give unpredictable results. //Serial.print(254, BYTE); //Serial.print(84, BYTE); // moo Serial.write(254); // moo Serial.write(84); // Turn ON the block cursor // Serial.print(254, BYTE); // Serial.print(83, BYTE); // Turn ON the underline cursor // Serial.print(254, BYTE); // Serial.print(74, BYTE); // Turn OFF the underline cursor // Serial.print(254, BYTE); // Serial.print(75, BYTE); } // MAIN CODE void loop() { //backlightOn(0); // turn the backlight on all the time char c='A'; clearLCD(); int line=1; while(true) { cursorHome(); int buttonState = digitalRead(buttonPin); if (buttonState) { Serial.println("Button active"); } else { Serial.println("Button inactive"); } line = 1-line; if (line==0) { goToStartOfLineOne(); } else { goToStartOfLineTwo(); } mySerial.write(c); if (buttonState) { mySerial.print(" : Hello Eliza"); } else { mySerial.print(" : Hello Lotte"); } delay(500); //for(int i=0;i<3;++i) { // delay(100); // scrollLeft(); //} delay(1000); if (c!='Z') { c=c+1; } else { c='A'; } } } // LCD FUNCTIONS-- keep the ones you need. // clear the LCD void clearLCD(){ mySerial.write(254); mySerial.write(1); delay(10); //Serial.println("I just did a CLS"); } void goToStartOfLineOne(){ mySerial.write(254); mySerial.write(128); } void goToStartOfLineTwo(){ mySerial.write(254); mySerial.write(192); } //Make the text move to the left void scrollLeft(){ mySerial.write(254); mySerial.write(24); } // Make the text move to the right void scrollRight(){ mySerial.write(254); mySerial.write(28); } // Undoes scrolling and moves cursor to home pos. void cursorHome(){ mySerial.write(254); mySerial.write(2); delay(10); } // start a new line void newLine() { //Serial.write(10); } // move the cursor to a specific place // e.g.: cursorSet(3,2) sets the cursor to x = 3 and y = 2 void cursorSet(int xpos, int ypos){ //Serial.write(254); // Serial.write(71); // Serial.print(xpos); //Column position // Serial.print(ypos); //Row position } // backspace and erase previous character void backSpace() { // Serial.write(8); } // move cursor left void cursorLeft(){ mySerial.write(254); mySerial.write(16); } // move cursor right void cursorRight(){ mySerial.write(254); mySerial.write(20); } // set LCD contrast void setContrast(int contrast){ //Serial.print(254, BYTE); //Serial.print(80, BYTE); //Serial.print(contrast); } // turn on backlight void backlightOn(int minutes){ //Serial.print(254, BYTE); //Serial.print(66, BYTE); //Serial.print(minutes); // use 0 minutes to turn the backlight on indefinitely } // turn off backlight void backlightOff(){ //Serial.print(254, BYTE); //Serial.print(70, BYTE); }