Distance Sensor working without LCD
Dependencies: Speaker mbed 4DGL-uLCD-SE hcsr04
main.cpp@10:f29ed3675509, 2020-12-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |