Is it technically possible to connect 2 16x4 lcd display's to arduino mega? I want to develop a system for my ppo volvo 740 diesel. I want to place 2 displays. One that shows constantly the temperature measured on different places in the system. And the other display will tell me if system is on temperature, if system will switch automatically or manual, and all the other stuff im thinking about.
But before i start is it possible and how do i connect 2 displays?
I suppose it's possible if you have enough pins (which the Mega does).
You'd just connect them to separate pins, and start two instances of the LCD library.
Someone once mentioned that you could share all the data lines and have separate enable pins so that you could technically use two with only 16 pins, but I have no idea how well / if that even works.
Someone once mentioned that you could share all the data lines and have separate enable pins so that you could technically use two with only 16 pins, but I have no idea how well / if that even works.
There's no reason for it not to work - this is precisely how the 40x4 displays are configured except that both of its 20x4 displays are in the same glass enclosure. You share the RS line (and the R/W if used) in addition to the data lines. Only the E lines are separate.
(note that the Enable lines are assigned to different pins)
I have been wanting to try this for a while - I'll try to do something this afternoon and get back to you. It will give me an opportunity to use the real Arduino that I got in the Sparkfun free day.
Here's the code I used . All I did was add a few lines to the 'hello, world!' example code.
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
LiquidCrystal lcd2(12, 10, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of rows and columns:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
lcd2.begin(16, 2);
// Print a message to the LCD.
lcd2.print("hey, world!");
lcd2.setCursor(0, 1);
lcd2.print("it works!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}
I have a nice picture, but the ftp access to my web space is not working at the moment. I'll add it when I can.
That is just too slick!!! It looks like the LiquidCrystal knows which LCD to print to by the LCD.print vs lcd2.print just by the defining the LiquidCrystal lcd2 wiring? Then for #3 and 4 LCD you used lcd3.print and lcd4.print?
That is just too slick! I'll have to try that over the weekend - THANK YOU!!!
Dumb question but just want to be sure. I'm thinking of getting a 20x4 LCD to go along with the 16x2 i already have. So am i safe to assume that i can hook like the above examples?
I figure all i'd have to do is declare the 2 screen in setup correctly. For example:
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
LiquidCrystal lcd2(12, 10, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of rows and columns:
[glow] lcd.begin(20, 4);[/glow]
// Print a message to the LCD.
lcd.print("hello, world!");
[glow]lcd2.begin(16, 2);[/glow]
// Print a message to the LCD.
lcd2.print("hey, world!");
lcd2.setCursor(0, 1);
lcd2.print("it works!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}
Like i said stupid question but just want to be sure.