Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
Obstacle avoidance is a crucial feature in robotics, enabling autonomous robots to navigate environments without colliding with obstacles. This capability is essential for applications ranging from simple hobbyist robots to complex industrial automation systems. Using Arduino, a popular open-source electronics platform, we can develop an effective obstacle avoidance system. This article will guide you through the process, providing detailed instructions and code examples to help you get started.
Projeto: In this project, we will build a simple obstacle avoidance robot using an Arduino board and an ultrasonic sensor. The robot will be able to detect obstacles in its path and change direction to avoid collisions. The main objectives are:
Lista de componentes:
Exemplos:
Wiring the Components:
Arduino Code:
// Define pins for ultrasonic sensor
const int trigPin = 9;
const int echoPin = 10;
// Define pins for motor driver
const int motorA1 = 2;
const int motorA2 = 3;
const int motorB1 = 4;
const int motorB2 = 5;
const int enableA = 6;
const int enableB = 7;
void setup() {
// Initialize serial communication
Serial.begin(9600);
// Set motor driver pins as outputs
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
pinMode(enableA, OUTPUT);
pinMode(enableB, OUTPUT);
// Set ultrasonic sensor pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// Get distance from ultrasonic sensor
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
// Print distance to serial monitor
Serial.print("Distance: ");
Serial.println(distance);
// Obstacle avoidance logic
if (distance < 20) {
// Stop motors
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(500);
// Turn right
digitalWrite(motorA1, HIGH);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, HIGH);
delay(1000);
} else {
// Move forward
digitalWrite(motorA1, HIGH);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, HIGH);
digitalWrite(motorB2, LOW);
}
delay(100);
}
Explanation of the Code: