Sydz I2C backpack

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. :smiley:

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

http://www.ebay.com.au/itm/New-IIC-I2C-TWI-SPI-Serial-Interface-Board-Module-Port-For-2004-1602-LCD-Display-/261176654807?pt=LH_DefaultDomain_0&hash=item3ccf577bd7&_uhb=1

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.