Sara Karimi / Mbed 2 deprecated IntruptKeypadTerminal

Dependencies:   mbed

Committer:
sarakarimi
Date:
Wed Dec 10 00:43:08 2014 +0000
Revision:
0:e6c4994727c2
Child:
1:857e1fecbe35
all

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sarakarimi 0:e6c4994727c2 1 #include "mbed.h"
sarakarimi 0:e6c4994727c2 2 #include <string>
sarakarimi 0:e6c4994727c2 3
sarakarimi 0:e6c4994727c2 4 using namespace std;
sarakarimi 0:e6c4994727c2 5
sarakarimi 0:e6c4994727c2 6 DigitalOut R1 (D6);
sarakarimi 0:e6c4994727c2 7 DigitalOut R2 (D7);
sarakarimi 0:e6c4994727c2 8 DigitalOut R3 (D8);
sarakarimi 0:e6c4994727c2 9 DigitalOut R4 (D9);
sarakarimi 0:e6c4994727c2 10
sarakarimi 0:e6c4994727c2 11 InterruptIn C1 (D10);
sarakarimi 0:e6c4994727c2 12 DigitalIn C2 (D11);
sarakarimi 0:e6c4994727c2 13 DigitalIn C3 (D12);
sarakarimi 0:e6c4994727c2 14
sarakarimi 0:e6c4994727c2 15 DigitalOut keyled(LED1);
sarakarimi 0:e6c4994727c2 16 DigitalOut flash(LED4);
sarakarimi 0:e6c4994727c2 17
sarakarimi 0:e6c4994727c2 18 AnalogIn ain(PTB0);
sarakarimi 0:e6c4994727c2 19
sarakarimi 0:e6c4994727c2 20 Timer t;
sarakarimi 0:e6c4994727c2 21 float tm ;
sarakarimi 0:e6c4994727c2 22
sarakarimi 0:e6c4994727c2 23 char key;
sarakarimi 0:e6c4994727c2 24 int s=0;
sarakarimi 0:e6c4994727c2 25
sarakarimi 0:e6c4994727c2 26 float value_adc =0.0f;
sarakarimi 0:e6c4994727c2 27 int dig_value = 0;
sarakarimi 0:e6c4994727c2 28
sarakarimi 0:e6c4994727c2 29
sarakarimi 0:e6c4994727c2 30 unsigned char arrkey[12]={ '1' , '2' , '3' ,
sarakarimi 0:e6c4994727c2 31 '4' , '5' , '6' ,
sarakarimi 0:e6c4994727c2 32 '7' , '8' , '9' ,
sarakarimi 0:e6c4994727c2 33 '*' , '0' , '#' };
sarakarimi 0:e6c4994727c2 34
sarakarimi 0:e6c4994727c2 35
sarakarimi 0:e6c4994727c2 36 void unlock (){
sarakarimi 0:e6c4994727c2 37 printf("DOOR UNLOCK: Welcome!\n\r");
sarakarimi 0:e6c4994727c2 38 }
sarakarimi 0:e6c4994727c2 39
sarakarimi 0:e6c4994727c2 40 void lock (){
sarakarimi 0:e6c4994727c2 41 printf("DOOR LOCK\n\r");
sarakarimi 0:e6c4994727c2 42 }
sarakarimi 0:e6c4994727c2 43
sarakarimi 0:e6c4994727c2 44 unsigned char char_string[4]= {'*' ,'*' ,'*' ,'*'};
sarakarimi 0:e6c4994727c2 45 unsigned char password[4]={'1' , '2' , '3' , '4'};
sarakarimi 0:e6c4994727c2 46 unsigned char passwordA[4]={'4' , '5' , '6' , '7'};
sarakarimi 0:e6c4994727c2 47
sarakarimi 0:e6c4994727c2 48 unsigned char keypad(){
sarakarimi 0:e6c4994727c2 49 unsigned char r,b;
sarakarimi 0:e6c4994727c2 50
sarakarimi 0:e6c4994727c2 51 while(1){
sarakarimi 0:e6c4994727c2 52
sarakarimi 0:e6c4994727c2 53 for (r=0; r<4; r++){
sarakarimi 0:e6c4994727c2 54 b=4;
sarakarimi 0:e6c4994727c2 55 R1 = 1; R2 = 1 ; R3 = 1 ; R4 = 1;
sarakarimi 0:e6c4994727c2 56 if (r == 0) R1 = 0;
sarakarimi 0:e6c4994727c2 57 if (r == 1) R2 = 0;
sarakarimi 0:e6c4994727c2 58 if (r == 2) R3 = 0;
sarakarimi 0:e6c4994727c2 59 if (r == 3) R4 = 0;
sarakarimi 0:e6c4994727c2 60
sarakarimi 0:e6c4994727c2 61 if(C1==0) b=0;
sarakarimi 0:e6c4994727c2 62 if(C2==0) b=1;
sarakarimi 0:e6c4994727c2 63 if(C3==0) b=2;
sarakarimi 0:e6c4994727c2 64
sarakarimi 0:e6c4994727c2 65 if ((!(b==4))){
sarakarimi 0:e6c4994727c2 66 key=arrkey[(r*3)+b];
sarakarimi 0:e6c4994727c2 67 while(C1==0);
sarakarimi 0:e6c4994727c2 68 while(C2==0);
sarakarimi 0:e6c4994727c2 69 while(C3==0);
sarakarimi 0:e6c4994727c2 70
sarakarimi 0:e6c4994727c2 71 wait(0.2);
sarakarimi 0:e6c4994727c2 72
sarakarimi 0:e6c4994727c2 73 char_string[s] = key;
sarakarimi 0:e6c4994727c2 74 s++;
sarakarimi 0:e6c4994727c2 75 return key;
sarakarimi 0:e6c4994727c2 76 }
sarakarimi 0:e6c4994727c2 77
sarakarimi 0:e6c4994727c2 78 }
sarakarimi 0:e6c4994727c2 79 }
sarakarimi 0:e6c4994727c2 80 }
sarakarimi 0:e6c4994727c2 81
sarakarimi 0:e6c4994727c2 82 void handleKeypad (){
sarakarimi 0:e6c4994727c2 83 //C1.disable_irq ();
sarakarimi 0:e6c4994727c2 84
sarakarimi 0:e6c4994727c2 85 t.start();
sarakarimi 0:e6c4994727c2 86
sarakarimi 0:e6c4994727c2 87 int firsttime = 0;
sarakarimi 0:e6c4994727c2 88 keyled = 0;
sarakarimi 0:e6c4994727c2 89
sarakarimi 0:e6c4994727c2 90 if (firsttime == 0)
sarakarimi 0:e6c4994727c2 91 s = -1;
sarakarimi 0:e6c4994727c2 92
sarakarimi 0:e6c4994727c2 93 while (1){
sarakarimi 0:e6c4994727c2 94
sarakarimi 0:e6c4994727c2 95 //tm = t.read();
sarakarimi 0:e6c4994727c2 96
sarakarimi 0:e6c4994727c2 97 key = keypad();
sarakarimi 0:e6c4994727c2 98
sarakarimi 0:e6c4994727c2 99 if (s == 4){
sarakarimi 0:e6c4994727c2 100
sarakarimi 0:e6c4994727c2 101 //t.reset();
sarakarimi 0:e6c4994727c2 102 firsttime = 1;
sarakarimi 0:e6c4994727c2 103 printf("Password: ");
sarakarimi 0:e6c4994727c2 104 for (int i = 0 ; i < 4 ; i++)
sarakarimi 0:e6c4994727c2 105 printf("%c", char_string[i]);
sarakarimi 0:e6c4994727c2 106 printf("\n\r");
sarakarimi 0:e6c4994727c2 107 s = 0;
sarakarimi 0:e6c4994727c2 108
sarakarimi 0:e6c4994727c2 109 int j = 0;
sarakarimi 0:e6c4994727c2 110 int matchSara = 1;
sarakarimi 0:e6c4994727c2 111 while (j < 4){
sarakarimi 0:e6c4994727c2 112 if (char_string [j] == password[j])
sarakarimi 0:e6c4994727c2 113 j++;
sarakarimi 0:e6c4994727c2 114 else{
sarakarimi 0:e6c4994727c2 115 matchSara = 0;
sarakarimi 0:e6c4994727c2 116 break;
sarakarimi 0:e6c4994727c2 117 }
sarakarimi 0:e6c4994727c2 118 }
sarakarimi 0:e6c4994727c2 119
sarakarimi 0:e6c4994727c2 120 int k = 0;
sarakarimi 0:e6c4994727c2 121 int matchAmir = 1;
sarakarimi 0:e6c4994727c2 122 while (k < 4){
sarakarimi 0:e6c4994727c2 123 if (char_string [k] == passwordA[k])
sarakarimi 0:e6c4994727c2 124 k++;
sarakarimi 0:e6c4994727c2 125 else{
sarakarimi 0:e6c4994727c2 126 matchAmir = 0;
sarakarimi 0:e6c4994727c2 127 break;
sarakarimi 0:e6c4994727c2 128 }
sarakarimi 0:e6c4994727c2 129 }
sarakarimi 0:e6c4994727c2 130
sarakarimi 0:e6c4994727c2 131 if (matchSara == 1){
sarakarimi 0:e6c4994727c2 132 printf("MATCH Sara\n\r");
sarakarimi 0:e6c4994727c2 133 unlock();
sarakarimi 0:e6c4994727c2 134 t.reset();
sarakarimi 0:e6c4994727c2 135 break;
sarakarimi 0:e6c4994727c2 136 }
sarakarimi 0:e6c4994727c2 137 else if (matchAmir == 1){
sarakarimi 0:e6c4994727c2 138 printf("MATCH Amir\n\r");
sarakarimi 0:e6c4994727c2 139 unlock();
sarakarimi 0:e6c4994727c2 140 t.reset();
sarakarimi 0:e6c4994727c2 141 break;
sarakarimi 0:e6c4994727c2 142 }
sarakarimi 0:e6c4994727c2 143 else{
sarakarimi 0:e6c4994727c2 144 printf("WRONG\n\r");
sarakarimi 0:e6c4994727c2 145 printf("lock for wrong password\n\r");
sarakarimi 0:e6c4994727c2 146 t.reset();
sarakarimi 0:e6c4994727c2 147 break;
sarakarimi 0:e6c4994727c2 148 //t.reset();
sarakarimi 0:e6c4994727c2 149 }
sarakarimi 0:e6c4994727c2 150
sarakarimi 0:e6c4994727c2 151 }
sarakarimi 0:e6c4994727c2 152 if (t.read() > 7){
sarakarimi 0:e6c4994727c2 153 lock();
sarakarimi 0:e6c4994727c2 154 t.stop();
sarakarimi 0:e6c4994727c2 155 t.reset();
sarakarimi 0:e6c4994727c2 156 break;
sarakarimi 0:e6c4994727c2 157 } // end timer
sarakarimi 0:e6c4994727c2 158
sarakarimi 0:e6c4994727c2 159 } // end while
sarakarimi 0:e6c4994727c2 160
sarakarimi 0:e6c4994727c2 161 }
sarakarimi 0:e6c4994727c2 162
sarakarimi 0:e6c4994727c2 163
sarakarimi 0:e6c4994727c2 164 void TestIntrpt(){
sarakarimi 0:e6c4994727c2 165 int counter = 0;
sarakarimi 0:e6c4994727c2 166
sarakarimi 0:e6c4994727c2 167 t.start();
sarakarimi 0:e6c4994727c2 168
sarakarimi 0:e6c4994727c2 169 while (1){
sarakarimi 0:e6c4994727c2 170 counter++ ;
sarakarimi 0:e6c4994727c2 171 keyled = 1;
sarakarimi 0:e6c4994727c2 172 wait(0.2);
sarakarimi 0:e6c4994727c2 173 keyled = 0;
sarakarimi 0:e6c4994727c2 174 wait(0.2);
sarakarimi 0:e6c4994727c2 175 // tm = t.read();
sarakarimi 0:e6c4994727c2 176 if (t.read() > 5){
sarakarimi 0:e6c4994727c2 177 keyled = 1;
sarakarimi 0:e6c4994727c2 178 t.stop();
sarakarimi 0:e6c4994727c2 179 t.reset();
sarakarimi 0:e6c4994727c2 180 C1.enable_irq();
sarakarimi 0:e6c4994727c2 181 break;
sarakarimi 0:e6c4994727c2 182 }
sarakarimi 0:e6c4994727c2 183 }
sarakarimi 0:e6c4994727c2 184 }
sarakarimi 0:e6c4994727c2 185
sarakarimi 0:e6c4994727c2 186
sarakarimi 0:e6c4994727c2 187 int main() {
sarakarimi 0:e6c4994727c2 188
sarakarimi 0:e6c4994727c2 189 keyled = 1;
sarakarimi 0:e6c4994727c2 190 C1.fall(&handleKeypad);
sarakarimi 0:e6c4994727c2 191
sarakarimi 0:e6c4994727c2 192 while(1) { // wait around, interrupts will interrupt this!
sarakarimi 0:e6c4994727c2 193
sarakarimi 0:e6c4994727c2 194 value_adc = ain.read();
sarakarimi 0:e6c4994727c2 195 printf("Analog %5.2f\n\r",value_adc);
sarakarimi 0:e6c4994727c2 196
sarakarimi 0:e6c4994727c2 197 if (value_adc < 0.2){
sarakarimi 0:e6c4994727c2 198 printf("Nobody is here!\n\r");
sarakarimi 0:e6c4994727c2 199 }
sarakarimi 0:e6c4994727c2 200 else {
sarakarimi 0:e6c4994727c2 201 printf("Somebody is here!\n\r");
sarakarimi 0:e6c4994727c2 202 }
sarakarimi 0:e6c4994727c2 203 wait(2);
sarakarimi 0:e6c4994727c2 204 //lcd.cls();
sarakarimi 0:e6c4994727c2 205
sarakarimi 0:e6c4994727c2 206 }
sarakarimi 0:e6c4994727c2 207
sarakarimi 0:e6c4994727c2 208 //TestIntrpt();
sarakarimi 0:e6c4994727c2 209 //handleKeypad();
sarakarimi 0:e6c4994727c2 210 }