Ultrasonic searcher with Servo controlled by PC

Dependencies:   HCSR04 Servo TextLCD mbed

main.cpp

Committer:
Birkan
Date:
2013-11-13
Revision:
0:0fd92cba86c2
Child:
1:3707e73808d1

File content as of revision 0:0fd92cba86c2:

#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); 


           }

          }
       
 
    
    
     }