Fully integrated working system

Dependencies:   Speaker mbed mbed-rtos 4DGL-uLCD-SE hcsr04

main.cpp

Committer:
fiachra
Date:
2020-12-16
Revision:
12:730a95b81992
Parent:
11:68194bd43e0b
Child:
13:a3cdbad9daf4

File content as of revision 12:730a95b81992:

#include "mbed.h"
#include "hcsr04.h"
#include "Speaker.h"
#include "uLCD_4DGL.h"

HCSR04  distSens(p25,p6);
Serial pc(USBTX, USBRX);
Speaker mySpeaker(p18);
uLCD_4DGL uLCD(p9,p10,p11);

unsigned int dist;
float averageDistance();
void beeping();
float i;

int main()
{
    uLCD.text_width(1);
    uLCD.text_height(1);
    uLCD.locate(10, 12);
    uLCD.color(BLUE);
    uLCD.printf(" Reverse           Sensor");
    uLCD.rectangle(65, 117, 126, 127, 0x0000FF);
    while(1) {
        distSens.start();
        averageDistance();
        beeping();
        uLCD.filled_rectangle(66, 118, 125, 127, 0x000000);
        pc.printf("cm:%d\n",dist );
        uLCD.text_width(1);
        uLCD.text_height(1);
        uLCD.locate(10, 15);
        uLCD.color(WHITE);
        uLCD.printf("cm:%1d\n",dist );
    }
}
float averageDistance()
{
        int a = distSens.get_dist_cm();
        int b = distSens.get_dist_cm();
        int c = distSens.get_dist_cm();
        int d = distSens.get_dist_cm();
        int e = distSens.get_dist_cm();
        int f = distSens.get_dist_cm();
        int g = distSens.get_dist_cm();
        int h = distSens.get_dist_cm();
        int i = distSens.get_dist_cm();
        int j = distSens.get_dist_cm();
 
        dist  = (a+b+c+d+e+f+g+h+i+j)/10;
        return dist;
}
void beeping()
{
    int distance = averageDistance();
    //sensor defaults to 2k+ when dist<~3cm 
    if (distance > 2000) i=0.05; 
    if (distance < 150) i=0.6;
    if (distance < 100) i=0.55;
    if (distance < 90) i=0.5;
    if (distance < 80) i=0.45;
    if (distance < 70) i=0.4;
    if (distance < 60) i=0.35;
    if (distance < 50) i=0.3;
    if (distance < 40) i=0.25;
    if (distance < 30) i=0.2;
    if (distance < 20) i=0.15;
    if (distance < 10) i=0.1;
    if (distance < 5) i=0.05;
    mySpeaker.PlayNote(600, i, 5.0);  
}