LCD I2C

Odpovědět
TymiCZ
Příspěvky: 4
Registrován: 22 říj 2017, 20:32
Reputation: 0

LCD I2C

Příspěvek od TymiCZ » 06 lis 2017, 20:39

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?

Strojek
Příspěvky: 7
Registrován: 20 srp 2017, 10:32
Reputation: 0

Re: LCD I2C

Příspěvek od Strojek » 07 lis 2017, 07:30

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
}

zdrnd
Příspěvky: 4
Registrován: 10 led 2021, 22:34
Reputation: 0

Re: LCD I2C

Příspěvek od zdrnd » 10 led 2021, 22:56

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 :?:

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: LCD I2C

Příspěvek od martinius96 » 11 led 2021, 00:40

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 :)

jonasplv
Příspěvky: 13
Registrován: 19 bře 2019, 21:41
Reputation: 0

Re: LCD I2C

Příspěvek od jonasplv » 11 led 2021, 09:28

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:

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();
  }

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: LCD I2C

Příspěvek od pavel1tu » 11 led 2021, 15:44

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

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"

zdrnd
Příspěvky: 4
Registrován: 10 led 2021, 22:34
Reputation: 0

Re: LCD I2C

Příspěvek od zdrnd » 12 led 2021, 23:01

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.

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: LCD I2C

Příspěvek od Hanz » 13 led 2021, 06:51

Byla spatna I2C adresa. porat jsem zkousel ruzne 0x20 a 0x27 ale funguje az 0x3f :
právě proto je I2C scenner, jako tento

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() {}
a vypíše ti po nahrátí tohle : https://ctrlv.cz/vSQv ;)

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 15 hostů