2nd year embedded systems project

Dependencies:   mbed C12832

main.cpp

Committer:
nwabiam
Date:
2020-12-15
Revision:
1:9d7c34bfe43e
Parent:
0:76a291b4c5db

File content as of revision 1:9d7c34bfe43e:

#include "mbed.h"
#include "hcsr04.h"
#include "Solenoid.h"
#include "RGBled.h"
#include "Speaker.h"
#include "C12832.h"
#include <iostream>

HCSR04 sensor(p9, p10);
Solenoid mySolenoid (p18);
Solenoid mySolenoid_2 (p19);
RGBled  redled(p24);
RGBled  greenled(p23);
C12832 lcd(p5, p7, p6, p8, p11);
InterruptIn MagSense(p16);
Speaker Interrupt(p26);
DigitalOut myled1(LED1);

void flip()
{
    while(1) {
        if (mySolenoid.SetSolenoidStatus (false)){
            Interrupt.PlayNote(969, 0.1, 1.0);      // When contact is broken, interrupt the main program and sound the alarm and perform flip funtion
            Interrupt.PlayNote(800, 0.1, 1.0);
            lcd.locate (0,0);
            lcd.printf("Door Open               ");
            redled.SetRGBledStatus (true);
            greenled.SetRGBledStatus (false);
            }
            if (MagSense.read() == 0) { // when magsensor is not broken break the loop
                break; 
            }
    }
}
int main()
{
    redled.SetRGBledStatus (false);
    greenled.SetRGBledStatus (false);
    float distance = sensor.distance();  //constantly read floating distance
    MagSense.rise(&flip);
    lcd.cls();
    while(1) {
        float distance = sensor.distance();
        if (mySolenoid.SetSolenoidStatus (false)) {
                    greenled.SetRGBledStatus (false);
                    redled.SetRGBledStatus (true);
                    lcd.locate(0,0);
                    lcd.printf("**UNLOCKED**               ");
                }
        if (distance < 7)  {
            while (1) {
                mySolenoid.SetSolenoidStatus (true);
                mySolenoid_2.SetSolenoidStatus (true);
                if (mySolenoid.SetSolenoidStatus (true)) {
                    greenled.SetRGBledStatus (true);
                    redled.SetRGBledStatus (false);
                    lcd.locate(0,0);
                    lcd.printf("**LOCKED**             ");
                }              
            }
        } else if (distance > 7) {
            printf("distance =  %f\n",distance);
            wait(0.5); // 1 sec
        }
    }

}