Keypad na LCD 16x2
Keypad na LCD 16x2
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
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
Re: Keypad na LCD 16x2
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);
};
};
Re: Keypad na LCD 16x2
Tak tak, přepsat mezerami.
Re: Keypad na LCD 16x2
ehm, pochopitelne
(To je tak, kdyz clovek pise, zatimco by mel uz davno jit spat)
Kód: Vybrat vše
lcd.print(key);
if (key == "#")
Re: Keypad na LCD 16x2
ISO C++ forbids comparison between pointer and integer [-fpermissive]
if (key == "#")
if (key == "#")
Re: Keypad na LCD 16x2
Zkusit prepsat na
Kód: Vybrat vše
if (key == '#')
P. Q. M.
Re: Keypad na LCD 16x2
díky, pomohlo to. Jen na Keypad to nereaguje
Re: Keypad na LCD 16x2
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.
{
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.
Re: Keypad na LCD 16x2
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
}
P. Q. M.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host