Keypad na LCD 16x2

Odpovědět
anton49
Příspěvky: 4
Registrován: 25 bře 2018, 20:11
Reputation: 0

Keypad na LCD 16x2

Příspěvek od anton49 » 25 bře 2018, 20:36

Dobrý den, jsem začátečník a potřebuji radu.
Zapojení: Klavesníce 4x4 – Arduino UNO – převodník I2C – LCD 16x2.
Na prvním řádku mám natrvdo text.
Až sem je všechno v pořádku. Problém: potřebuji na druhý řádek dostat číselnou řadu, kterou pošlu z klávesnice a mít možnost tuto řadu vynulovat.

#include <LiquidCrystal_I2C.h>

#include <Wire.h>

#include <Keypad.h>



const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9,8,7,6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5,4,3,2}; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27,16,2);

void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" VOR_____NDB ");

}

void loop(){
char key = customKeypad.getKey();
lcd.setCursor(1,1);


díky za radu

Uživatelský avatar
gilhad
Příspěvky: 788
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Keypad na LCD 16x2

Příspěvek od gilhad » 26 bře 2018, 06:57

Kód: Vybrat vše


void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" VOR_____NDB ");
lcd.setCursor(0,1);
}

void loop(){
char key = customKeypad.getKey();
lcd.print(char);
if (char == "#") {
	lcd.setCursor(0,1);
	lcd.print("                ");
	lcd.setCursor(0,1);
	};
};


HaVecko
Příspěvky: 14
Registrován: 11 bře 2018, 10:25
Reputation: 0

Re: Keypad na LCD 16x2

Příspěvek od HaVecko » 26 bře 2018, 14:58

Tak tak, přepsat mezerami.

Uživatelský avatar
gilhad
Příspěvky: 788
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Keypad na LCD 16x2

Příspěvek od gilhad » 26 bře 2018, 16:25

ehm, pochopitelne

Kód: Vybrat vše

lcd.print(key);
if (key == "#")
(To je tak, kdyz clovek pise, zatimco by mel uz davno jit spat)

anton49
Příspěvky: 4
Registrován: 25 bře 2018, 20:11
Reputation: 0

Re: Keypad na LCD 16x2

Příspěvek od anton49 » 26 bře 2018, 18:00

ISO C++ forbids comparison between pointer and integer [-fpermissive]

if (key == "#")

Uživatelský avatar
SkullKeep
Příspěvky: 291
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Keypad na LCD 16x2

Příspěvek od SkullKeep » 26 bře 2018, 20:13

anton49 píše:
26 bře 2018, 18:00
ISO C++ forbids comparison between pointer and integer [-fpermissive]

if (key == "#")
Zkusit prepsat na

Kód: Vybrat vše

if (key == '#')
protoze konstanta char je znak (' ')a ne textove pole(" ").
:twisted: :?: :arrow: :geek: P. Q. M.

anton49
Příspěvky: 4
Registrován: 25 bře 2018, 20:11
Reputation: 0

Re: Keypad na LCD 16x2

Příspěvek od anton49 » 26 bře 2018, 21:41

díky, pomohlo to. Jen na Keypad to nereaguje :)

anton49
Příspěvky: 4
Registrován: 25 bře 2018, 20:11
Reputation: 0

Re: Keypad na LCD 16x2

Příspěvek od anton49 » 27 bře 2018, 18:39

void setup()
{

LiquidCrystal_I2C lcd(0x27,16,2);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" VOR_____NDB ");
lcd.setCursor(0,1);

}

void loop(){
char customKey = customKeypad.getKey();

if (customKey) {
lcd.print(customKey);
lcd.backlight();



} };

Už to funguje. Ještě potřebuji jednu radu. Jak vymazat druhý řádek, abych na něj mohl znova psát.

Uživatelský avatar
SkullKeep
Příspěvky: 291
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Keypad na LCD 16x2

Příspěvek od SkullKeep » 27 bře 2018, 19:45

Snad pomocí funkce se smyčkou:

Kód: Vybrat vše

void vymaz_radek();{
for ( byte i=0; i<16;i++)
{
lcd.setCursor(i,1); // toto posune kurzor o kus dal
lcd.print(" "); // prepsani znaku
}
lcd.setCursor(0,1); // zpet na zacatek
}
:twisted: :?: :arrow: :geek: P. Q. M.

Odpovědět

Kdo je online

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