Keypad kullanimi

Dependencies:   mbed mbed-rtos MFRC522 TextLCD keypad

Revision:
1:2fd11c224867
Parent:
0:66860685087d
Child:
2:e0df3db0da50
--- a/main.cpp	Wed Oct 09 08:07:49 2019 +0000
+++ b/main.cpp	Mon Oct 14 07:12:08 2019 +0000
@@ -1,22 +1,85 @@
-  #include "mbed.h"
-  #include "Keypad.h"
- 
+#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', 'A',
-                      '4', '5', '6', 'B',
-                      '7', '8', '9', 'C',
-                      '*', '0', '#', 'D'
-                    };
-   Serial pc(USBTX,USBRX);    
-  int main() {
-      pc.baud(250000);
-      uint32_t key_num;
-      while(true) {
-         while ((key_num = key.read()) != 0){
-             pc.printf("%c\r\n", *(key_table + key_num-1));
-         }
-        
-     }
- }
\ No newline at end of file
+
+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;
+
+}
+
+
+}
+}
\ No newline at end of file