Serial LCD by Scott Edwards and Arduino

Z SensorWiki
Prejsť na: navigácia, hľadanie

How to connect Scott Edwards's LCD Serial Backpack equipped LCD display to an Arduino compatible boards.


This serial LCD is not a direct connectible to the Arduino boards as it uses inverted signals (which is OK if You use e.g. RS-232 or Basic Stamp).

Solutions:

a) use an hardware inverter. You can either use one section of an inverter IC, like a 7404, or a simple one-transistor inverter.

b) use an improved NewSoftSerial library. It enables to invert signals. Following diagram and program works like a charm.

ArduinoAndSESerialLCD.png
#include <NewSoftSerial.h>
 
#define rxPin 2          // unused, but necessary to create 'lcd' object
#define txPin 3
 
#define INVERTED true    // this is impossible with standard Software Serial library
 
NewSoftSerial lcd(rxPin, txPin,INVERTED);  // set up a new inverted serial port on pins 2 and 3
 
void setup() {
 
  pinMode(rxPin, INPUT);    // define pin modes for tx, rx:
  pinMode(txPin, OUTPUT);
  lcd.begin(9600);
 
  delay(100);               // necessary to wait after powering up
 
  lcd.print(254,BYTE);      // 254 is a command prefix
  lcd.print(1,BYTE);        // 1 is a Display Clear command
  delay(10);                // this command takes long time
 
  lcd.print(254,BYTE);      // for unknown reasons this is 
  lcd.print(1,BYTE);        // necessary to repeat 2x
  delay(10);
 
  lcd.print(254,BYTE);      // 254 is a command prefix
  lcd.print(2 ,BYTE);       // 2 is a Home command
  delay(10);
 
  lcd.print("Hello, World!");
}
 
void loop() {
  lcd.print(254,BYTE);
  lcd.print(192,BYTE);        // set the cursor to column 0, line 1
 
  lcd.print(millis()/1000);   // print the number of seconds since reset:
 
}