Nejste přihlášen/a.

Přihlásit se do poradny

 

Arduino LCD displej nezobrazuje

Od: hubert odpovědí: 12 změna:

Zdravim

Dobrý den,

Obracím se na vás s prosbou o pomoc ohledně mého aktuálního problému s Arduinem. Snažím se zobrazit data na LCD displeji, avšak nedaří se mi to a nejsem si jistý, co dělám špatně.

Moje zapojení / můj kód

#include <Wire.h>
#include <virtuabotixRTC.h>
#include <LiquidCrystal.h>

virtuabotixRTC myRTC(6, 7, 8); // Inicializace RTC

// Konstanty pro piny připojené k LCD displeji
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Inicializace LCD

void setup() {
Serial.begin(9600);

// Inicializace LCD displeje
lcd.begin(16, 2);

// Nastavení aktuálního data a času
myRTC.setDS1302Time(10, 10, 18, 7, 18, 9, 2020);
}

void loop() {
// Aktualizace proměnných pro čas nebo přístup k jednotlivým prvkům
myRTC.updateTime();

// Tisk jednotlivých prvků na sériový monitor
Serial.print("Aktuální datum a čas: ");
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.print(myRTC.year);
Serial.print(" ");
Serial.print(myRTC.hours);
Serial.print(":");
Serial.print(myRTC.minutes);
Serial.print(":");
Serial.println(myRTC.seconds);

// Zobrazení datumu a času na LCD displeji
lcd.setCursor(0, 0);
lcd.print("Datum: ");
lcd.print(myRTC.dayofmonth);
lcd.print("/");
lcd.print(myRTC.month);
lcd.print("/");
lcd.print(myRTC.year);

lcd.setCursor(0, 1);
lcd.print("Cas: ");
lcd.print(myRTC.hours);
lcd.print(":");
lcd.print(myRTC.minutes);
lcd.print(":");
lcd.print(myRTC.seconds);

delay(500);
}
Dělám to v programu Arduino IDE 2.3.2 když klikni na Verify a Upload tak je to prej v pořádku ale na LCD Displeji se nic nezobrazí


Arduino LCD displej nezobrazuje
Arduino LCD displej nezobrazuje #2

 

 

12 odpovědí na otázku
Řazeno dle hodnocení

 

 

hodnocení

4x
avatar mikihans
Problém je v tom, že máte v programu použit běžný displej zapojený na 4 digitální výstupy, ale ve skutečnosti máte připojený displej na I2C sběrnici. Musíte použít knihovnu LIQUIDCRYSTAL_I2C.h a tomu taky upravit zbytek programu týkající se LCD.
arduinogetstarted.com/...
hubert
hodnocení

Zdravím, omlouvám se za mé otázky. Vaše rady mi moc pomohly, ale teď, i když LCD displej zobrazuje, je téměř nečitelný. Když se pokouším měnit kontrast, zdá se, že se nic neděje. Nevíte, čím by to mohlo být způsobeno?
Použil jsem tenhle kod :

#include <Wire.h>
#include <virtuabotixRTC.h>
#include <LiquidCrystal_I2C.h>

virtuabotixRTC myRTC(6, 7, 8);
int lcdAddress = 0x27;
int lcdCols = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(lcdAddress, lcdCols, lcdRows);

// Pin pro trimr
const int contrastPin = A0;

void setup() {
Serial.begin(9600);
Wire.begin();
lcd.init();

// Nastavení kontrastu na začátku
analogWrite(contrastPin, 150); // Nastavte úroveň kontrastu dle potřeby

myRTC.setDS1302Time(10, 10, 18, 7, 18, 9, 2020);
}

void loop() {
myRTC.updateTime();

Serial.print("Aktuální datum a čas: ");
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.print(myRTC.year);
Serial.print(" ");
Serial.print(myRTC.hours);
Serial.print(":");
Serial.print(myRTC.minutes);
Serial.print(":");
Serial.println(myRTC.seconds);

lcd.setCursor(0, 0);
lcd.print("Datum: ");
lcd.print(myRTC.dayofmonth);
lcd.print("/");
lcd.print(myRTC.month);
lcd.print("/");
lcd.print(myRTC.year);

lcd.setCursor(0, 1);
lcd.print("Cas: ");
lcd.print(myRTC.hours);
lcd.print(":");
lcd.print(myRTC.minutes);
lcd.print(":");
lcd.print(myRTC.seconds);

delay(500);
}
Jedinou hodnotu co jsem tam měnil tak analogWrite(contrastPin, 150); zkousel jsem 100/150 a žádna změna nenastala

To modré ze zadu displeje je trimr, sroubovackem pootocte
hubert
hodnocení

Zdravím, děkuji za pomoc. Asi jsem se špatně vyjádřil. Můj problém spočívá v tom, že LCD displej příliš slabě osvětluje datum a všechny ostatní informace, ačkoliv je zobrazuje, jsou velmi tmavé.

A už jste tím trimrem pootočil?
Upravuje jas a kontrast.
hubert
hodnocení

Pootočil zkoušel jsem jak na jednu stranu tak i druhou

hubert
hodnocení

Ten jas klesne jen až když tam nahraji ten kód ale pokud dobře vidím tak žádný ovládaní jasu tam nemám. Zkoušel jsem i vyměnit drátky, jinačí počítač, vyměnit baterku v DS1302 a pořád nic.

 

hodnocení

0x
avatar pansvacinka

Pokud nebude fungovat (nezobrazovat znaky) je třeba změnit adresu.
Default je 0x27, v některých případech 0x3F
Při prvním zapnutí si nastavte trimrem kontrast, aby byly nepatrně vidět body matice.
Může se stát, že je výchozí nastavení takové, že na displeji není nic vidět.

 

hodnocení

0x
avatar gilhad

Vypádá to, že používáte knihovnu, arduino.cc/... aniž byste věděl co dělá - že defaultně má podsvícení vypnuté.

Je to vidět v kódu té knihovny, je to vidět v příkladech, kde to podsvícení je explicitně zapínané. S vypnutým podsvícením to prostě bude tmavé.

lcd.backlight();

je funkce kterou asi hledáte a v příkladech je použitá právě za tímto účelem.

Pokud k pinu A0 nic nepřipojíte, tak ani to, že ho navzete contrastPin a budete do něj posílat nějaké PWM nic nevyřeší.

a funkce setBacklight samozřejmě nevyřeší taky nic, když je v sekci ////Unsupported API functions (not implemented in this library) a má prázdné tělo.

hubert
Dekuji za vaši radu ale rád bych se zeptal. Co bych měl tedy použít za knihovnu? Co bych měl tedy použít za kód?

Klidně tuhle, pokud vám jinak vyhovuje, ale hned za

lcd.init();

dát to

lcd.backlight();

hubert
hodnocení

Strašně moc vám děkuji

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]