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