A program to emulate a cash register/POS system.
Dependencies: ID12RFID Keypad mbed 4DGL-uLCD-SE
main.cpp@1:eeb4a2a8550c, 2015-03-12 (annotated)
- Committer:
- rgupte3
- Date:
- Thu Mar 12 18:10:46 2015 +0000
- Revision:
- 1:eeb4a2a8550c
- Parent:
- 0:c69a3d7bf65a
The final code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mitchpang | 0:c69a3d7bf65a | 1 | #include "mbed.h" |
mitchpang | 0:c69a3d7bf65a | 2 | #include "ID12RFID.h" |
mitchpang | 0:c69a3d7bf65a | 3 | #include "Keypad.h" |
rgupte3 | 1:eeb4a2a8550c | 4 | #include "uLCD_4DGL.h" |
mitchpang | 0:c69a3d7bf65a | 5 | |
mitchpang | 0:c69a3d7bf65a | 6 | ID12RFID rfid(p14); // uart rx |
mitchpang | 0:c69a3d7bf65a | 7 | Serial pc(USBTX, USBRX); |
mitchpang | 0:c69a3d7bf65a | 8 | Keypad keypad(p29,p24,p25,p27,p28,p30,p26); |
rgupte3 | 1:eeb4a2a8550c | 9 | uLCD_4DGL lcd(p9, p10, p11); |
mitchpang | 0:c69a3d7bf65a | 10 | |
rgupte3 | 1:eeb4a2a8550c | 11 | const int key[]= {5453460, 5469457, 1234567, 2345678}; |
rgupte3 | 1:eeb4a2a8550c | 12 | const int cost[]= {3,4, 5, 6}; |
rgupte3 | 1:eeb4a2a8550c | 13 | const char* item[]= {"milk","bread", "eggs", "juice"}; |
mitchpang | 0:c69a3d7bf65a | 14 | |
rgupte3 | 1:eeb4a2a8550c | 15 | int getIndex(int id); |
rgupte3 | 1:eeb4a2a8550c | 16 | void clearId(); |
rgupte3 | 1:eeb4a2a8550c | 17 | char keypadId[7]; |
mitchpang | 0:c69a3d7bf65a | 18 | |
mitchpang | 0:c69a3d7bf65a | 19 | int main() |
mitchpang | 0:c69a3d7bf65a | 20 | { |
mitchpang | 0:c69a3d7bf65a | 21 | printf("Hello World\n"); |
mitchpang | 0:c69a3d7bf65a | 22 | |
mitchpang | 0:c69a3d7bf65a | 23 | int num; |
rgupte3 | 1:eeb4a2a8550c | 24 | int indexl=0; |
rgupte3 | 1:eeb4a2a8550c | 25 | int Id =4; |
rgupte3 | 1:eeb4a2a8550c | 26 | int indexKeyPad ; |
rgupte3 | 1:eeb4a2a8550c | 27 | int yValue = 2; |
rgupte3 | 1:eeb4a2a8550c | 28 | int totalCost =0; |
rgupte3 | 1:eeb4a2a8550c | 29 | lcd.baudrate(3000000); |
rgupte3 | 1:eeb4a2a8550c | 30 | lcd.background_color(0); |
rgupte3 | 1:eeb4a2a8550c | 31 | lcd.cls(); |
rgupte3 | 1:eeb4a2a8550c | 32 | lcd.locate(0, 0); |
rgupte3 | 1:eeb4a2a8550c | 33 | lcd.printf("Welcome!"); |
rgupte3 | 1:eeb4a2a8550c | 34 | lcd.locate(0, 15); |
rgupte3 | 1:eeb4a2a8550c | 35 | lcd.printf("Total:"); |
mitchpang | 0:c69a3d7bf65a | 36 | |
rgupte3 | 1:eeb4a2a8550c | 37 | int j = 0; |
mitchpang | 0:c69a3d7bf65a | 38 | while(1) { |
mitchpang | 0:c69a3d7bf65a | 39 | if(rfid.readable()) { |
mitchpang | 0:c69a3d7bf65a | 40 | num = rfid.read(); |
rgupte3 | 1:eeb4a2a8550c | 41 | indexl = getIndex(num); |
rgupte3 | 1:eeb4a2a8550c | 42 | |
rgupte3 | 1:eeb4a2a8550c | 43 | pc.printf("id: %d, cost: %d, item: %s \n", key[indexl], cost[indexl], item[indexl]); |
rgupte3 | 1:eeb4a2a8550c | 44 | pc.printf("RFID Tag number : %d, %d\n", num, indexl); |
rgupte3 | 1:eeb4a2a8550c | 45 | |
rgupte3 | 1:eeb4a2a8550c | 46 | lcd.locate(0, yValue); |
rgupte3 | 1:eeb4a2a8550c | 47 | lcd.printf("%s", item[indexl]); |
rgupte3 | 1:eeb4a2a8550c | 48 | lcd.locate(15, yValue); |
rgupte3 | 1:eeb4a2a8550c | 49 | lcd.printf("$%d", cost[indexl]); |
rgupte3 | 1:eeb4a2a8550c | 50 | totalCost = totalCost + cost[indexl]; |
rgupte3 | 1:eeb4a2a8550c | 51 | lcd.locate(15, 15); |
rgupte3 | 1:eeb4a2a8550c | 52 | lcd.printf("$%d", totalCost); |
rgupte3 | 1:eeb4a2a8550c | 53 | yValue = yValue + 2; |
rgupte3 | 1:eeb4a2a8550c | 54 | } |
rgupte3 | 1:eeb4a2a8550c | 55 | |
rgupte3 | 1:eeb4a2a8550c | 56 | if(keypad.isNewAndPressed()) { |
rgupte3 | 1:eeb4a2a8550c | 57 | if(keypad.getKey() == '#') { |
rgupte3 | 1:eeb4a2a8550c | 58 | j=0; |
rgupte3 | 1:eeb4a2a8550c | 59 | lcd.color(BLACK); |
rgupte3 | 1:eeb4a2a8550c | 60 | lcd.locate(0,yValue); |
rgupte3 | 1:eeb4a2a8550c | 61 | lcd.printf("%s", keypadId); |
rgupte3 | 1:eeb4a2a8550c | 62 | lcd.color(GREEN); |
rgupte3 | 1:eeb4a2a8550c | 63 | Id = atoi (keypadId); |
rgupte3 | 1:eeb4a2a8550c | 64 | indexKeyPad = getIndex(Id); |
rgupte3 | 1:eeb4a2a8550c | 65 | pc.printf("%d, %d\n", Id, indexKeyPad); |
rgupte3 | 1:eeb4a2a8550c | 66 | lcd.locate(0, yValue); |
rgupte3 | 1:eeb4a2a8550c | 67 | lcd.printf("%s", item[indexKeyPad]); |
rgupte3 | 1:eeb4a2a8550c | 68 | lcd.locate(15, yValue); |
rgupte3 | 1:eeb4a2a8550c | 69 | lcd.printf("$%d", cost[indexKeyPad]); |
rgupte3 | 1:eeb4a2a8550c | 70 | totalCost = totalCost + cost[indexKeyPad]; |
rgupte3 | 1:eeb4a2a8550c | 71 | lcd.locate(15, 15); |
rgupte3 | 1:eeb4a2a8550c | 72 | lcd.printf("$%d", totalCost); |
rgupte3 | 1:eeb4a2a8550c | 73 | yValue = yValue + 2; |
rgupte3 | 1:eeb4a2a8550c | 74 | clearId(); |
rgupte3 | 1:eeb4a2a8550c | 75 | |
rgupte3 | 1:eeb4a2a8550c | 76 | } else { |
rgupte3 | 1:eeb4a2a8550c | 77 | keypadId[j] = keypad.getKey(); |
rgupte3 | 1:eeb4a2a8550c | 78 | lcd.locate(0, yValue); |
rgupte3 | 1:eeb4a2a8550c | 79 | lcd.printf("%s\n", keypadId); |
rgupte3 | 1:eeb4a2a8550c | 80 | j++; |
mitchpang | 0:c69a3d7bf65a | 81 | } |
mitchpang | 0:c69a3d7bf65a | 82 | |
mitchpang | 0:c69a3d7bf65a | 83 | } |
mitchpang | 0:c69a3d7bf65a | 84 | } |
mitchpang | 0:c69a3d7bf65a | 85 | } |
rgupte3 | 1:eeb4a2a8550c | 86 | int getIndex(int id) |
rgupte3 | 1:eeb4a2a8550c | 87 | { |
rgupte3 | 1:eeb4a2a8550c | 88 | int i, indexl =0; |
rgupte3 | 1:eeb4a2a8550c | 89 | for(i=0; i<4; i++) { |
rgupte3 | 1:eeb4a2a8550c | 90 | if(key[i] == id) { |
rgupte3 | 1:eeb4a2a8550c | 91 | indexl = i; |
rgupte3 | 1:eeb4a2a8550c | 92 | } |
rgupte3 | 1:eeb4a2a8550c | 93 | } |
rgupte3 | 1:eeb4a2a8550c | 94 | return indexl; |
rgupte3 | 1:eeb4a2a8550c | 95 | } |
rgupte3 | 1:eeb4a2a8550c | 96 | |
rgupte3 | 1:eeb4a2a8550c | 97 | void clearId(){ |
rgupte3 | 1:eeb4a2a8550c | 98 | int k; |
rgupte3 | 1:eeb4a2a8550c | 99 | for(k=0; k<7; k++){ |
rgupte3 | 1:eeb4a2a8550c | 100 | keypadId[k] = ' '; |
rgupte3 | 1:eeb4a2a8550c | 101 | } |
rgupte3 | 1:eeb4a2a8550c | 102 | } |