LCDuino

From Robo-T
Jump to: navigation, search

Playing around with Arduino, I realized that building an Arduino with an LCD attached would be rather useful. After all, LCDs are cool on any project. Likewise it would save space. The result, LCDuino.

Micro-controller side of LCDuino.
LCD side of LCDuino.
Sensor attached to the LCDuino.

OK not completely original, but serves my purposes. Basically, it is a minimal Arduino with a standard (think cheap) LCD attached. There is no USB, but since the purpose is for finished products, there is not much need since the ATmega328s can be programmed through an FTDI, or another Arduino. The result is a quick prototyping board.

==Design

  • LCD pins (RS,E,D4,D5,D6,D7) line up the pins on the ATmega328P (4,6,11,12,13,14)
  • Important: You must attach the pins to the board before attaching the LCD if you want the board face the other way on the backside of the LCD.
  • The LCD will need a adjustment pot for contrast.
  • Negative rails on edge Positive one in. Basically, negative on the outside, 5v runs under the middle of the chip to power the chip and to the positive row of pins.
  • Voltage regulator with capacitors, diode, and led on one side of the chip.
  • Don't forget the reset button,pin and pull-up resistor(all needed to program your chip)
  • add other things to taste: built-in buzzer (I used the ones that just need 5v applied),LED on D13, thermistor, IR-receiver... But of course these can be added later.



The cost of building this board was about $10. The first version I had problems with alignment on a perforated board. However, the next version has direct alignment. (RS,E,D4,D5,D6,D7) on the LCD align perfectly with (D2,D4,D5,D6,D7,D8) on the ATmega328. This leaves Pins D0 and D1 for programming and other uses as well as D3 (which I used for a built in buzzer). Besides these 3 pins on the first side of the ATmega328 the other side is fully usable (6-analogue pins that can be also used digitally and 5digital pins) This setup allows for 4 PWM for pseudo analogue output including pins 3,9,10,11. So yes the cheap LCDs take up more pins (6 vs 2) but in reality there are plenty left for most projects.

My latest design includes a IR-receiver that is placed facing the same direction of the LCD to receive user input. In a quick upload my LCDuino is a IR-Remote reader. Attack a Ultrasonic Range finder, upload and it is a URangefinder. Attach a GPS sensor upload and you can see your location. Attach a thermistor and upload, and you have a digital read-out thermometer. Much faster prototyping than even a breadboard. The LCD is already built in so you just have to use the LiquidCrystal library, which is frankly super easy.

 #include <LiquidCrystal.h>
 LiquidCrystal lcd(2,4,5,6,7,8);
 void setup(){
   lcd.begin(16,2);}
 void loop(){
   lcd.clear();
   lcd.print("Hello");
   lcd.setCursor(0,1);
   lcd.print("  World!!");
 }