It is a door opener with mbed and Felica(RFID).
Dependencies: mbed Servo SDFileSystem
Diff: main.cpp
- Revision:
- 4:f71760338b1e
- Parent:
- 3:046e6f173f9e
- Child:
- 5:4242d287f7f4
diff -r 046e6f173f9e -r f71760338b1e main.cpp --- a/main.cpp Sun Dec 25 02:30:11 2011 +0000 +++ b/main.cpp Sun Dec 25 10:29:35 2011 +0000 @@ -6,14 +6,36 @@ TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 Serial pc(USBTX, USBRX); SDFileSystem sd(p5, p6, p7, p8, "sd"); +Servo myServo(p21); //port-21 = doorlock servo FILE *fp = fopen("/sd/rdoor/userlist.txt", "r"); //user list(in sd) FILE *fp2 = fopen("/sd/rdoor/log.txt", "a"); //logfile(in sd) +//char servoStatus; + +class Watchdog { +public: + void kick(float s) { + LPC_WDT->WDCLKSEL = 0x1; + uint32_t clk = SystemCoreClock / 16; + LPC_WDT->WDTC = s * (float)clk; + LPC_WDT->WDMOD = 0x3; + + kick(); + } + + void kick() { + LPC_WDT->WDFEED = 0xAA; + LPC_WDT->WDFEED = 0x55; + } +}; + +Watchdog w; + void logSetup(){ if (fp2 == NULL) { lcd.cls(); - lcd.printf("could not read LOGFILES! please check it"); + lcd.printf("couldnt read LOGFILE check SD!"); error("could not read LOGFILES\n"); } else { fprintf(fp2, "[start] Power souce is turned on now.\n"); @@ -28,24 +50,75 @@ lcd.cls(); lcd.printf("files was completely opened"); fprintf(fp2, "[ok] USERLIST.TXT was loaded.\n"); + wait(1); } - - fprintf(fp2, "[ok] system is ready\n"); + fprintf(fp2, "[ok] motor&SD is ready.\n"); + fprintf(fp2, "[ok] system is ready.\n"); } +void openDoor(){ + lcd.cls(); + lcd.printf("-MOTOR DRIVING-"); + fprintf(fp2, "[ok] motor driving started opening.\n"); + lcd.locate(0,1); //yoko,retsu + + for(float p=0; p<=1.0; p += 0.1) { + fprintf(fp2, "[ok] motor status: %f\n",p); + lcd.printf("*"); + myServo = p; + wait(0.2); + } + lcd.cls(); + lcd.printf("-DOOR:OPENED-"); + fprintf(fp2, "[ok] Door:Opened.\n"); +} + + + +void closeDoor(){ + lcd.cls(); + lcd.printf("-MOTOR DRIVING"); + fprintf(fp2, "[ok] motor driving started closeing.\n"); + lcd.locate(0,1); //yoko,retsu + lcd.printf("**********"); + lcd.locate(0,1); + + for(float p=1.0; p>=0; p -= 0.1) { + fprintf(fp2, "[ok] motor status: %f\n",p); + lcd.printf(" "); + myServo = p; + wait(0.2); + } + lcd.cls(); + lcd.printf("-DOOR:CLOSED-"); + fprintf(fp2, "[ok] Door:Closed.\n"); + +} + + + int main() { + w.kick(2.5); lcd.printf("Hello World\n RFID_doorlock"); printf("hello world"); //for debug + wait(1); logSetup(); + + //kokono aida ni felica + openDoor(); + wait(3); + + closeDoor(); + wait(3); - //closing files fprintf(fp2, "[end] thank you.\n \n"); fclose(fp); fclose(fp2); + w.kick(); lcd.cls(); - lcd.printf("Thank you! i will sleep soon"); + lcd.printf("Thank you! bye!"); } \ No newline at end of file