It is a door opener with mbed and Felica(RFID).

Dependencies:   mbed Servo SDFileSystem

Revision:
4:f71760338b1e
Parent:
3:046e6f173f9e
Child:
5:4242d287f7f4
--- 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