Deklarace LCD

Odpovědět
hafca
Příspěvky: 86
Registrován: 23 říj 2017, 23:05
Reputation: 0

Deklarace LCD

Příspěvek od hafca » 02 črc 2020, 15:11

Jsem začátečník a zkouším přepsat kód, který je pro displej z Nokie 5110 na LCD 20x4. V první části kódu void setup() je LCD definované LiquidCrystal_I2C lcd(0x23,20,4); a všechny příkazy lcd.print projdou kompilací bez chyby.
Jenže kód pak pokračuje void loop() a tam už mi vypadává chyba 'lcd' was not declared in this scope. Je tam dost podmínek pro zobrazení a co jsem zkoušel, tak po každé podmínce musím znovu deklarovat to LCD.
Musí to tak být nebo se to dá nějak obejít? Jde mi o zjednodušení aby kód moc nebobtnal.

Uživatelský avatar
KiLLA
Příspěvky: 29
Registrován: 23 čer 2020, 00:47
Reputation: 0

Re: Deklarace LCD

Příspěvek od KiLLA » 02 črc 2020, 15:29

..a kde ten kód je? je tajnej? 8-) vlož to sem a uvidíme, čím to bylo.. :lol:

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Deklarace LCD

Příspěvek od AstroMiK » 02 črc 2020, 15:30

Ta řádka :
LiquidCrystal_I2C lcd(0x23,20,4);

by měla být ještě před blokem setup(). Když je uvnitř bloku setup(), tak platí jen v tom bloku.

PetrB
Příspěvky: 141
Registrován: 20 čer 2018, 13:39
Reputation: 0

Re: Deklarace LCD

Příspěvek od PetrB » 02 črc 2020, 15:30

no, zjevně v setupu definuješ lokální proměnnou.
Máš minimálně dvě možnosti:
1) inicializovat to globálně ještě před setupem:

Kód: Vybrat vše

LiquidCrystal_I2C lcd(0x23,20,4);
...
void setup() {
....
}

void loop() {
...
 tady voláš lcd.necoUdelej();
}
2) definovat si globální ukazatel a inicializaci provést v setupu (to mi přijde takové čistší, ale jde spíše o zvyk - máš kontrolu nad tím, co se kdy vytváří)

Kód: Vybrat vše

LiquidCrystal_I2C *lcd;
...
void setup() {
lcd=new LiquidCrystal_I2C (0x23,20,4);
...
}

void loop() {
...
 tady voláš lcd->necoUdelej();
}

hafca
Příspěvky: 86
Registrován: 23 říj 2017, 23:05
Reputation: 0

Re: Deklarace LCD

Příspěvek od hafca » 02 črc 2020, 16:13

AstroMiK píše:
02 črc 2020, 15:30
Ta řádka :
LiquidCrystal_I2C lcd(0x23,20,4);

by měla být ještě před blokem setup(). Když je uvnitř bloku setup(), tak platí jen v tom bloku.
Zase o něco chytřejší. Takhle deklarované to funguje.
Dík všem za pomoc

to KiLLA
Kód sem dát mohu, ale má to téměř 700 řádků a nechtěl jsem to tady moc plnit.

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Deklarace LCD

Příspěvek od kiRRow » 02 črc 2020, 16:40

Na vkládání kódu je tag CODE ... ikonka s </> ... 700řádků se pak zobrazí krásně barevně v rozměrově přijatelném okénku. Viz příspěvky výše.

hafca
Příspěvky: 86
Registrován: 23 říj 2017, 23:05
Reputation: 0

Re: Deklarace LCD

Příspěvek od hafca » 02 črc 2020, 19:53

OK, budu si to pamatovat pro případ, že bych zase na něčem ztroskotal.

Odpovědět

Kdo je online

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