Problem:
Brak komunikacji Arduino pro micro (24 pin) z wyświetlaczem 16x2 kontroler I2C PCF8574
wg rozpiski urządzenia arduino:
https://simba-os.readthedocs.io/en/latest/boards/arduino_pro_micro.html
potrzebujemy piny/sygnały: SDA, SCL, VCC, GND
Brak komunikacji Arduino pro micro (24 pin) z wyświetlaczem 16x2 kontroler I2C PCF8574
wg rozpiski urządzenia arduino:
https://simba-os.readthedocs.io/en/latest/boards/arduino_pro_micro.html
potrzebujemy piny/sygnały: SDA, SCL, VCC, GND
! jeśli macie inną płytkę to nie sugerować się tym co piszą w tabelach zwykle tj. pin A4/A5 dla SDA/SCL. dobrym przykładem jest ww. płytka, gdzie takich oznaczeń nie ma.
Budowa skanera polega na podpięciu urządzenia I2C (w tym przypadku wyświetlacza) do Arduino prawidłowo (tj. 1:1), następnie kopiujemy kod znajdujący się poniżej do IDE Arduino > wgrywamy na urządzenie > w menu programu IDE Arduino klikamy Narzędzia > Monitor portu szeregowego > i powinno coś wypluwać (przykład):
I2C Scanner
Scanning...
I2C device found at address 0x38 !
done
---
w tym przypadku adresem jest 0x38
---
w tym przypadku adresem jest 0x38
kod skanera, który trzeba wrzucić do IDE, a później do urządzenia (bez łapek):
👇
/*I2C_scanner
This sketch tests 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);
Serial.println("\nI2C Scanner");
}
void loop() {
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for (address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
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);
}
👆
Powyższy kod nie jest mojego autorstwa
źródło: https://gist.github.com/jmas/01280e8c1aae8060c90c029e59647cd9
lub
https://www.makerguides.com/character-i2c-lcd-arduino-tutorial/
Adres gdzie szukać adresu I2C we właściwym kodzie i w moim przypadku trzeba zamienić 0x27 na 0x38 (zaznaczono na czerwono):
//...............JehanKandy........................
//...........www.jehankandy.com....................
//........www.github.com/JehanKandy................
//include liquidCrystal_I2C.h
//Tools -> Manage Libraries and type liquidCrystal_I2C
#include <LiquidCrystal_I2C.h>
//define I2C address......
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
lcd.init();
lcd.clear();
lcd.backlight();
lcd.setCursor(2,0);
lcd.print("Hello World");
lcd.setCursor(2,1);
lcd.print("JehanKandy");
}
void loop() {
}
//.........coded by : JehanKandy....
//...........Thank You..............
źródło kodu:
https://create.arduino.cc/projecthub/jehankandt/arduino-16x2-lcd-display-with-i2c-hello-world-4b1a41