Fully integrated working system

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

Committer:
fiachra
Date:
Wed Dec 16 13:18:49 2020 +0000
Revision:
10:f29ed3675509
Parent:
9:d1b00a2a8e25
Child:
11:68194bd43e0b
update with LCD;

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"
fiachra 10:f29ed3675509 4 #include "uLCD_4DGL.h"
tadhgjones 8:f3ab61374cd0 5
fiachra 10:f29ed3675509 6 HCSR04 distSens(p25,p6);
tadhgjones 8:f3ab61374cd0 7 Serial pc(USBTX, USBRX);
tadhgjones 8:f3ab61374cd0 8 Speaker mySpeaker(p18);
fiachra 10:f29ed3675509 9 uLCD_4DGL uLCD(p9,p10,p11);
fiachra 10:f29ed3675509 10
tadhgjones 8:f3ab61374cd0 11
tadhgjones 8:f3ab61374cd0 12 unsigned int dist;
fiachra 9:d1b00a2a8e25 13
fiachra 9:d1b00a2a8e25 14 float averageDistance();
fiachra 9:d1b00a2a8e25 15 void beeping();
fiachra 9:d1b00a2a8e25 16 float i;
fiachra 9:d1b00a2a8e25 17
tadhgjones 8:f3ab61374cd0 18 int main()
tadhgjones 8:f3ab61374cd0 19 {
fiachra 10:f29ed3675509 20 uLCD.text_width(1); // Normal size
fiachra 10:f29ed3675509 21 uLCD.text_height(1); // Normal size
fiachra 10:f29ed3675509 22 uLCD.locate(10, 13); // Move cursor
fiachra 10:f29ed3675509 23 uLCD.color(BLUE); // Change text color
fiachra 10:f29ed3675509 24 uLCD.printf("Reverse");
fiachra 10:f29ed3675509 25 uLCD.rectangle(65, 117, 126, 127, 0x0000FF);
tadhgjones 8:f3ab61374cd0 26 while(1) {
fiachra 10:f29ed3675509 27 distSens.start();
fiachra 9:d1b00a2a8e25 28 averageDistance();
fiachra 9:d1b00a2a8e25 29 beeping();
tadhgjones 8:f3ab61374cd0 30 pc.printf("cm:%ld\n",dist );
fiachra 10:f29ed3675509 31 uLCD.text_width(1); // Normal size
fiachra 10:f29ed3675509 32 uLCD.text_height(1); // Normal size
fiachra 10:f29ed3675509 33 uLCD.locate(10, 15); // Move cursor
fiachra 10:f29ed3675509 34 uLCD.color(WHITE); // Change text color
fiachra 10:f29ed3675509 35 uLCD.printf("cm:%1d\n",dist );
fiachra 10:f29ed3675509 36
fiachra 9:d1b00a2a8e25 37 }
fiachra 9:d1b00a2a8e25 38 }
fiachra 9:d1b00a2a8e25 39 float averageDistance() /** Divide the running total by 10 to get the average distance to get more accurate readings on the sensor**/
fiachra 9:d1b00a2a8e25 40 {
fiachra 10:f29ed3675509 41 int a = distSens.get_dist_cm();
fiachra 10:f29ed3675509 42 int b = distSens.get_dist_cm();
fiachra 10:f29ed3675509 43 int c = distSens.get_dist_cm();
fiachra 10:f29ed3675509 44 int d = distSens.get_dist_cm();
fiachra 10:f29ed3675509 45 int e = distSens.get_dist_cm();
fiachra 10:f29ed3675509 46 int f = distSens.get_dist_cm();
fiachra 10:f29ed3675509 47 int g = distSens.get_dist_cm();
fiachra 10:f29ed3675509 48 int h = distSens.get_dist_cm();
fiachra 10:f29ed3675509 49 int i = distSens.get_dist_cm();
fiachra 10:f29ed3675509 50 int j = distSens.get_dist_cm();
tadhgjones 8:f3ab61374cd0 51
fiachra 9:d1b00a2a8e25 52 dist = (a+b+c+d+e+f+g+h+i+j)/10;
fiachra 9:d1b00a2a8e25 53 return dist;
fiachra 9:d1b00a2a8e25 54 }
fiachra 9:d1b00a2a8e25 55 void beeping()
fiachra 9:d1b00a2a8e25 56 {
fiachra 9:d1b00a2a8e25 57 int distance = averageDistance();
fiachra 9:d1b00a2a8e25 58
fiachra 9:d1b00a2a8e25 59 if (distance > 2000) i=0.05; //sensor defaults to 2k+ when dist<~3cm
fiachra 9:d1b00a2a8e25 60 if (distance < 150) i=0.6;
fiachra 9:d1b00a2a8e25 61 if (distance < 100) i=0.55;
fiachra 9:d1b00a2a8e25 62 if (distance < 90) i=0.5;
fiachra 9:d1b00a2a8e25 63 if (distance < 80) i=0.45;
fiachra 9:d1b00a2a8e25 64 if (distance < 70) i=0.4;
fiachra 9:d1b00a2a8e25 65 if (distance < 60) i=0.35;
fiachra 9:d1b00a2a8e25 66 if (distance < 50) i=0.3;
fiachra 9:d1b00a2a8e25 67 if (distance < 40) i=0.25;
fiachra 9:d1b00a2a8e25 68 if (distance < 30) i=0.2;
fiachra 9:d1b00a2a8e25 69 if (distance < 20) i=0.15;
fiachra 9:d1b00a2a8e25 70 if (distance < 10) i=0.1;
fiachra 9:d1b00a2a8e25 71 if (distance < 5) i=0.05;
fiachra 10:f29ed3675509 72 mySpeaker.PlayNote(600, i, 5.0);
fiachra 9:d1b00a2a8e25 73
tadhgjones 8:f3ab61374cd0 74 }