Arduino motor control using servo ultrasonic sensor Asl

  • Slides: 5
Download presentation
Arduino motor control using servo & ultrasonic sensor Aslı Ergün

Arduino motor control using servo & ultrasonic sensor Aslı Ergün

Servo & Ultrasonic Sensor (Mesafe Ölçmek)

Servo & Ultrasonic Sensor (Mesafe Ölçmek)

Bağlantıları. .

Bağlantıları. .

Örnek-1 #include <Servo. h> #define trigpin 5//set trigpin #define echopin 6//set echopin Servo myservo;

Örnek-1 #include <Servo. h> #define trigpin 5//set trigpin #define echopin 6//set echopin Servo myservo; // declare servo name type servo int duration, distance; //declare variable for unltrasonic sensor void setup() { Serial. begin(9600); pin. Mode(trigpin, OUTPUT); pin. Mode(echopin, INPUT); myservo. attach(2); // attach your servo myservo. write. Microseconds(1500); // put your setup code here, to run once: } void loop() { myservo. write(90); // always set servo to 90 to position it to the middle //ultrasonic code digital. Write(trigpin, HIGH); _delay_ms(500); digital. Write(trigpin, LOW); duration=pulse. In(echopin, HIGH); distance=(duration/2)/29. 1; if(distance <=20)// if ultrasonic sensor detects an obstacle less than 20 cm in 90 degree angle. { myservo. write(0); //servo rotates at full speed to the right delay(600); } else { myservo. write(90); // else servo stays at 90 degree angle. delay(600); } Serial. print("cm"); //print distance unit cm Serial. println(distance); //distance } // put your main code here, to run repeatedly:

Örnek-2 #include <Servo. h> //include Servo library const int RForward = 0; const int

Örnek-2 #include <Servo. h> //include Servo library const int RForward = 0; const int RBackward = 180; const int LForward = RBackward; const int LBackward = RForward; const int RNeutral = 90; const int LNeutral = 90; //constants for motor speed const int ping. Pin = 7; const int ir. Pin = 0; //Sharp infrared sensor pin const int danger. Thresh = 10; //threshold for obstacles (in cm) int left. Distance, right. Distance; //distances on either side Servo pan. Motor; Servo left. Motor; Servo right. Motor; //declare motors long duration; //time it takes to recieve PING))) signal void setup() { right. Motor. attach(11); left. Motor. attach(10); pan. Motor. attach(6); //attach motors to proper pins pan. Motor. write(90); //set PING))) pan to center } void loop() { int distance. Fwd = ping(); if (distance. Fwd>danger. Thresh) //if path is clear { left. Motor. write(LForward); right. Motor. write(RForward); //move forward } else //if path is blocked { left. Motor. write(LNeutral); right. Motor. write(RNeutral); pan. Motor. write(0); delay(500); right. Distance = ping(); //scan to the right delay(500); pan. Motor. write(180); delay(700); left. Distance = ping(); //scan to the left delay(500); pan. Motor. write(90); //return to center delay(100); compare. Distance(); } } void compare. Distance() { if (left. Distance>right. Distance) //if left is less obstructed { left. Motor. write(LBackward); right. Motor. write(RForward); //turn left delay(500); } else if (right. Distance>left. Distance) //if right is less obstructed { left. Motor. write(LForward); right. Motor. write(RBackward); //turn right delay(500); } else //if they are equally obstructed { left. Motor. write(LForward); right. Motor. write(RBackward); //turn 180 degrees delay(1000); } } long ping() { // Send out PING))) signal pulse pin. Mode(ping. Pin, OUTPUT); digital. Write(ping. Pin, LOW); delay. Microseconds(2); digital. Write(ping. Pin, HIGH); delay. Microseconds(5); digital. Write(ping. Pin, LOW); //Get duration it takes to receive echo pin. Mode(ping. Pin, INPUT); duration = pulse. In(ping. Pin, HIGH); } //Convert duration into distance return duration / 29 / 2;