It is a door opener with mbed and Felica(RFID).
Dependencies: mbed Servo SDFileSystem
main.cpp@4:f71760338b1e, 2011-12-25 (annotated)
- Committer:
- ryought
- Date:
- Sun Dec 25 10:29:35 2011 +0000
- Revision:
- 4:f71760338b1e
- Parent:
- 3:046e6f173f9e
- Child:
- 5:4242d287f7f4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryought | 1:26e3869ba544 | 1 | #include "mbed.h" |
ryought | 1:26e3869ba544 | 2 | #include "Servo.h" |
ryought | 1:26e3869ba544 | 3 | #include "TextLCD.h" |
ryought | 1:26e3869ba544 | 4 | #include "SDFileSystem.h" |
ryought | 1:26e3869ba544 | 5 | |
ryought | 1:26e3869ba544 | 6 | TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 |
ryought | 1:26e3869ba544 | 7 | Serial pc(USBTX, USBRX); |
ryought | 1:26e3869ba544 | 8 | SDFileSystem sd(p5, p6, p7, p8, "sd"); |
ryought | 4:f71760338b1e | 9 | Servo myServo(p21); //port-21 = doorlock servo |
ryought | 1:26e3869ba544 | 10 | |
ryought | 3:046e6f173f9e | 11 | FILE *fp = fopen("/sd/rdoor/userlist.txt", "r"); //user list(in sd) |
ryought | 3:046e6f173f9e | 12 | FILE *fp2 = fopen("/sd/rdoor/log.txt", "a"); //logfile(in sd) |
ryought | 3:046e6f173f9e | 13 | |
ryought | 4:f71760338b1e | 14 | //char servoStatus; |
ryought | 4:f71760338b1e | 15 | |
ryought | 4:f71760338b1e | 16 | class Watchdog { |
ryought | 4:f71760338b1e | 17 | public: |
ryought | 4:f71760338b1e | 18 | void kick(float s) { |
ryought | 4:f71760338b1e | 19 | LPC_WDT->WDCLKSEL = 0x1; |
ryought | 4:f71760338b1e | 20 | uint32_t clk = SystemCoreClock / 16; |
ryought | 4:f71760338b1e | 21 | LPC_WDT->WDTC = s * (float)clk; |
ryought | 4:f71760338b1e | 22 | LPC_WDT->WDMOD = 0x3; |
ryought | 4:f71760338b1e | 23 | |
ryought | 4:f71760338b1e | 24 | kick(); |
ryought | 4:f71760338b1e | 25 | } |
ryought | 4:f71760338b1e | 26 | |
ryought | 4:f71760338b1e | 27 | void kick() { |
ryought | 4:f71760338b1e | 28 | LPC_WDT->WDFEED = 0xAA; |
ryought | 4:f71760338b1e | 29 | LPC_WDT->WDFEED = 0x55; |
ryought | 4:f71760338b1e | 30 | } |
ryought | 4:f71760338b1e | 31 | }; |
ryought | 4:f71760338b1e | 32 | |
ryought | 4:f71760338b1e | 33 | Watchdog w; |
ryought | 4:f71760338b1e | 34 | |
ryought | 3:046e6f173f9e | 35 | void logSetup(){ |
ryought | 3:046e6f173f9e | 36 | if (fp2 == NULL) { |
ryought | 3:046e6f173f9e | 37 | lcd.cls(); |
ryought | 4:f71760338b1e | 38 | lcd.printf("couldnt read LOGFILE check SD!"); |
ryought | 3:046e6f173f9e | 39 | error("could not read LOGFILES\n"); |
ryought | 3:046e6f173f9e | 40 | } else { |
ryought | 3:046e6f173f9e | 41 | fprintf(fp2, "[start] Power souce is turned on now.\n"); |
ryought | 3:046e6f173f9e | 42 | } |
ryought | 3:046e6f173f9e | 43 | |
ryought | 3:046e6f173f9e | 44 | if (fp == NULL) { |
ryought | 3:046e6f173f9e | 45 | lcd.cls(); |
ryought | 3:046e6f173f9e | 46 | lcd.printf("could not read USERLIST!"); |
ryought | 3:046e6f173f9e | 47 | fprintf(fp2, "[error] could not read USERLIST.TXT!!\n"); //errorlog out |
ryought | 3:046e6f173f9e | 48 | error("could not read USERLIST\n"); |
ryought | 3:046e6f173f9e | 49 | } else { |
ryought | 3:046e6f173f9e | 50 | lcd.cls(); |
ryought | 3:046e6f173f9e | 51 | lcd.printf("files was completely opened"); |
ryought | 3:046e6f173f9e | 52 | fprintf(fp2, "[ok] USERLIST.TXT was loaded.\n"); |
ryought | 4:f71760338b1e | 53 | wait(1); |
ryought | 3:046e6f173f9e | 54 | } |
ryought | 4:f71760338b1e | 55 | fprintf(fp2, "[ok] motor&SD is ready.\n"); |
ryought | 4:f71760338b1e | 56 | fprintf(fp2, "[ok] system is ready.\n"); |
ryought | 3:046e6f173f9e | 57 | |
ryought | 1:26e3869ba544 | 58 | } |
ryought | 1:26e3869ba544 | 59 | |
ryought | 3:046e6f173f9e | 60 | |
ryought | 4:f71760338b1e | 61 | void openDoor(){ |
ryought | 4:f71760338b1e | 62 | lcd.cls(); |
ryought | 4:f71760338b1e | 63 | lcd.printf("-MOTOR DRIVING-"); |
ryought | 4:f71760338b1e | 64 | fprintf(fp2, "[ok] motor driving started opening.\n"); |
ryought | 4:f71760338b1e | 65 | lcd.locate(0,1); //yoko,retsu |
ryought | 4:f71760338b1e | 66 | |
ryought | 4:f71760338b1e | 67 | for(float p=0; p<=1.0; p += 0.1) { |
ryought | 4:f71760338b1e | 68 | fprintf(fp2, "[ok] motor status: %f\n",p); |
ryought | 4:f71760338b1e | 69 | lcd.printf("*"); |
ryought | 4:f71760338b1e | 70 | myServo = p; |
ryought | 4:f71760338b1e | 71 | wait(0.2); |
ryought | 4:f71760338b1e | 72 | } |
ryought | 4:f71760338b1e | 73 | lcd.cls(); |
ryought | 4:f71760338b1e | 74 | lcd.printf("-DOOR:OPENED-"); |
ryought | 4:f71760338b1e | 75 | fprintf(fp2, "[ok] Door:Opened.\n"); |
ryought | 4:f71760338b1e | 76 | } |
ryought | 4:f71760338b1e | 77 | |
ryought | 4:f71760338b1e | 78 | |
ryought | 4:f71760338b1e | 79 | |
ryought | 4:f71760338b1e | 80 | void closeDoor(){ |
ryought | 4:f71760338b1e | 81 | lcd.cls(); |
ryought | 4:f71760338b1e | 82 | lcd.printf("-MOTOR DRIVING"); |
ryought | 4:f71760338b1e | 83 | fprintf(fp2, "[ok] motor driving started closeing.\n"); |
ryought | 4:f71760338b1e | 84 | lcd.locate(0,1); //yoko,retsu |
ryought | 4:f71760338b1e | 85 | lcd.printf("**********"); |
ryought | 4:f71760338b1e | 86 | lcd.locate(0,1); |
ryought | 4:f71760338b1e | 87 | |
ryought | 4:f71760338b1e | 88 | for(float p=1.0; p>=0; p -= 0.1) { |
ryought | 4:f71760338b1e | 89 | fprintf(fp2, "[ok] motor status: %f\n",p); |
ryought | 4:f71760338b1e | 90 | lcd.printf(" "); |
ryought | 4:f71760338b1e | 91 | myServo = p; |
ryought | 4:f71760338b1e | 92 | wait(0.2); |
ryought | 4:f71760338b1e | 93 | } |
ryought | 4:f71760338b1e | 94 | lcd.cls(); |
ryought | 4:f71760338b1e | 95 | lcd.printf("-DOOR:CLOSED-"); |
ryought | 4:f71760338b1e | 96 | fprintf(fp2, "[ok] Door:Closed.\n"); |
ryought | 4:f71760338b1e | 97 | |
ryought | 4:f71760338b1e | 98 | } |
ryought | 4:f71760338b1e | 99 | |
ryought | 4:f71760338b1e | 100 | |
ryought | 4:f71760338b1e | 101 | |
ryought | 1:26e3869ba544 | 102 | int main() { |
ryought | 4:f71760338b1e | 103 | w.kick(2.5); |
ryought | 1:26e3869ba544 | 104 | lcd.printf("Hello World\n RFID_doorlock"); |
ryought | 3:046e6f173f9e | 105 | printf("hello world"); //for debug |
ryought | 4:f71760338b1e | 106 | wait(1); |
ryought | 1:26e3869ba544 | 107 | |
ryought | 3:046e6f173f9e | 108 | logSetup(); |
ryought | 4:f71760338b1e | 109 | |
ryought | 4:f71760338b1e | 110 | //kokono aida ni felica |
ryought | 4:f71760338b1e | 111 | openDoor(); |
ryought | 4:f71760338b1e | 112 | wait(3); |
ryought | 4:f71760338b1e | 113 | |
ryought | 4:f71760338b1e | 114 | closeDoor(); |
ryought | 4:f71760338b1e | 115 | wait(3); |
ryought | 3:046e6f173f9e | 116 | |
ryought | 3:046e6f173f9e | 117 | //closing files |
ryought | 3:046e6f173f9e | 118 | fprintf(fp2, "[end] thank you.\n \n"); |
ryought | 1:26e3869ba544 | 119 | fclose(fp); |
ryought | 1:26e3869ba544 | 120 | fclose(fp2); |
ryought | 4:f71760338b1e | 121 | w.kick(); |
ryought | 1:26e3869ba544 | 122 | lcd.cls(); |
ryought | 4:f71760338b1e | 123 | lcd.printf("Thank you! bye!"); |
ryought | 1:26e3869ba544 | 124 | } |