Mobile Security System - Revision 1.0
Dependencies: FXOS8700Q N5110 SDFileSystem SRF02 mbed
main.cpp
- Committer:
- el14dg
- Date:
- 2016-04-02
- Revision:
- 2:e504a3cfe113
- Parent:
- 1:3ae4192d0c25
- Child:
- 3:70a7b64fbd98
File content as of revision 2:e504a3cfe113:
/* ELEC2645 Project Week 19 - Take distance readings from the sensor and limited ticker interrupts Week 20 - Added the SD library Week 21 - Existing code has been edited to get consistent distance readings from the sensor and alll inputs and outputs have been added in main.h Week Easter - Week 22 - Week 23 - Week 24 - */ #include "main.h" int main() { init_serial(); init_K64F(); init_buttons(); lcd.init(); wait(3); g_button_0_flag = 0; g_button_1_flag = 0; g_button_c_flag = 0; g_current_state = 0; screen_selection(); wait(4); g_current_state = 1; while (1) { pc.printf("g_current_state0 = %d ",g_current_state); if (g_button_0_flag) { pc.printf("g_button_0_flag = %d ",g_button_0_flag); g_button_0_flag = 0; g_current_state = fsm[g_current_state].nextState[0]; } pc.printf("g_current_state1 = %d ",g_current_state); if (g_button_1_flag) { pc.printf("g_button_1_flag = %d ",g_button_1_flag); g_button_1_flag = 0; g_current_state = fsm[g_current_state].nextState[1]; } pc.printf("g_current_state2 = %d ",g_current_state); if (g_button_c_flag) { pc.printf("g_button_c_flag = %d ",g_button_c_flag); g_button_c_flag = 0; g_current_state = fsm[g_current_state].nextState[2]; } pc.printf("g_current_state3 = %d ",g_current_state); screen_selection(); // the screen is determined by the current value of g_current_state sleep(); } } void init_serial() { // Ensure terminal software matches pc.baud(9600); } void init_K64F() { // on-board LEDs are active-low, so set pin high to turn them off. r_led = 1; g_led = 1; b_led = 1; // since the on-board switches have external pull-ups, we should disable the internal pull-down // resistors that are enabled by default using InterruptIn sw2.mode(PullNone); sw3.mode(PullNone); } void init_buttons() { button_0.fall(&button_0_isr); button_1.fall(&button_1_isr); button_c.fall(&button_c_isr); button_0.mode(PullDown); button_1.mode(PullDown); button_c.mode(PullDown); } void read_distance_isr() { g_read_distance_flag = 1; } void button_0_isr() { g_button_0_flag = 1; } void button_1_isr() { g_button_1_flag = 1; } void button_c_isr() { g_button_c_flag = 1; } void get_distance() { distance[read_distance_counter] = srf02.getDistanceCm(); read_distance_counter++; if (read_distance_counter == 10) { for (int i = 0; i < 10; i++) { one_second_distance = one_second_distance + distance[i]; } one_second_avg_distance = one_second_distance / 10; length = sprintf(buffer,"D = %.f cm",one_second_avg_distance); if (length <= 14) lcd.printString(buffer,0,2); lcd.refresh(); read_distance_counter = 0; one_second_distance = 0; } } void state_0_screen() { lcd.clear(); lcd.printString("MobileSecurity",0,0); lcd.printString("System",27,1); lcd.printString("Daniel Gibbons",0,4); lcd.refresh(); } void state_1_screen() { lcd.clear(); lcd.printString("Set Alarm",15,1); lcd.printString("Set New Pin",9,4); lcd.refresh(); } void state_2_3_6_7_screen() { lcd.clear(); lcd.printString("Enter 4 Digit",3,1); lcd.printString("Pin Below",15,2); lcd.refresh(); } void state_4_screen() { lcd.clear(); lcd.printString("Setting",21,1); lcd.refresh(); } void state_5_screen() { lcd.clear(); lcd.printString("Alarm Set",15,1); lcd.printString("DEACTIVATE?",9,4); lcd.refresh(); } void state_8_screen() { lcd.clear(); lcd.printString("ALARM",27,1); lcd.printString("TRIGGERED",15,2); lcd.refresh(); } void screen_selection() { if (g_current_state == 0) { state_0_screen(); lcd.printString("0",0,0); } else if (g_current_state == 1) { state_1_screen(); lcd.printString("1",0,0); } else if (g_current_state == 2) { state_2_3_6_7_screen(); lcd.printString("2",0,0); } else if (g_current_state == 3) { state_2_3_6_7_screen(); lcd.printString("3",0,0); } else if (g_current_state == 4) { state_4_screen(); lcd.printString("4",0,0); } else if (g_current_state == 5) { state_5_screen(); lcd.printString("5",0,0); } else if (g_current_state == 6) { state_2_3_6_7_screen(); lcd.printString("6",0,0); } else if (g_current_state == 7) { state_2_3_6_7_screen(); lcd.printString("7",0,0); } else { state_8_screen(); lcd.printString("8",0,0); } }