Post the code you are using. I've looked at some sample code for this device and can't see where the I2C is defined. (apparently it is 0x3E and is presumably embedded in a library),
This is what ive got just the code from the tutorial
/*************************************************************************
*
* Interfacing Arduino with Seeed Studio Grove LCD (I2C 16x2 LCD).
* This is a free software with NO WARRANTY.
* https://simple-circuit.com/
*
************************************************************************/
#include <Wire.h> // include Arduino Wire library
#include "rgb_lcd.h" // include Seeed Studio LCD library
rgb_lcd lcd; // initialize LCD library
void setup() {
// initialize the LCD with 16 columns and 2 rows:
lcd.begin(16, 2);
// move cursor to upper left position (0, 0)
lcd.setCursor(0, 0);
// print text on the LCD
lcd.print("Hello, world!");
char txt[] = "Seeed Studio 16x2 LCD White on Blue \0";
lcd.setCursor(0, 1); // move cursor to second row
lcd.print(txt); // print text array
delay(1000); // wait a second
while(txt[0] != '\0')
{
byte i = 0;
lcd.setCursor(0, 1);
while(txt[i] != '\0') // shift the text array to the left by 1 position
{
lcd.write(txt[i]); // print one character
txt[i] = txt[i+1]; // shift the text array to the left
i++;
}
lcd.write(' '); // print a space
delay(200); // wait 200 milliseconds
}
delay(1000); // wait a second
}
// main loop
void loop() {
lcd.setCursor(0, 1); // move cursor to position (0, 1)
// print number of seconds since the lase reset
lcd.print( millis()/1000 );
delay(200); // wait 200 milliseconds
}
// end of example code.
The first version of Grove - 16 x 2 LCD series does not have a built-in pull-up resistor, nor does it provide a pad to solder the optional pull-up resistor. We have redesigned the module, and the new version has built-in pull-up resistors.
If you have an older version on your hand, you can solder a 10kΩ DIP resistor yourself on the back pad of the Grove connector. Please follow the picture below, solder a 10kΩ DIP resistor between VCC and SCL pins and a 10kΩ DIP resistor between VCC and SDA pins.
Well, it certainly found something at 0x3E so it looks like the address is the one expected. I'm not sure about the significance of that error though. It looks like the library uses this "error" code to determine which rgb chip model it is talking to.
// check rgb chip model
_wire->beginTransmission(RGB_ADDRESS_V5);
if (_wire->endTransmission () == 0)
{
rgb_chip_addr = RGB_ADDRESS_V5;
setReg(0x00, 0x07); // reset the chip
delayMicroseconds(200); // wait 200 us to complete
setReg(0x04, 0x15); // set all led always on
}
else
{
rgb_chip_addr = RGB_ADDRESS;
// backlight init
setReg(REG_MODE1, 0);
// set LEDs controllable by both PWM and GRPPWM registers
setReg(REG_OUTPUT, 0xFF);
// set MODE2 values
// 0010 0000 -> 0x20 (DMBLNK to 1, ie blinky mode)
setReg(REG_MODE2, 0x20);
}
Do you know what is at address 0x60, which it also found ?
Are you using a normal Arduino Uno (ATmega328p) ?
Anyway, if there is something else on the I2C bus, the chances are the pullup resistors are not an issue.
Normal LCD displays have a contrast potentiometer to adjust. Here there is none so I guess the contrast is set by other means.
In my begin post i wrote the specifics of the hardware i am using.
When i remove the LCD screen only the 0x60 is left even though nothing is connected but its probably the shield thats on the arduino.
EDIT
I removed the shield and tested the IC2 scanner and it still says:
Scanning...
I2C device found at address 0x60 !
done
idk if the problem lies there or if its just a component thats inside my specific Arduino that gives off that device
OK. There are a lot of peripherals on that board. Probably it is the IMU sensor which returns a code of 0x60.
There are a number of issues related to I2C (Wire library) on the Arduino Uno WIFI Rev 2. It is not clear to what extent these have been fixed or whether these are relevant to your problem. Your code is particularly vulnerable because it appears to use an error code delivered by Wire to determine which RGB chip model is in use.
Anyway, which Arduino IDE version are you using ? Update it to the newest in the series you are currently using (1.8.19 or 2.0.3)
Switch on compiler warnings in the IDE and add any such output to this thread.
Have you another Arduino you can try it with? Best would be an original type Uno with the ATmega328P chip. You could put the Grove shield on that.
Failing that, have you any other Arduino, say a Nano, and sufficient jumper wires to connect directly the Blue LCD screen to this Arduino's power and I2C pins ?
/*************************************************************************
*
* Interfacing Arduino with Seeed Studio Grove LCD (I2C 16x2 LCD).
* This is a free software with NO WARRANTY.
* https://simple-circuit.com/
*
************************************************************************/
#include <Wire.h> // include Arduino Wire library
#include "rgb_lcd.h" // include Seeed Studio LCD library
rgb_lcd lcd; // initialize LCD library
void setup() {
// initialize the LCD with 16 columns and 2 rows:
lcd.begin(16, 2);
// move cursor to upper left position (0, 0)
lcd.setCursor(0, 0);
// print text on the LCD
lcd.print("Hello, world!");
char txt[] = "Seeed Studio 16x2 LCD White on Blue \0";
lcd.setCursor(0, 1); // move cursor to second row
lcd.print(txt); // print text array
delay(1000); // wait a second
while(txt[0] != '\0')
{
byte i = 0;
lcd.setCursor(0, 1);
while(txt[i] != '\0') // shift the text array to the left by 1 position
{
lcd.write(txt[i]); // print one character
txt[i] = txt[i+1]; // shift the text array to the left
i++;
}
lcd.write(' '); // print a space
delay(200); // wait 200 milliseconds
}
delay(1000); // wait a second
}
// main loop
void loop() {
lcd.setCursor(0, 1); // move cursor to position (0, 1)
// print number of seconds since the lase reset
lcd.print( millis()/1000 );
delay(200); // wait 200 milliseconds
}
// end of example code.
Compiler:
C:\Users\maxhb01\Documents\Arduino\libraries\Grove_LCD_RGB_Backlight-master\rgb_lcd.cpp: In member function 'void rgb_lcd::begin(uint8_t, uint8_t, uint8_t, TwoWire&)':
C:\Users\maxhb01\Documents\Arduino\libraries\Grove_LCD_RGB_Backlight-master\rgb_lcd.cpp:63:29: warning: unused parameter 'cols' [-Wunused-parameter]
void rgb_lcd::begin(uint8_t cols, uint8_t lines, uint8_t dotsize, TwoWire &wire) {
^~~~
Unfortunatly this is the only arduino that i have.
I do have the option of trying it on a normal uno from somebody else possibly on friday.
I did a quick search on your behalf and found this: I2C LCD not working - Grove - Seeed Forum . It is old but does not look like it has been resolved. The last post in the thread does not appear to be relevant.
You may find other, similar problems or join that forum and state your problem.
Trying with a normal Uno sounds like a good idea.
Your topic has been moved to a more suitable location on the forum. Installation and Troubleshooting is not for problems with (nor for advice on) your project.
Please do not duplicate your questions as doing so wastes the time and effort of the volunteers trying to help you as they are then answering the same thing in different places.
Please create one topic only for your question and choose the forum category carefully. If you have multiple questions about the same project then please ask your questions in the one topic as the answers to one question provide useful context for the others, and also you won’t have to keep explaining your project repeatedly.
Repeated duplicate posting could result in a temporary or permanent ban from the forum.
Could you take a few moments to Learn How To Use The Forum
It will help you get the best out of the forum in the future.
The LCD worked on a different device.
It seems there is just some incompatability with the uno rev2 wifi and the I2C LCD.
I dont have much experience with the arduino so i will just make my project in a different way.
Thanks for the help i suppose this forum post can be considered closed.