In upgrading to Arduino 1.0 I have ammended the LCD.print commands to Serial.write as follows:
#include <SoftwareSerial.h>
#define txPin 2
SoftwareSerial LCD = SoftwareSerial(0, txPin);
// since the LCD does not send data back to the Arduino, we should only define the txPin
const int LCDdelay=10; // conservative, 2 actually works
// wbp: goto with row & column
void goTo(int row, int col) {
Serial.write(0xFE); //command flag
Serial.write(col + row*64 + 128); //position
delay(LCDdelay);
}
void clearLCD(){
Serial.write(0xFE); //command flag
Serial.write(0x01); //clear command.
delay(LCDdelay);
}
void backlightOn() { //turns on the backlight
Serial.write(0x7C); //command flag for backlight stuff
Serial.write(157); //light level.
delay(LCDdelay);
}
void backlightOff(){ //turns off the backlight
Serial.write(0x7C); //command flag for backlight stuff
Serial.write(128); //light level for off.
delay(LCDdelay);
}
void serCommand(){ //a general function to call the command flag for issuing all other commands
Serial.write(0xFE);
}
void setup()
{
pinMode(txPin, OUTPUT);
LCD.begin(9600);
clearLCD();
goTo(0,0);
LCD.print("Test String");
}
void loop()
{
}
This now compiles and uploads, but theres clearly something wrong with my changes because it doesn't clear the display and goTo(0,0); doesnt work, however the "Test String" text is displayed.
#include <SoftwareSerial.h>
#define txPin 2
SoftwareSerial LCD = SoftwareSerial(0, txPin);
// since the LCD does not send data back to the Arduino, we should only define the txPin
const int LCDdelay=10; // conservative, 2 actually works
// wbp: goto with row & column
void goTo(int row, int col) {
LCD.print(0xFE, BYTE); //command flag
LCD.print((col + row*64 + 128), BYTE); //position
delay(LCDdelay);
}
void clearLCD(){
LCD.print(0xFE, BYTE); //command flag
LCD.print(0x01, BYTE); //clear command.
delay(LCDdelay);
}
void backlightOn() { //turns on the backlight
LCD.print(0x7C, BYTE); //command flag for backlight stuff
LCD.print(157, BYTE); //light level.
delay(LCDdelay);
}
void backlightOff(){ //turns off the backlight
LCD.print(0x7C, BYTE); //command flag for backlight stuff
LCD.print(128, BYTE); //light level for off.
delay(LCDdelay);
}
void serCommand(){ //a general function to call the command flag for issuing all other commands
LCD.print(0xFE, BYTE);
}
void setup()
{
pinMode(txPin, OUTPUT);
LCD.begin(9600);
clearLCD();
goTo(0,0);
LCD.print("Hello world!");
}
void loop()
{
}
#include <SoftwareSerial.h>
#define txPin 2
SoftwareSerial LCD = SoftwareSerial(0, txPin);
// since the LCD does not send data back to the Arduino, we should only define the txPin
const int LCDdelay=10; // conservative, 2 actually works
// wbp: goto with row & column
void goTo(int row, int col) {
lcd.write(0xFE); //command flag
lcd.write(col + row*64 + 128); //position
delay(LCDdelay);
}
void clearLCD(){
lcd.write(0xFE); //command flag
lcd.write(0x01); //clear command.
delay(LCDdelay);
}
void backlightOn() { //turns on the backlight
lcd.write(0x7C); //command flag for backlight stuff
lcd.write(157); //light level.
delay(LCDdelay);
}
void backlightOff(){ //turns off the backlight
lcd.write(0x7C); //command flag for backlight stuff
lcd.write(128); //light level for off.
delay(LCDdelay);
}
void serCommand(){ //a general function to call the command flag for issuing all other commands
Serial.write(0xFE);
}
void setup()
{
pinMode(txPin, OUTPUT);
LCD.begin(9600);
clearLCD();
goTo(0,0);
LCD.print("Mrs Janet Long!");
}
void loop()
{
}
And the error messages created are:
serLCD_Test.cpp: In function 'void goTo(int, int)':
serLCD_Test:10: error: 'lcd' was not declared in this scope
serLCD_Test.cpp: In function 'void clearLCD()':
serLCD_Test:15: error: 'lcd' was not declared in this scope
serLCD_Test.cpp: In function 'void backlightOn()':
serLCD_Test:20: error: 'lcd' was not declared in this scope
serLCD_Test.cpp: In function 'void backlightOff()':
serLCD_Test:25: error: 'lcd' was not declared in this scope