To learn about Arduino and OOP within this environment, I've created a simple project.
Reading from some Sharp IRs and display the values on a Parallax Serial LCD screen. The project ran ok when the code all was in a single .ino file.
However, when wrapping up the Serial LCD in a class, I'm having issues with my constructor. If I comment out the variable declaration and instanciation, my project runs fine (LED on 13 blinks away and I get Serial.println output). If my object is instanciated, the board locks up (no blinking, and Windows plays the USB disconnected sound).
.ino in part
#include <SoftwareSerial.h>
#include "SharpSensor.h"
#include "SerialLCD.h"
SerialLCD screen = SerialLCD();
When that last line is commented out, it works fine.
Serial.h
#include <SoftwareSerial.h>
#include "Arduino.h"
class SerialLCD
{
public:
SerialLCD();
void clearScreen();
void lineWrap();
void writeString(String data);
void writeLineString(String data);
private:
SoftwareSerial mySerial;
};
SerialLCD.cpp
#include "SerialLCD.h"
SerialLCD::SerialLCD() :
mySerial(255, 1)
{
pinMode(1, OUTPUT);
digitalWrite(1, HIGH);
mySerial.begin(9600);
delay(100);
mySerial.write(12); // Clear
mySerial.write(17); // Turn backlight on
delay(5); // Required delay
mySerial.print("Hello, world..."); // First line
mySerial.write(13); // Form feed
delay(5); // Required delay
mySerial.print("from Parallax!"); // Second line
}
void SerialLCD::clearScreen()
{
mySerial.write(12);
delay(5);
}
void SerialLCD::lineWrap()
{
mySerial.write(13);
delay(5);
}
void SerialLCD::writeString(String data)
{
mySerial.print(data);
}
void SerialLCD::writeLineString(String data)
{
writeString(data);
lineWrap();
}
Thanks