Keypad kullanimi

Dependencies:   mbed mbed-rtos MFRC522 TextLCD keypad

main.cpp

Committer:
marvas
Date:
2019-10-14
Revision:
1:2fd11c224867
Parent:
0:66860685087d
Child:
2:e0df3db0da50

File content as of revision 1:2fd11c224867:

#include "mbed.h"
#include "Keypad.h"
#include "TextLCD.h"

TextLCD lcd(D11, D12, D7, D8, D9, D10); // rs, e, d4-d7
Keypad key(PC_4, PB_13, PB_14, PB_15, PB_1, PB_2, PB_12, PA_11);

char key_table[] = {
'1', '2', '3', '+',
'4', '5', '6', '-',
'7', '8', '9', '*',
'C', '0', '=', '/'
};
Serial pc(USBTX,USBRX);
char islem;
float sayi=0,sayi2=0;;
float sonuc=0;
int main()
{
pc.baud(250000);
uint32_t key_num;
while(true) {
if ((key_num = key.read()) != 0) {
lcd.printf("%c",*(key_table + key_num-1));
pc.printf("%c \n", *(key_table + key_num-1));
}

switch(*(key_table + key_num-1)) {
case '0'...'9'://0'dan 9'a kadar sayılara basıldığı zaman işlem yapar
sayi= sayi*10 + (*(key_table + key_num-1)- '0');
break;
case '+'://toplama işlemi
sayi2=sayi;
sayi=0;
islem='+';
break;
case '-'://çıkarma işlemi
sayi2=sayi;
sayi=0;
islem='-';
break;
case '*'://çarpma işlemi
sayi2=sayi;
sayi=0;
islem='*';
break;
case '/'://bolme işlemi
sayi2=sayi;
sayi=0;
islem='/';
break;
case '='://eşittir

if(islem=='+')
sonuc=sayi2+sayi;
else if(islem=='-')
sonuc=sayi2-sayi;
else if(islem=='*')
sonuc=sayi2*sayi;
else if(islem=='/')
sonuc=sayi2/sayi;

pc.printf("%f \n",sonuc);
lcd.printf("%.3f",sonuc);
//değişken içeriğini temizle
//değişken içeriği temzilenmezse bir sonraki işlemde kullanılır

sayi=0;
sayi2=0;
sonuc=0;
break;
case 'C':
lcd.cls();
//değişken içeriğini temizle
//değişken içeriği temzilenmezse bir sonraki işlemde kullanılır
sayi=0;
sayi2=0;
sonuc=0;
break;

}


}
}