Pinmanee Truz
/
LCD4884_and_LCD5110
get an input from RFID to control the LCD
Fork of LCD4884 by
Diff: main.cpp
- Revision:
- 1:baf91b6482eb
- Child:
- 2:fb07a736e132
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Dec 10 16:17:13 2017 +0000 @@ -0,0 +1,263 @@ +#include "mbed.h" +#include "LCD4884.h" +#include "MFRC522.h" + +#define MF_RESET D8 +#define SPI_CS D10 + +int ReadRFID(); + +//LCD +AnalogIn analog_button_select(A0); +AnalogIn analog_button_press(A1); +AnalogIn analog_button_alarm(A2); +LCD4884 p; +//Serial pc(D1 , D0); + +//RFID +DigitalOut LedGreen(LED1); +Serial pc(SERIAL_TX, SERIAL_RX); +MFRC522 RfChip (PC_12, PC_11, PC_10, SPI_CS, MF_RESET); + + +int main(void) +{ + p.LCD_init(); + p.LCD_write_string(28,2,"Hello",MENU_NORMAL); + uint8_t state = 0; + double select, press, alarm; + int line, rfid_ID; + + while(1) { + + select = analog_button_select.read(); + press = analog_button_press.read(); + + printf("x = %f\n",select); + + if (state == 0) { // Home Page + p.backlight(0); + p.LCD_write_string(28,2,"Hello",MENU_NORMAL); + printf("I am in home page\n"); + alarm = analog_button_alarm.read(); + rfid_ID = ReadRFID(); + + if (alarm == 0) { // Alarm Page + printf("Alarm detected"); + p.LCD_clear(); + state = 2; + } else { + if (rfid_ID == 0) { + printf("Admin detected"); + p.LCD_clear(); + state = 1; + } + } + + } + + else if (state == 1) { //Admin Page + p.backlight(1); + p.LCD_write_string(25,0,"Admin",MENU_HIGHLIGHT); + p.LCD_write_string(0,1,"- Motion Graph",MENU_NORMAL); + p.LCD_write_string(0,2,"- AC Graph",MENU_NORMAL); + p.LCD_write_string(0,3,"- LDR Graph",MENU_NORMAL); + p.LCD_write_string(0,4,"Back",MENU_NORMAL); + + + while(1) { + select = analog_button_select.read(); + press = analog_button_press.read(); + + if (select != 0 && press != 0) { // no press + if (line == 1) { + p.LCD_write_string(25,0,"Admin",MENU_NORMAL); + p.LCD_write_string(0,1,"- Motion Graph",MENU_HIGHLIGHT); //line = 0 + p.LCD_write_string(0,2,"- AC Graph",MENU_NORMAL); + p.LCD_write_string(0,3,"- LDR Graph",MENU_NORMAL); + p.LCD_write_string(0,4,"Back",MENU_NORMAL); + } + + else if (line == 2) { + p.LCD_write_string(25,0,"Admin",MENU_NORMAL); + p.LCD_write_string(0,1,"- Motion Graph",MENU_NORMAL); + p.LCD_write_string(0,2,"- AC Graph",MENU_HIGHLIGHT); //line = 1 + p.LCD_write_string(0,3,"- LDR Graph",MENU_NORMAL); + p.LCD_write_string(0,4,"Back",MENU_NORMAL); + } + + else if (line == 3) { + p.LCD_write_string(25,0,"Admin",MENU_NORMAL); + p.LCD_write_string(0,1,"- Motion Graph",MENU_NORMAL); + p.LCD_write_string(0,2,"- AC Graph",MENU_NORMAL); + p.LCD_write_string(0,3,"- LDR Graph",MENU_HIGHLIGHT); //line = 2 + p.LCD_write_string(0,4,"Back",MENU_NORMAL); + } + + else if (line == 4) { + p.LCD_write_string(25,0,"Admin",MENU_NORMAL); + p.LCD_write_string(0,1,"- Motion Graph",MENU_NORMAL); + p.LCD_write_string(0,2,"- AC Graph",MENU_NORMAL); + p.LCD_write_string(0,3,"- LDR Graph",MENU_NORMAL); + p.LCD_write_string(0,4,"Back",MENU_HIGHLIGHT); //line = 3 + } + } + + else if (select == 0) { // channel selecting button (down) + if (line < 4) { + //printf("line = %d\n",line); + line = line + 1; + wait_ms(250); + } else line = 0; + } + + else if (press == 0) { // press button + //printf("i am in\n"); + //printf("line = %d\n",line); + + if(line == 0) { + state = 1; + line = 0; + break; + } else if(line == 1) { + state = 10; + break; + } else if(line == 2) { + state = 11; + break; + } else if(line == 3) { + state = 12; + break; + } else { + p.LCD_clear(); + state = 0; + line = 0; + break; + } + } + + } + } + + else if (state == 10) { //Admin Page - Motion Graph + p.LCD_clear(); + p.LCD_write_string(7,0,"Motion Graph",MENU_HIGHLIGHT); + wait_ms(250); + + while(1) { + press = analog_button_press.read(); + + if (press == 0) { + printf("press\n"); + p.LCD_clear(); + state = 1; + line = 0; + break; + } + } + } + + else if (state == 11) { //Admin Page - Air Conditioner Graph + p.LCD_clear(); + p.LCD_write_string(20,0,"AC Graph",MENU_HIGHLIGHT); + wait_ms(250); + + while(1) { + press = analog_button_press.read(); + + if (press == 0) { + printf("press\n"); + p.LCD_clear(); + state = 1; + line = 0; + break; + } + } + } + + else if (state == 12) { //Admin Page - LDR Graph + p.LCD_clear(); + p.LCD_write_string(17,0,"LDR Graph",MENU_HIGHLIGHT); + wait_ms(250); + + while(1) { + press = analog_button_press.read(); + + if (press == 0) { + printf("press\n"); + p.LCD_clear(); + state = 1; + line = 0; + break; + } + } + } + + else if (state == 2) { + p.LCD_clear(); + while(1) { + p.backlight(0); + wait_ms(500); + p.backlight(1); + wait_ms(500); + p.LCD_write_string(25,1,"PEASE",MENU_NORMAL); + p.LCD_write_string(10,3,"TAP ID CARD",MENU_NORMAL); + wait_ms(250); + } + } + + } +} + +int ReadRFID() +{ + int data[10]; + int card; + pc.printf("starting...\n"); + + // Init. RC522 Chip + RfChip.PCD_Init(); + + while(true) { + LedGreen != 0; + + // Look for new cards + if(data[0] == 199 && data[1] == 230 &&data[2] == 46 &&data[3] == 0 ) { + //pc.printf(" admin \n"); + data[0] = 0; + data[1] = 0; + data[2] = 0; + data[3] = 0; + card = 0; + return card; + } + if ( ! RfChip.PICC_IsNewCardPresent()) { + wait_ms(500); + continue; + } + + // Select one of the cards + if ( ! RfChip.PICC_ReadCardSerial()) { + wait_ms(500); + continue; + } + + LedGreen = 0; + + // Print Card UID + pc.printf("Card UID: "); + for (uint8_t i = 0; i < RfChip.uid.size; i++) { + data[i] = RfChip.uid.uidByte[i]; + pc.printf("%d ", data[i]); + + } + + //pc.printf("\n\r"); + //pc.printf("\n\r"); + //char data[0]; + //pc.printf(" %X02", data[0]); + //pc.printf(" %s\n", data[0]); + + pc.printf("\n\r"); + } +}