Hi,
I was trying to use the LCD screen that came with my Arduino kit, it is this one:
IIC 1602 LCD
I followed the instructions on this website https://arduino-info.wikispaces.com/LCD-Blue-I2C and I ended up with this:
And I found the I2C address of my LCD screen was 0x3F so this is my code:
/* YourDuino.com Example Software Sketch
16 character 2 line I2C Display
Backpack Interface labelled "A0 A1 A2" at lower right.
..and
Backpack Interface labelled "YwRobot Arduino LCM1602 IIC V1"
MOST use address 0x27, a FEW use 0x3F
terry@yourduino.com
modified by rpt007 */
/*-----( Import needed libraries )-----*/
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 16 chars 2 line display
// A FEW use address 0x3F -> this is my LCD's address
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
/*-----( Declare Variables )-----*/
//NONE
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); // Used to type in characters
lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on;
// rpt007: this command has to be repeated after each lcd.print-command !!
//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0
lcd.setCursor(0,0); //Start at character 4 on line 0
lcd.print("Hello, world!");
lcd.backlight(); // first additional insert of the backlight() command
delay(1000);
lcd.setCursor(0,1);
lcd.print("HI!YourDuino.com");
lcd.backlight(); // second additional insert of the backlight() command
delay(4000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.clear();
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Use Serial Mon");
//lcd.backlight(); // third additional insert of the backlight() command
// might not be necessary as you won't see the tiny delay
// between this text and the follwing text which is only
// visible after the fourth backlight() command line
// but with the following delay-command activated you will notice
// a significant (2sec) delay without any displayed text!!
//delay(2000); // if you activate this line, you will see that only the
// previous lcd.backlight() command will show the "delayed" text
lcd.setCursor(0,1);
lcd.print("Type to display");
lcd.backlight(); // fourth additional insert of the backlight() command
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
lcd.backlight(); // fifth additional insert of backlight() command
// without the command there is no text on the LCD visible
}
}
}
}/* --(end main loop )-- */
/* ( THE END ) */
Everything seems that was going fine until, but the screen never showed the characters I wanted it to show:
I don't know if I did something wrong or if my lcd module is defective? Do you guys recommend buying a new one? What approach do you guys recommend?
I also recorded a video:
Thanks for your help