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

Dependencies:   mbed Servo SDFileSystem

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?

UserRevisionLine numberNew 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 }