Fully integrated working system

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

Committer:
fiachra
Date:
Wed Dec 16 12:11:32 2020 +0000
Revision:
9:d1b00a2a8e25
Parent:
8:f3ab61374cd0
Child:
10:f29ed3675509
Distance Sensor is working but LCD not yet implemented

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tadhgjones 8:f3ab61374cd0 1 #include "mbed.h"
tadhgjones 8:f3ab61374cd0 2 #include "hcsr04.h"
tadhgjones 8:f3ab61374cd0 3 #include "Speaker.h"
tadhgjones 8:f3ab61374cd0 4
tadhgjones 8:f3ab61374cd0 5 HCSR04 usensor(p25,p6);
tadhgjones 8:f3ab61374cd0 6 Serial pc(USBTX, USBRX);
tadhgjones 8:f3ab61374cd0 7 Speaker mySpeaker(p18);
tadhgjones 8:f3ab61374cd0 8
tadhgjones 8:f3ab61374cd0 9 unsigned int dist;
fiachra 9:d1b00a2a8e25 10
fiachra 9:d1b00a2a8e25 11 float averageDistance();
fiachra 9:d1b00a2a8e25 12 void beeping();
fiachra 9:d1b00a2a8e25 13 float i;
fiachra 9:d1b00a2a8e25 14
tadhgjones 8:f3ab61374cd0 15 int main()
tadhgjones 8:f3ab61374cd0 16 {
tadhgjones 8:f3ab61374cd0 17
tadhgjones 8:f3ab61374cd0 18 while(1) {
tadhgjones 8:f3ab61374cd0 19 usensor.start();
tadhgjones 8:f3ab61374cd0 20
fiachra 9:d1b00a2a8e25 21 averageDistance();
tadhgjones 8:f3ab61374cd0 22
fiachra 9:d1b00a2a8e25 23 beeping();
tadhgjones 8:f3ab61374cd0 24 pc.printf("cm:%ld\n",dist );
fiachra 9:d1b00a2a8e25 25 wait_ms(50);
fiachra 9:d1b00a2a8e25 26 }
fiachra 9:d1b00a2a8e25 27 }
fiachra 9:d1b00a2a8e25 28 float averageDistance() /** Divide the running total by 10 to get the average distance to get more accurate readings on the sensor**/
fiachra 9:d1b00a2a8e25 29 {
fiachra 9:d1b00a2a8e25 30 int a = usensor.get_dist_cm();
fiachra 9:d1b00a2a8e25 31 int b = usensor.get_dist_cm();
fiachra 9:d1b00a2a8e25 32 int c = usensor.get_dist_cm();
fiachra 9:d1b00a2a8e25 33 int d = usensor.get_dist_cm();
fiachra 9:d1b00a2a8e25 34 int e = usensor.get_dist_cm();
fiachra 9:d1b00a2a8e25 35 int f = usensor.get_dist_cm();
fiachra 9:d1b00a2a8e25 36 int g = usensor.get_dist_cm();
fiachra 9:d1b00a2a8e25 37 int h = usensor.get_dist_cm();
fiachra 9:d1b00a2a8e25 38 int i = usensor.get_dist_cm();
fiachra 9:d1b00a2a8e25 39 int j = usensor.get_dist_cm();
tadhgjones 8:f3ab61374cd0 40
fiachra 9:d1b00a2a8e25 41 dist = (a+b+c+d+e+f+g+h+i+j)/10;
fiachra 9:d1b00a2a8e25 42 return dist;
fiachra 9:d1b00a2a8e25 43 }
fiachra 9:d1b00a2a8e25 44 void beeping()
fiachra 9:d1b00a2a8e25 45 /*
fiachra 9:d1b00a2a8e25 46 @Brief Function to create the effect of varying beeping sounds depending on how close the sensor is to an object interspersed with
fiachra 9:d1b00a2a8e25 47 the led changing color depending on the distance
fiachra 9:d1b00a2a8e25 48 */
fiachra 9:d1b00a2a8e25 49 {
fiachra 9:d1b00a2a8e25 50 int distance = averageDistance();
fiachra 9:d1b00a2a8e25 51
fiachra 9:d1b00a2a8e25 52 if (distance > 2000) i=0.05; //sensor defaults to 2k+ when dist<~3cm
fiachra 9:d1b00a2a8e25 53 if (distance < 150) i=0.6;
fiachra 9:d1b00a2a8e25 54 if (distance < 100) i=0.55;
fiachra 9:d1b00a2a8e25 55 if (distance < 90) i=0.5;
fiachra 9:d1b00a2a8e25 56 if (distance < 80) i=0.45;
fiachra 9:d1b00a2a8e25 57 if (distance < 70) i=0.4;
fiachra 9:d1b00a2a8e25 58 if (distance < 60) i=0.35;
fiachra 9:d1b00a2a8e25 59 if (distance < 50) i=0.3;
fiachra 9:d1b00a2a8e25 60 if (distance < 40) i=0.25;
fiachra 9:d1b00a2a8e25 61 if (distance < 30) i=0.2;
fiachra 9:d1b00a2a8e25 62 if (distance < 20) i=0.15;
fiachra 9:d1b00a2a8e25 63 if (distance < 10) i=0.1;
fiachra 9:d1b00a2a8e25 64 if (distance < 5) i=0.05;
fiachra 9:d1b00a2a8e25 65 mySpeaker.PlayNote(329.63, i, 1.0);
fiachra 9:d1b00a2a8e25 66
tadhgjones 8:f3ab61374cd0 67 }