
2nd year embedded systems project
main.cpp@1:9d7c34bfe43e, 2020-12-15 (annotated)
- 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?
User | Revision | Line number | New 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 |