Hi everyone I bought one of these sydz - see link below - off ebay but have had no luck in getting either a 1602 or 2004 lcd screen to work, I have used the I2C sketch to get the backpacks address just wonder if anyone has used these. The two screens work as I have confirmed that using the example sketch from the playground
. . . just wonder if anyone has used these.
I suspect that you really want to know more than this.
You can get help from people who are familiar with LCDs and familiar with serial backpacks even if they haven't used the particular one that you have.
What they need is a link to the datasheet for, or at least to the supplier of, the device that you have. They also have to know what code you tried, not a vague mention of 'the' I2C sketch (implying that there is only one such sketch).
Don
This might be a silly question but why are buy stuff before checking to see if there is any documentation available ?
This problem is epidemic.
We have similar posts from people every day.
Why doesn't anyone at least Google it to see if they can find anything before clicking "Buy" ?
Robert
You need to start by telling us where you got it.
Then take a close detail photo. The one you posted is useless.
OK, you have a few people here confused by referring to it as a "serial" backpack when it is in fact, an I2c backpack.
You need the "I2Cguesser" script detailed in this posting to determine the particular descriptor for this board to insert in the library call.
If it isn't serial then what is it? It certainly isn't parallel.
Don
It's I2C - IIC - whereas generally "serial" refers to asynchronous serial the same as the link between the USB adapter and the ATMega, you have to get the baudrate (and possible trouble with parity) right.
The "backpack" pictured is fairly standard (I don't know whether it is the same as one I have, but I have been endeavouring to collect all the variants so I provide meaningful answers to people) and has DIP switches to set the I2C address which is rather useful. "bperrybap" has considerable experience with them and has an extension of the I2C address finder which will try the various (known) descriptor combinations and the right one will show up on the display and describe itself.
I wonder what the 'S' in SCL and SDA stands for?
Don
I updated the "guesser" sketch in the post linked to above.
It now avoids the i2c reserved addresses which caused some issues, particulary
on the chipkit platform.
I also re-ordered the guesses to put the more popular boards up front.
I am in the process of finalizing some new code that can actually detect the backpack wiring vs guess.
It's a bit tricky to do, but I'm really close and can already detect 3 of the 4 known PCF8574 wirings
which covers about 7 different boards.
I haven't yet figured out how to detect the difference between the mjdkz board and fm's electro fun I2CIO board.
mayfield,
Please let me know which constructor works for this board, as I want to add it to my list
of known board wirings.
--- bill
Thanks everyone for the replies. I ran the guesser and after a short time the LCD displayed -
0x38 2,1,0,4
5,6,7,3,positive
Great.
That seems to be the most popular wiring.
--- bill
Here is a better picture of the sydz backpack, I would have included a datasheet but I cant find one. I don't think these are as good as some others, its difficult to adjust the contrast when attached to the LCD due to where the trim pot is located
So have you run a program with the new constructor on the lcd yet ?
I don't think these are as good as some others, its difficult to adjust the contrast when attached to the LCD due to where the trim pot is located
On the other hand it does have DIP switches for changing the address. That's easier than cutting or connecting jumpers.
Don
Can you post the link to the ebay site where you purchased it ?
How much did you pay ?
mayfield:
Thanks everyone for the replies. I ran the guesser and after a short time the LCD displayed -
0x38 2,1,0,4
5,6,7,3,positive
OK, so have you plugged that series of numbers into the descriptor in your original test sketch and got it working?
OK I've added the new constructor on the lcd to the original one of the sketches I tried and it works
Here is the link to the ebay seller I bought it off - I paid $4.44 AUS
Thankyou all I very much appreciate the help
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN 13
LiquidCrystal_I2C lcd(0x38, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // addr, EN, RW, RS, D4, D5, D6, D7, Backlight, POLARITY
//LiquidCrystal_I2C lcd(0x38); // Set the LCD I2C address
//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE); // Set the LCD I2C address
// Creat a set of new characters
const uint8_t charBitmap[][8] = {
{ 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 },
{ 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 },
{ 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 },
{ 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 },
{ 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 },
{ 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 },
{ 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 },
{ 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 }
};
void setup()
{
int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0]));
// Switch on the backlight
pinMode ( BACKLIGHT_PIN, OUTPUT );
digitalWrite ( BACKLIGHT_PIN, HIGH );
lcd.begin(20,4); // initialize the lcd
for ( int i = 0; i < charBitmapSize; i++ )
{
lcd.createChar ( i, (uint8_t *)charBitmap[i] );
}
lcd.home (); // go home
lcd.print("Hello, ARDUINO ");
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print (" FORUM - fm ");
delay ( 1000 );
}
void loop()
{
lcd.home ();
// Do a little animation by writing to the same location
for ( int i = 0; i < 2; i++ )
{
for ( int j = 0; j < 16; j++ )
{
lcd.print (char(random(7)));
}
lcd.setCursor ( 0, 1 );
}
delay (200);
}
This code:
// Switch on the backlight
pinMode ( BACKLIGHT_PIN, OUTPUT );
digitalWrite ( BACKLIGHT_PIN, HIGH );
Is not controlling or affecting the LCD backlight.
On an UNO board it will turn on the LED on the UNO board.
(So I'd remove that code)
The LiquidCrystal_I2C constructor specifies the backlight information
and this line:
lcd.begin(20,4); // initialize the lcd
not only initializes the LCD, but also initializes the i2c chip and turns on the backlight.
To turn on/off the backlight use:
lcd.backlight(); // turn on backlight
lcd.noBacklight(); // turn off backlight.
--- bill
Thanks Bill
You've fulfilled all your obligations as an OP (Original Poster) now but it a photo of the working display
would be a nice finishing touch.