hmc5883l

Dependencies:   HMC5883L LCD4884 MFRC522 eeprom mbed

project.cpp

Committer:
1918june
Date:
2015-12-08
Revision:
4:b56a8a051fdd
Parent:
3:987e54d48f77
Child:
5:4af4865f462b

File content as of revision 4:b56a8a051fdd:

#include "mbed.h"
#include "LCD4884.h"
#include "MFRC522.h"
#include "eeprom.h"
#include "string.h"


// KL25Z Pin for MFRC522 reset
#define MF_RESET    D9


EEPROM  eeprom(I2C_SDA,I2C_SCL,0);
Serial  pc(SERIAL_TX,SERIAL_RX);
LCD4884 lcd;
MFRC522 RFID(D11, D12, D13, D10, MF_RESET);
InterruptIn Sw1(PC_5);
AnalogIn Rnd(A0);
DigitalIn Switch1(PC_5);
DigitalIn Switch2(PC_6);
InterruptIn Sw2(PC_6);

uint8_t mode=0;
uint8_t selectitem=0,place=0;

void ItrSw1()
{
    mode=1;
}

void ItrSw2()
{
    mode=2;
}

void ItrSw3()
{
    mode=0;
}
void printstring(int x,int y,string s,int n,int m)
{
    int k=0;
    lcd.LCD_set_XY(x,y);
    while(k<n) {
        lcd.LCD_write_char(s[k],m);
        k++;
    }
}

int main()
{
    pc.baud(9600);
    Sw1.rise(&ItrSw1);
    Sw2.rise(&ItrSw2);

    string NameJune="Natthanicha",recieveNameJune,SurJune="Jamroonpan",recieveSurJune,IdJune="57340500023",recieveIdJune; //June start @ 1-36
    string NameO="Sirawat",recieveNameO,SurO="Sok",recieveSurO,IdO="57340500071",recieveIdO;
    uint8_t UID[8],recieveUID[8];
    UID[0]=106;
    UID[1]=224;
    UID[2]=37;
    UID[3]=231;
    UID[4]=106;
    UID[5]=76;
    UID[6]=39;
    UID[7]=231;

    eeprom.write(1,&NameJune,11);
    wait_us(1);
    eeprom.write(12,&SurJune,10);
    wait_us(1);
    eeprom.write(22,&IdJune,11);
    wait_us(1);
    eeprom.write(41,&NameO,7);
    wait_us(1);
    eeprom.write(48,&SurO,3);
    wait_us(1);
    eeprom.write(51,&IdO,11);
    wait_us(1);
    eeprom.write(81,UID,8);
    wait_us(1);
    eeprom.read(1,&recieveNameJune,11);
    eeprom.read(12,&recieveSurJune,10);
    eeprom.read(22,&recieveIdJune,11);
    eeprom.read(41,&recieveNameO,7);
    eeprom.read(48,&recieveSurO,3);
    eeprom.read(51,&recieveIdO,11);
    eeprom.read(81,recieveUID,8);
    //pc.printf("%s\n",recieveNameJune);
    //pc.printf("%s\n",recieveSurJune);
    //pc.printf("%s\n",recieveIdJune);
    //pc.printf("%s\n",recieveNameO);
    //pc.printf("%s\n",recieveSurO);
    //pc.printf("%s\n",recieveIdO);
    //pc.printf("%d %d %d %d %d %d %d %d\n",recieveUID[0],recieveUID[1],recieveUID[2],recieveUID[3],recieveUID[4],recieveUID[5],recieveUID[6],recieveUID[7]);
    RFID.PCD_Init();
    lcd.LCD_init();
    lcd.backlight(ON);
    wait(2);
    lcd.LCD_clear();
    while(1) {
        lcd.LCD_write_string(0,0,"SCAN ID CARD",0);
        if ( ! RFID.PICC_IsNewCardPresent()) // Look for new cards
            continue;
        if ( ! RFID.PICC_ReadCardSerial())   // Select one of the cards

            continue;
        pc.printf("Card UID: ");
        for (uint8_t i = 0; i < RFID.uid.size; i++)
            pc.printf(" %d", RFID.uid.uidByte[i]);
        printf("\n\r");
        if( RFID.uid.uidByte[0]==recieveUID[0] && RFID.uid.uidByte[1]==recieveUID[1] && RFID.uid.uidByte[2]==recieveUID[2] && RFID.uid.uidByte[3]==recieveUID[3] ) {
            //จำ
            pc.printf("%s\t%s\t%s\n",recieveNameJune,recieveSurJune,recieveIdJune);
            lcd.LCD_clear();
            string name,sur;
            eeprom.read(1,&name,11);
            eeprom.read(12,&sur,10);
            printstring(0,0,name,11,0);
            printstring(0,1,sur,10,0);
            //lcd.LCD_clear();
        }
        if( RFID.uid.uidByte[0]==recieveUID[4] && RFID.uid.uidByte[1]==recieveUID[5] && RFID.uid.uidByte[2]==recieveUID[6] && RFID.uid.uidByte[3]==recieveUID[7] ) {
            pc.printf("%s\t%s\t%s\n",recieveNameO,recieveSurO,recieveIdO);

            //จำ
            string name,sur;
            lcd.LCD_clear();
            eeprom.read(41,&name,7);
            eeprom.read(48,&sur,3);
            printstring(0,0,name,7,0);
            printstring(0,1,sur,3,0);
        }
        //wait(2);
        //lcd.LCD_clear();
        lcd.LCD_write_string(0,2,"1 select item",0);
        lcd.LCD_write_string(0,3,"2 select place",0);
        //lcd.LCD_write_string(40,5,"cancel",0);
        while(1) {
            if(mode==1) {
                printf("1");
                lcd.LCD_clear();
                lcd.LCD_write_string(0,0,"mode 1",0);
                lcd.LCD_write_string(0,1,"select item",0);
                while(1)    {
                    if(Switch1.read()==1) {
                        char str[10];
                        selectitem++;
                        if(selectitem > 9)
                            selectitem=1;
                        wait(0.2);
                        sprintf(str,"item : %d",selectitem);
                        printstring(3,2,str,8,0);
                    }
                    if(Switch2.read()==1 && selectitem !=0) {
                        mode=1;
                        char str[10];
                        place=((int) (Rnd.read()*1000))%4 +1;
                        wait(0.2);
                        sprintf(str,"place :%d",place);
                        printstring(3,3,str,8,0);
                        break;
                    }
                }
                while(1) { //อ่านค่าจากแผ่นนั่นว่ามันจิ้มตรงมั้ย

                }
            }
            if(mode==2) {//selectplace
                printf("2");
                lcd.LCD_clear();
                lcd.LCD_write_string(0,0,"mode 2",0);
                lcd.LCD_write_string(0,1,"select place",0);
                while(1)    {
                    if(Switch1.read()==1) {
                        mode=2;
                        char str[10];
                        place++;
                        if(place > 4)
                            place=1;
                        wait(0.2);
                        sprintf(str,"place : %d",place);
                        printstring(3,2,str,9,0);
                    }
                    if(Switch2.read()==1 && place!=0) {
                        char str[10];
                        selectitem=((int) (Rnd.read()*1000))%9 +1;
                        wait(0.2);
                        sprintf(str,"item : %d",selectitem);
                        printstring(3,3,str,8,0);
                        break;
                    }
                }
                while(1) {}
            }
            if(mode==3) {
                printf("0");

            }
            printf("mode=%d",mode);

        }  //end while mode loop
    }

}