2nd year embedded systems project

Dependencies:   mbed C12832

Committer:
nwabiam
Date:
Tue Dec 15 18:15:48 2020 +0000
Revision:
1:9d7c34bfe43e
Parent:
0:76a291b4c5db
Simple Electronic Lock (Solenoid) code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
4180_1 0:76a291b4c5db 1 #include "mbed.h"
nwabiam 1:9d7c34bfe43e 2 #include "hcsr04.h"
nwabiam 1:9d7c34bfe43e 3 #include "Solenoid.h"
nwabiam 1:9d7c34bfe43e 4 #include "RGBled.h"
nwabiam 1:9d7c34bfe43e 5 #include "Speaker.h"
nwabiam 1:9d7c34bfe43e 6 #include "C12832.h"
nwabiam 1:9d7c34bfe43e 7 #include <iostream>
nwabiam 1:9d7c34bfe43e 8
nwabiam 1:9d7c34bfe43e 9 HCSR04 sensor(p9, p10);
nwabiam 1:9d7c34bfe43e 10 Solenoid mySolenoid (p18);
nwabiam 1:9d7c34bfe43e 11 Solenoid mySolenoid_2 (p19);
nwabiam 1:9d7c34bfe43e 12 RGBled redled(p24);
nwabiam 1:9d7c34bfe43e 13 RGBled greenled(p23);
nwabiam 1:9d7c34bfe43e 14 C12832 lcd(p5, p7, p6, p8, p11);
nwabiam 1:9d7c34bfe43e 15 InterruptIn MagSense(p16);
nwabiam 1:9d7c34bfe43e 16 Speaker Interrupt(p26);
nwabiam 1:9d7c34bfe43e 17 DigitalOut myled1(LED1);
nwabiam 1:9d7c34bfe43e 18
nwabiam 1:9d7c34bfe43e 19 void flip()
nwabiam 1:9d7c34bfe43e 20 {
4180_1 0:76a291b4c5db 21 while(1) {
nwabiam 1:9d7c34bfe43e 22 if (mySolenoid.SetSolenoidStatus (false)){
nwabiam 1:9d7c34bfe43e 23 Interrupt.PlayNote(969, 0.1, 1.0); // When contact is broken, interrupt the main program and sound the alarm and perform flip funtion
nwabiam 1:9d7c34bfe43e 24 Interrupt.PlayNote(800, 0.1, 1.0);
nwabiam 1:9d7c34bfe43e 25 lcd.locate (0,0);
nwabiam 1:9d7c34bfe43e 26 lcd.printf("Door Open ");
nwabiam 1:9d7c34bfe43e 27 redled.SetRGBledStatus (true);
nwabiam 1:9d7c34bfe43e 28 greenled.SetRGBledStatus (false);
nwabiam 1:9d7c34bfe43e 29 }
nwabiam 1:9d7c34bfe43e 30 if (MagSense.read() == 0) { // when magsensor is not broken break the loop
nwabiam 1:9d7c34bfe43e 31 break;
nwabiam 1:9d7c34bfe43e 32 }
4180_1 0:76a291b4c5db 33 }
4180_1 0:76a291b4c5db 34 }
nwabiam 1:9d7c34bfe43e 35 int main()
nwabiam 1:9d7c34bfe43e 36 {
nwabiam 1:9d7c34bfe43e 37 redled.SetRGBledStatus (false);
nwabiam 1:9d7c34bfe43e 38 greenled.SetRGBledStatus (false);
nwabiam 1:9d7c34bfe43e 39 float distance = sensor.distance(); //constantly read floating distance
nwabiam 1:9d7c34bfe43e 40 MagSense.rise(&flip);
nwabiam 1:9d7c34bfe43e 41 lcd.cls();
nwabiam 1:9d7c34bfe43e 42 while(1) {
nwabiam 1:9d7c34bfe43e 43 float distance = sensor.distance();
nwabiam 1:9d7c34bfe43e 44 if (mySolenoid.SetSolenoidStatus (false)) {
nwabiam 1:9d7c34bfe43e 45 greenled.SetRGBledStatus (false);
nwabiam 1:9d7c34bfe43e 46 redled.SetRGBledStatus (true);
nwabiam 1:9d7c34bfe43e 47 lcd.locate(0,0);
nwabiam 1:9d7c34bfe43e 48 lcd.printf("**UNLOCKED** ");
nwabiam 1:9d7c34bfe43e 49 }
nwabiam 1:9d7c34bfe43e 50 if (distance < 7) {
nwabiam 1:9d7c34bfe43e 51 while (1) {
nwabiam 1:9d7c34bfe43e 52 mySolenoid.SetSolenoidStatus (true);
nwabiam 1:9d7c34bfe43e 53 mySolenoid_2.SetSolenoidStatus (true);
nwabiam 1:9d7c34bfe43e 54 if (mySolenoid.SetSolenoidStatus (true)) {
nwabiam 1:9d7c34bfe43e 55 greenled.SetRGBledStatus (true);
nwabiam 1:9d7c34bfe43e 56 redled.SetRGBledStatus (false);
nwabiam 1:9d7c34bfe43e 57 lcd.locate(0,0);
nwabiam 1:9d7c34bfe43e 58 lcd.printf("**LOCKED** ");
nwabiam 1:9d7c34bfe43e 59 }
nwabiam 1:9d7c34bfe43e 60 }
nwabiam 1:9d7c34bfe43e 61 } else if (distance > 7) {
nwabiam 1:9d7c34bfe43e 62 printf("distance = %f\n",distance);
nwabiam 1:9d7c34bfe43e 63 wait(0.5); // 1 sec
nwabiam 1:9d7c34bfe43e 64 }
nwabiam 1:9d7c34bfe43e 65 }
nwabiam 1:9d7c34bfe43e 66
nwabiam 1:9d7c34bfe43e 67 }
nwabiam 1:9d7c34bfe43e 68