Wyświetlacz LCD 16×2 Arduino
Na rynku dostępne są wyświetlacze LCD z lub bez dodatkowego modułu i2c. Moduł i2c pozwala na dużo łatwiejsze połączenie wyświetlacza z płytką (4 przewody). Wyświetlacze bez modułu i2c wymagają użycia aż 6 przewodów, rezystora i potencjometru do sterowania jasnością wyświetlacza.
Wyświetlacz LCD 16×2 bez I2C
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
}
void loop(){
displayText();
}
void displayText(){
lcd.setCursor(0,0); //kolumna, wiersz
lcd.print("LCD without I2C module");
delay(1000);
for(int i=0;i<23;i++){
lcd.scrollDisplayLeft();
delay(100);
}
lcd.home();
}
Wyświetlacze LCD 16×2 I2C z PCF8574
Moduł PCF8574 to dostawka I2C (expander) do wyświetlacza MCP23008. Domyślnie wyświetlacze z dostawką mają adres 0x27.
LCD 16×2 I2C PCF8574 z biblioteką LiquidCrystal_I2C
Podstawowy program dla fizycznej płytki
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup(){
lcd.begin();
lcd.setCursor(0, 0);
lcd.print("LCD I2C Testing");
}
void loop(){}
W tinkercad należy wybrać LCD PCF8574 i adres 32
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(32, 16, 2);
int interval = 1000;
long lastTime = 0;
int sec = 0;
void setup(){
lcd.init();
lcd.backlight();
lcd.print("Sec counter:");
DisplayInfo();
}
void DisplayInfo(){
lcd.setCursor(0,1);
lcd.print(sec);
sec++;
}
void loop(){
long timeNow = millis();
if(timeNow >= lastTime + interval)
{
DisplayInfo();
lastTime = timeNow;
}
}
LCD 16×2 I2C PCF8574 z biblioteką Adafruit_LiquidCrystal
#include <Adafruit_LiquidCrystal.h>
Adafruit_LiquidCrystal lcd(0);
void setup(){
lcd.begin(16, 2);
lcd.print("LCD MCP23008");
}
void loop(){}
Tworzenie własnego znaku
Na wyświetlaczu można wyświetlić własne znaki, które można stworzyć dzięki tablicy byte. Każde pole zawiera 5 x 8 pixeli, które można włączyć lub wyłączyć.
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(32, 16, 2);
byte minka[] = {
B00000,
B00000,
B01010,
B00000,
B10001,
B01110,
B00000,
B00000
};
void setup() {
lcd.init();
lcd.backlight();
lcd.createChar(0,minka);
lcd.setCursor(6,1);
lcd.print("Minka");
}
void loop() {
lcd.setCursor(8, 0);
lcd.write(byte(0));
delay(100);
}
Zobacz: Wyświetlacz SSD1306 OLED I2C