W tym poście pokazuję jak połączyć wyświetlacz LCD z Arduino korzystając z magistrali I2C. Dzięki temu do komunikacji użyte są tylko dwa piny plus zasilanie.
Pomaga nam w tym ekspander PCF8574P.
Dodałem też link, z Akademii Nettigo, który pokazuje jak wykorzystać układ w innych konfiguracjach. Jest tam też biblioteka expandera, której należy użyć
Ekspander PCF i wyświetlacz LCD16/2
Oto schemat połączeń dla Arduino Uno R3:
Uwaga! Ja korzystam z Arduino Uno R3 i ma on wyprowadzone dodatkowo piny magistrali I2C tak jak na rysunku powyżej. Równie dobrze można z ekspandera wyjść na piny A4 i A5, jak w tabelce.
Łączenie z innymi platformami:
Arduino boards | I2C / TWI pins |
Uno, Ethernet | A4 (SDA), A5 (SCL) |
Mega2560 | 20 (SDA), 21 (SCL) |
Leonardo | 2 (SDA), 3 (SCL) |
Due | 20 (SDA), 21 (SCL), SDA1, SCL1 |
- Potrzebne części:
- Potencjometr 10k.
- Expander PCF8574P
- Arduino Uno R3
Biblioteki do instalacji:
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library.git
Kod 1:
#include //Standardowa biblioteka Arduino
#include
LiquidCrystal_I2C lcd(0x16,16,2);
void setup()
{
lcd.init();
lcd.print("Hello, world!");
}
void loop()
{
}
Użycie układu PCF8574P w celu zwiększenia ilości pinów
Tu użyłem biblioteki: https://github.com/xreef/PCF8574_library która wydaje się ciekawa i napisana też dla ESP8266
Rozmieszczenie pinów PCF8574
#include "PCF8574.h"
// Set i2c address
PCF8574 pcf8574(0x20);
void setup()
{
Serial.begin(115200);
delay(1000);
Serial.println("\n\nINIT");
pcf8574.pinMode(P4, OUTPUT, LOW);
Serial.print("\nInit pcf8574...");
if (pcf8574.begin()){
Serial.println("OK");
}else{
Serial.println("KO");
}
}
void loop()
{
pcf8574.digitalWrite(P4, HIGH);
delay(1000);
pcf8574.digitalWrite(P4, LOW);
delay(1000);
}
Linki:
- PCF8574 i2c digital I/O expander: Arduino, esp8266 and esp32, rotary encoder – Part 2
- Renzo Mischianti – WeMos D1 (esp8266): i2c shield to manage encoder, multiple buttons, and LEDs
- https://maxpromer.github.io/LCD-Character-Creator/
- PCF8574 czyli jak łatwo zwiększyć liczbę pinów w Arduino