So, I bought a new LCD I2C (the one with the pre-soldered back and only 4 pins) last week and tried it. It worked smoothly, adjusted the contrast, and got rid of the common white box problem immediately by adjusting the potentiometer using a screwdriver and knowing my address using an I2C Scanner.
However, today it's just purely white boxes. Every single 'how to fix' video I saw just said that it's either adjusting the contrast or using the I2C Scanner. When I upload the I2C scanner, it's just scanning (photo attached below) without telling me the address. So I'm probably assuming that it cannot even read the LCD and that it's broken. I know that the address is 0x27 (from my scan and setup last week), but now the whole thing just doesn't work. I'm only using the scanner to see if it can still read my LCD (which I doubt atp)
Anyone here know the actual problem and what I should do? I used a basic Hello World code and the I2C Scanner code to see if anything worked.
Also, there is a keypad connected to my Arduino, but it shows no problem and it still prints in the serial monitor so I doubt that's the problem.
Codes for reference:
// --------------------------------------
// i2c_scanner
//
// Version 1
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not known.
// Version 2, Juni 2012, Using Arduino 1.0.1
// Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26 2013
// V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
// by Arduino.cc user Krodal.
// Changes by louarnold removed.
// Scanning addresses changed from 0...127 to 1...119,
// according to the i2c scanner by Nick Gammon
// https://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
// As version 4, but address scans now to 127.
// A sensor seems to use address 120.
// Version 6, November 27, 2015.
// Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for Serial Monitor
Serial.println("\nI2C Scanner");
}
void loop() {
int nDevices = 0;
Serial.println("Scanning...");
for (byte address = 1; address < 127; ++address) {
// The i2c_scanner uses the return value of
// the Wire.endTransmission to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.print(address, HEX);
Serial.println(" !");
++nDevices;
} else if (error == 4) {
Serial.print("Unknown error at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.println(address, HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
} else {
Serial.println("done\n");
}
delay(5000); // Wait 5 seconds for next scan
}