16-02-2016, 22:15
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.
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;
}