Ultrasonic searcher with Servo controlled by PC
Dependencies: HCSR04 Servo TextLCD mbed
Diff: main.cpp
- Revision:
- 0:0fd92cba86c2
- Child:
- 1:3707e73808d1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Nov 13 22:25:05 2013 +0000 @@ -0,0 +1,106 @@ +#include "mbed.h" +#include "Servo.h" +#include "hcsr04.h" +#include "TextLCD.h" + +Serial pc(USBTX, USBRX); // pc & mbed seri iletişimi +TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 LCD pin bağlantısı +Servo myservo(p21); // servo pin girişi +DigitalOut hedef_var(LED1); +DigitalOut working(LED2); +DigitalOut open(LED3); +DigitalOut close(LED4); +HCSR04 usensor(p25,p9); // ultrasonic sensor trig, echo pinleri + +int dist; // distance için 'd' +char c; // pc den alınan karakter için 'c' +float p; + +int main() +{ + +working=1; // çalıştığını gösteriyor + +while(1) + { + + + + for(p=0.0; p<=1.0; p += 0.05) // servo için adım + { + usensor.start(); // usensor sinyal gönderiyor + wait_ms(500); + dist=usensor.get_dist_cm(); // sinyal dönüşü mesafe hesabı + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Obs Range cm:%ld",dist); // LCD ye mesafe yazdırılıyor + printf("%d\n ",dist); // + printf("%f\n ",p); // + + + if(dist<50) //30 cm den az hedef varsa doğrulamak için + { + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Obs Range cm:%ld",dist); + lcd.locate(0,1); + lcd.printf("location :%f",p); + hedef_var=1; + } + + else if(dist>50) + { + hedef_var=0; + + } + + + myservo = p; + wait(0.2); + + + } + + // SERVO GERİ DÖNÜYOR // + + for(p=1.0; p>0.0; p -=0.05) + { + usensor.start(); + wait_ms(500); + dist=usensor.get_dist_cm(); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Obs Range cm:%ld",dist); + printf(" %d\n ",dist); // + printf("%f\n ",p); // + + if(dist<=50) + { + + + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Obs Range cm:%ld",dist); + lcd.locate(0,1); + lcd.printf("location :%f",p); + hedef_var=1; + } + else if(dist>50) + { + hedef_var=0; + } + + + myservo = p; + wait(0.2); + + + } + + } + + + + + } +