EMT 2410 | Project Wall-E A Radar Detection System Using the HCSR04 Ultrasonic Sensor for Object Detection and Text LCD to output distance and angle of a Servo Motor.
Dependencies: Servo TextLCD mbed ultra
try.cpp@1:1452468e1e49, 2018-05-18 (annotated)
- Committer:
- Andres0131
- Date:
- Fri May 18 01:14:46 2018 +0000
- Revision:
- 1:1452468e1e49
- Parent:
- 0:faeefad8239f
out project
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Andres0131 | 0:faeefad8239f | 1 | #include "mbed.h" |
Andres0131 | 0:faeefad8239f | 2 | #include "Servo.h" |
Andres0131 | 0:faeefad8239f | 3 | #include "TextLCD.h" |
Andres0131 | 0:faeefad8239f | 4 | #include "hcsr04.h" |
Andres0131 | 0:faeefad8239f | 5 | |
Andres0131 | 0:faeefad8239f | 6 | |
Andres0131 | 0:faeefad8239f | 7 | int angle (int); |
Andres0131 | 0:faeefad8239f | 8 | |
Andres0131 | 0:faeefad8239f | 9 | HCSR04 usensor(D8,D9); |
Andres0131 | 0:faeefad8239f | 10 | |
Andres0131 | 0:faeefad8239f | 11 | |
Andres0131 | 0:faeefad8239f | 12 | |
Andres0131 | 0:faeefad8239f | 13 | TextLCD lcd( D0,D1, D2, D3, D4, D5,TextLCD::LCD16x2); |
Andres0131 | 0:faeefad8239f | 14 | |
Andres0131 | 0:faeefad8239f | 15 | unsigned int dist; |
Andres0131 | 0:faeefad8239f | 16 | |
Andres0131 | 0:faeefad8239f | 17 | |
Andres0131 | 0:faeefad8239f | 18 | int main() { |
Andres0131 | 0:faeefad8239f | 19 | int angle1; |
Andres0131 | 0:faeefad8239f | 20 | Servo Servo1(D15); |
Andres0131 | 0:faeefad8239f | 21 | |
Andres0131 | 0:faeefad8239f | 22 | Servo1.Enable(1500,20000); |
Andres0131 | 0:faeefad8239f | 23 | |
Andres0131 | 0:faeefad8239f | 24 | |
Andres0131 | 0:faeefad8239f | 25 | while(1) { |
Andres0131 | 0:faeefad8239f | 26 | |
Andres0131 | 0:faeefad8239f | 27 | |
Andres0131 | 0:faeefad8239f | 28 | for (int pos = 0; pos < 2000; pos += 11) { |
Andres0131 | 0:faeefad8239f | 29 | |
Andres0131 | 0:faeefad8239f | 30 | lcd.locate(0,0); |
Andres0131 | 0:faeefad8239f | 31 | Servo1.SetPosition(pos); |
Andres0131 | 0:faeefad8239f | 32 | angle1 = angle(pos); |
Andres0131 | 0:faeefad8239f | 33 | lcd.cls(); |
Andres0131 | 0:faeefad8239f | 34 | lcd.printf("Angle=%d",angle1, "DEG"); |
Andres0131 | 0:faeefad8239f | 35 | printf ("%d", angle1); |
Andres0131 | 0:faeefad8239f | 36 | printf (","); |
Andres0131 | 0:faeefad8239f | 37 | printf ("%d", dist); |
Andres0131 | 0:faeefad8239f | 38 | printf ("."); |
Andres0131 | 0:faeefad8239f | 39 | usensor.start(); |
Andres0131 | 0:faeefad8239f | 40 | wait_ms(0); |
Andres0131 | 0:faeefad8239f | 41 | dist=usensor.get_dist_cm(); |
Andres0131 | 0:faeefad8239f | 42 | lcd.locate(0,1); |
Andres0131 | 0:faeefad8239f | 43 | lcd.printf("cm:%ld",dist ); |
Andres0131 | 0:faeefad8239f | 44 | |
Andres0131 | 0:faeefad8239f | 45 | wait_ms(10); |
Andres0131 | 0:faeefad8239f | 46 | } |
Andres0131 | 0:faeefad8239f | 47 | |
Andres0131 | 0:faeefad8239f | 48 | for (int pos = 2000; pos > 0; pos -= 11) { |
Andres0131 | 0:faeefad8239f | 49 | lcd.locate(0,0); |
Andres0131 | 0:faeefad8239f | 50 | Servo1.SetPosition(pos); |
Andres0131 | 0:faeefad8239f | 51 | angle1 = angle(pos); |
Andres0131 | 0:faeefad8239f | 52 | lcd.cls(); |
Andres0131 | 0:faeefad8239f | 53 | lcd.printf("Angle=%d",angle1 , "DEG"); |
Andres0131 | 0:faeefad8239f | 54 | printf ("%d", angle1); |
Andres0131 | 0:faeefad8239f | 55 | printf (","); |
Andres0131 | 0:faeefad8239f | 56 | printf ("%d", dist); |
Andres0131 | 0:faeefad8239f | 57 | printf ("."); |
Andres0131 | 0:faeefad8239f | 58 | usensor.start(); |
Andres0131 | 0:faeefad8239f | 59 | wait_ms(0); |
Andres0131 | 0:faeefad8239f | 60 | dist=usensor.get_dist_cm(); |
Andres0131 | 0:faeefad8239f | 61 | lcd.locate(0,1); |
Andres0131 | 0:faeefad8239f | 62 | lcd.printf("cm:%ld",dist ); |
Andres0131 | 0:faeefad8239f | 63 | |
Andres0131 | 0:faeefad8239f | 64 | wait_ms(10); |
Andres0131 | 0:faeefad8239f | 65 | |
Andres0131 | 0:faeefad8239f | 66 | } |
Andres0131 | 0:faeefad8239f | 67 | |
Andres0131 | 0:faeefad8239f | 68 | } |
Andres0131 | 0:faeefad8239f | 69 | |
Andres0131 | 0:faeefad8239f | 70 | |
Andres0131 | 0:faeefad8239f | 71 | |
Andres0131 | 0:faeefad8239f | 72 | } |
Andres0131 | 0:faeefad8239f | 73 | |
Andres0131 | 0:faeefad8239f | 74 | |
Andres0131 | 0:faeefad8239f | 75 | int angle (int pos) |
Andres0131 | 0:faeefad8239f | 76 | { |
Andres0131 | 0:faeefad8239f | 77 | int angle = (pos / 11 ); |
Andres0131 | 0:faeefad8239f | 78 | return angle; |
Andres0131 | 0:faeefad8239f | 79 | } |
Andres0131 | 0:faeefad8239f | 80 |