While I am currently trying to find a
way of interacting with my Room Management System without connecting
it to a network or direct to a computer, I was playing a bit with
LCD's. Reading through forum posts and tutorials, I was about to buy
a new LCD since it was doing everything except printing anything to
the screen.
If there are some more like me,
experimenting the first time with a HD44780 LCD, don't through it out
of the window while it doesn't work.
The following image is one found in
plenty of tutorials. It might work with some other LCD shields but
not with a HD44780.
The first and most important thing is
that the LCD pin 5 (RW) has to go to ground. Second, without the back
lighting (LCD pin 15 and 16) connected it is very difficult to adjust
the contrast with the potentiometer only. There fore LCD pin 15
connects through a resistor to 5 volt supply. I used a 470 ohm
resistor for it but you can play around a bit. Use a higher
resistance if you need the back light darker an one with lower
resistance if you need it brighter. A 1 to 5 k potentiometer will do
the job if you need it adjustable. The LCD pin 16 goes to ground and
the back light comes up.
To check it out, I rewrote a clock
sketch a bit which I found in one of the Arduino books. Please be
aware, that this sketch does not check with a real time clock. It
uses the Arduino clock ant the time library.
#include <Time.h>
#include <LiquidCrystal.h>
#include <SPI.h> //not
needed if you use the
//default
library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//create an instance of
//LiquidCrystal
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
setTime(9,40,5,18,4,14); // set time
to 9:40 Apr 18 2014
}
void loop()
{
digitalClockDisplay();
delay(1000);
}
void digitalClockDisplay(){
// digital clock display of the time
lcd.setCursor(4, 0);
lcd.print(hour());
printDigits(minute());
printDigits(second());
lcd.setCursor(3, 1);
lcd.print(day());
lcd.print(" ");
lcd.print(month());
lcd.print(" ");
lcd.print(year());
}
void printDigits(int digits){
// utility function for clock
display: prints preceding colon and leading 0
lcd.print(":");
if(digits < 10)
lcd.print('0');
lcd.print(digits);
}
I am waiting for a couple of parts
which I am missing in my circuit to hopefully be able to run the LCD
through a shift register, using only 3 Arduino pins so I can carry on
working on a small setup menu for the Room Management System.
No comments:
Post a Comment