LCD I2C
LCD I2C
Ahoj,
mám Arduino Mega + LCD displej, na kterém je zezadu napsáno 1602A. Podle vizáže i podle tohoto popisu tedy předpokládám, že displej má 16znaků a 2 řádky.
Zezadu je připájený modul PCF8475F. Tedy přesně jako na :
http://navody.arduino-shop.cz/zaciname- ... splej.html
Zkoušel jsem programy z této stránky a ještě z:
http://www.arduino8.cz/lekce-10-arduino-a-i2c-lcd-2/
Někde jsem našel prográmek, na vyhledání adres zařízení na I2C, takže jsem si dost jistý i adresou 0x27. Nicméně jsem zkoušel všechny 20-27.
Je to tak jednoduchý, že se to nedá zvorat!
Přesto mi displej pouze svítí, nebo bkliká. Text se neobjeví žádný. Poťákem pro kontrast točím, ale i když to vytočím na max, tak se mi pouze ve spodním řádku rozsvítí 16 obdélníčků (všechny pixely 16ti znaků). Ve druhém řádku nic.
Myslíte, že je vadný modul, nebo může být problém jinde?
mám Arduino Mega + LCD displej, na kterém je zezadu napsáno 1602A. Podle vizáže i podle tohoto popisu tedy předpokládám, že displej má 16znaků a 2 řádky.
Zezadu je připájený modul PCF8475F. Tedy přesně jako na :
http://navody.arduino-shop.cz/zaciname- ... splej.html
Zkoušel jsem programy z této stránky a ještě z:
http://www.arduino8.cz/lekce-10-arduino-a-i2c-lcd-2/
Někde jsem našel prográmek, na vyhledání adres zařízení na I2C, takže jsem si dost jistý i adresou 0x27. Nicméně jsem zkoušel všechny 20-27.
Je to tak jednoduchý, že se to nedá zvorat!
Přesto mi displej pouze svítí, nebo bkliká. Text se neobjeví žádný. Poťákem pro kontrast točím, ale i když to vytočím na max, tak se mi pouze ve spodním řádku rozsvítí 16 obdélníčků (všechny pixely 16ti znaků). Ve druhém řádku nic.
Myslíte, že je vadný modul, nebo může být problém jinde?
Re: LCD I2C
I2c scaner jsem pouzival tenhle .. snad to pujde momentalne nemam moznost to vyzkouset..
// --------------------------------------
// 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 know.
// 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
// http://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()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the 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("Unknow 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
}
// --------------------------------------
// 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 know.
// 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
// http://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()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the 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("Unknow 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
}
Re: LCD I2C
Ahoj, Mám úplně stejný problém.
Mám taky desku mega, a display 20x4 a mám kompletně rozsvícený první a třetí řádek a nic víc to nedělá.
v programu si myslím že chyba nebude, protože když místo něj dám druhý podobný taky 20x4 tak ten zobrazuje vše normálně.
Spíše jestli není možné že bych ho mohl nějak odpálit tím, že jsem jeho piny (SDA a SCL) poprvé zapojil dle návodu na UNO desku na piny A4 A5
místo komunikačních pinů 20 a 21
Mám taky desku mega, a display 20x4 a mám kompletně rozsvícený první a třetí řádek a nic víc to nedělá.
v programu si myslím že chyba nebude, protože když místo něj dám druhý podobný taky 20x4 tak ten zobrazuje vše normálně.
Spíše jestli není možné že bych ho mohl nějak odpálit tím, že jsem jeho piny (SDA a SCL) poprvé zapojil dle návodu na UNO desku na piny A4 A5
místo komunikačních pinů 20 a 21
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: LCD I2C
Podľa toho, čo popisujete, ten displej bude mať kontróler navrhnutý tak, že je jeho rozmer 2x40 (2 riadky x 40 stĺpcov).
Preto rozsvieti len 20 a 20 znakov v 1. a 2. "riadku" logického usporiadania. Riadky 3 a 4 programovo nemá.
Vyskúšajte to tak
Preto rozsvieti len 20 a 20 znakov v 1. a 2. "riadku" logického usporiadania. Riadky 3 a 4 programovo nemá.
Vyskúšajte to tak
Re: LCD I2C
Ahoj,
displej keď ukazuje iba štvorčeky, nie je inicializovaný.
a na I2C zbernicu treba dať aj pull up rezistory 4K7.
Treba tiež rozlišovať či máš chip PCF8574T alebo PCF8574AT, podľa toho nastavíš I2C adresu.
A tiež ako sú nastavené adresové piny, defaultne sú ako HHH.
Mne to funguje takto:
displej keď ukazuje iba štvorčeky, nie je inicializovaný.
a na I2C zbernicu treba dať aj pull up rezistory 4K7.
Treba tiež rozlišovať či máš chip PCF8574T alebo PCF8574AT, podľa toho nastavíš I2C adresu.
A tiež ako sú nastavené adresové piny, defaultne sú ako HHH.
Mne to funguje takto:
Kód: Vybrat vše
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//pre PCF8574T I2C addresu 0x27 a HHH
//pre PCF8574AT I2C addresu 0x3f a HHH
// L L L 0x20
// H L L 0x21
// L H L 0x22
// H H H 0x27 0x3F
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE );
void setup() {
lcd.begin(16, 2); //znaky riadky
//lcd.begin(20, 4); //znaky riadky
//a takto vypisujes
lcd.backlight(); // zapni podsvietenie(noBacklight -vypni)
lcd.setCursor(0, 0);
lcd.print("PRVY RIADOK");
lcd.setCursor(0, 1);
lcd.print("DRUHY RIADOK");
// delay(5000);
//vycistenie celeho displeja, pozor blikne.
// lcd.clear();
}
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: LCD I2C
A máte tam knihovnu
LiquidCrystal.h
nebo
LiquidCrystal_I2C.h
v tom kodu ?
Použijte kod o příspěvek výše, nebo tento, ten je pro 2004 displej
LiquidCrystal.h
nebo
LiquidCrystal_I2C.h
v tom kodu ?
Použijte kod o příspěvek výše, nebo tento, ten je pro 2004 displej
Kód: Vybrat vše
//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Hello, world!");
lcd.setCursor(2,1);
lcd.print("Ywrobot Arduino!");
lcd.setCursor(0,2);
lcd.print("Arduino LCM IIC 2004");
lcd.setCursor(2,3);
lcd.print("Power By Ec-yuan!");
}
void loop()
{
}
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: LCD I2C
Joo! konecne jede.
Byla spatna I2C adresa. porat jsem zkousel ruzne 0x20 a 0x27 ale funguje az 0x3f :
LiquidCrystal_I2C lcd(0x3f, 20, 4);
dík moc.
Byla spatna I2C adresa. porat jsem zkousel ruzne 0x20 a 0x27 ale funguje az 0x3f :
LiquidCrystal_I2C lcd(0x3f, 20, 4);
dík moc.
Re: LCD I2C
právě proto je I2C scenner, jako tentoByla spatna I2C adresa. porat jsem zkousel ruzne 0x20 a 0x27 ale funguje az 0x3f :
Kód: Vybrat vše
// vypis adresy pripojeneho I2C zarizeni
#include <Wire.h> // standardni knihovna I2C
void setup() {
Serial.begin (115200); // nastavit seriovy terminal na 115200 Bd
while (!Serial) {}
Serial.println ();
Serial.println ("Hledam I2C .....");
Wire.begin();
for (byte i = 1; i < 120; i++)
{
Wire.beginTransmission (i);
if (Wire.endTransmission () == 0)
{
Serial.print ("Nalezena adresa: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX);
Serial.println (")");
delay (1);
}
}
Serial.println ("Hotovo");
}
void loop() {}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 16 hostů