Arduino Polska Forum

Pełna wersja: wyswietlanie numeru na lcd z klawiatury 4x4
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam wszystkich!

Czescia mojego projektu jest zapytanie uzytkownika o podanie numeru telefonu z klawiatury 4x4. Chce zeby cyfra pojawiala sie na lcd, po lazdym nacisnieciu przycisku. Nacisniecie C = zatwierdza i przechodzi do innej czesci programu, a D = usuniecie poprzedniej cyfry. KLawiatura jest podlaczona za pomoca 4bitowego dekodera, zeby zaoszczedzic piny na plytce. Lcd wykorzystuje I2C. Bylbym wdzieczny jakby ktos mogl mnie naprowadzic na wlasciwy tor.

Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

#define PINA 7
#define PINB 6
#define PINC 5
#define PIND 4

char str1[]="Enter mobile number, Press C to confirm. Press D to delete a digit";

int output, key_code, press_status = 0;
char str[16] = {'1', 'A', '3', '2', '4', 'B', '6', '5', '7', 'C', '9',
               '8', '*', 'D', '#', '0'
              };
void setup()
{
 pinMode(4, INPUT);
 pinMode(5, INPUT);
 pinMode(6, INPUT);
 pinMode(7, INPUT);
 Serial.begin(9600);
 delay(3000);
 attachInterrupt(2, Read_Data, FALLING);

 // initialize the LCD
 lcd.begin();
 // Turn on the blacklight and print a message.
 lcd.backlight();
 lcd.print("Hello?");
 lcd.setCursor(0, 1);
 lcd.print("World");
 lcd.clear();
}

void loop()
{
 lcd.setCursor(0, 0);
 //lcd.autoscroll();
 //add auto scroll code to  fit all text
 //on 1 line
 lcd.autoscroll();
 
 for(int i = 0; i<"\n"; i++)
 lcd.print("%c", str1[i]);
 
 delay(500);
 lcd.noAutoscroll();
 
 //lcd.setCursor(0, 1);
 //lcd.print("08");
 //lcd.blink();
 if (press_status) {

   lcd.print(str[output]);

   press_status = 0;
 }
}

void Read_Data()
{
 output = 0;
 output = output | digitalRead(4);
 output = output << 1;
 output = output | digitalRead(5);
 output = output << 1;
 output = output | digitalRead(6);
 output = output << 1;
 output = output | digitalRead(7);
 press_status = 1;
}