Tabla de contenido:
- Paso 1: caja negra
- Paso 2: Arduino
- Paso 3: Conectando el Arduino a Blackbox
- Paso 4: Sensor ultrasónico
- Paso 5: Conexión de la placa de pruebas del sensor a Arduino
- Paso 6: Escudo del motor
- Paso 7: Conexión del protector del motor a Arduino
- Paso 8: Conexión de los 4 motores y baterías al blindaje
- Paso 9: programe el robot
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Cómo construir un robot para evitar obstáculos
Paso 1: caja negra
El primer paso utilicé una caja negra como base para mi robot.
Paso 2: Arduino
El Arduino es el cerebro de todo el sistema y orquesta nuestros motores
Paso 3: Conectando el Arduino a Blackbox
Adjunté el arduino a la caja negra con pegamento caliente
Paso 4: Sensor ultrasónico
Para hacer un robot que pueda moverse por sí solo, necesitamos algún tipo de entrada, un sensor que se ajuste a nuestro objetivo. Un sensor ultrasónico es un instrumento que mide la distancia a un objeto mediante ondas sonoras ultrasónicas. Un sensor ultrasónico utiliza un transductor para enviar y recibir pulsos ultrasónicos que transmiten información sobre la proximidad de un objeto.
Paso 5: Conexión de la placa de pruebas del sensor a Arduino
Usé cables para conectar la conexión entre la placa de pruebas y el arduino.
Preste atención a que su sensor de ping puede tener un diseño de pines diferente, pero debe tener un pin de voltaje, un pin de tierra, un pin de disparo y un pin de eco.
Paso 6: Escudo del motor
Las placas Arduino no pueden controlar los motores de CC por sí mismas, porque las corrientes que están generando son demasiado bajas, para solucionar este problema utilizamos protectores de motor, el protector de motor tiene 2 canales, lo que permite el control de dos motores de CC o 1 motor paso a paso. … Al direccionar estos pines, puede seleccionar un canal de motor para iniciar, especificar la dirección del motor (polaridad), establecer la velocidad del motor (PWM), detener y arrancar el motor y monitorear la absorción de corriente de cada canal
Paso 7: Conexión del protector del motor a Arduino
Simplemente conecte el protector del motor al arduino con los cables del sensor crujidos
Paso 8: Conexión de los 4 motores y baterías al blindaje
Cada protector de motor tiene (al menos) dos canales, uno para los motores y otro para una fuente de alimentación, conéctelos entre sí
Paso 9: programe el robot
ejecuta este código
#include #incluya
Sonda NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
AF_DCMotor motor1 (1, MOTOR12_1KHZ); AF_DCMotor motor2 (2, MOTOR12_1KHZ); AF_DCMotor motor3 (3, MOTOR34_1KHZ); AF_DCMotor motor4 (4, MOTOR34_1KHZ); Servo myservo;
#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10
booleano va hacia adelante = falso; int distancia = 80; int speedSet = 0;
configuración vacía () {
myservo.attach (10); myservo.write (115); retraso (2000); distancia = readPing (); retraso (100); distancia = readPing (); retraso (100); distancia = readPing (); retraso (100); distancia = readPing (); retraso (100); }
bucle vacío () {int distanciaR = 0; int distanciaL = 0; retraso (40); if (distancia <= 15) {moveStop (); retraso (50); mover hacia atrás(); retraso (150); moveStop (); retraso (100); distanciaR = mirarRight (); retraso (100); distanciaL = lookLeft (); retraso (100);
if (distanciaR> = distanciaL) {giro a la derecha (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } distancia = readPing (); }
int lookRight () {myservo.write (50); retraso (250); int distancia = readPing (); retraso (50); myservo.write (100); distancia de regreso; }
int lookLeft () {myservo.write (120); retraso (300); int distancia = readPing (); retraso (100); myservo.write (115); distancia de regreso; retraso (100); }
int readPing () {retraso (70); int cm = sonar.ping_cm (); si (cm == 0) {cm = 200; } return cm; }
void moveStop () {motor1.run (LIBERAR); motor2.run (LIBERAR); motor3.run (LIBERAR); motor4.run (LIBERAR); } void moveForward () {
if (! GoForward) {GoForward = true; motor1.run (ADELANTE); motor2.run (ADELANTE); motor3.run (ADELANTE); motor4.run (ADELANTE); para (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); retraso (5); }}}
void moveBackward () {va hacia adelante = falso; motor1.run (HACIA ATRÁS); motor2.run (HACIA ATRÁS); motor3.run (HACIA ATRÁS); motor4.run (HACIA ATRÁS); para (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); retraso (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (HACIA ATRÁS); motor3.run (ADELANTE); motor4.run (ADELANTE); retraso (500); motor1.run (ADELANTE); motor2.run (ADELANTE); motor3.run (ADELANTE); motor4.run (ADELANTE); }
void turnLeft () {motor1.run (HACIA ATRÁS); motor2.run (HACIA ATRÁS); motor3.run (ADELANTE); motor4.run (ADELANTE); retraso (500); motor1.run (ADELANTE); motor2.run (ADELANTE); motor3.run (ADELANTE); motor4.run (ADELANTE); }