Los insumos disponibles de un kit de inicio (placa compatible con Arduino, Eleegoo Mega2560 Starter Kit) , nos condicionó en la búsqueda de tutoriales. En particular en este kit de inicio se encuentra un chip; el L293D que junto con la placa permite controlar los motores.
El tutorial que hemos adoptado para la tarea es el siguiente. Corresponde al recomendable canal Mert Arduino, donde se pueden hallar decenas de proyectos interesantes.
Lo único adicional que fue necesario obtener ha sido el chasis con las ruedas y los motores. Los mismos se venden en tiendas del ramo de electrónica y/o robótica a costo relativamente accesible.
Para facilitar la interpretación, hemos armado el diagrama en TinkerCAD-Circuits con las conexiones.
En algunos tramos algunas indicaciones pasan muy rápido o la resolución del vídeo en celulares resulta confusa, por lo que hemos pensado que sería de ayuda contar con un diagrama en buena resolución.
La herramienta Circuits en www.tinkercad.com no solo permite armar el diagrama, sino que también posibilita cargar el código y llevar adelante la comprobación de funcionamiento ejecutándolo.
El código para cargar en la placa compatible está disponible en https://mertarduinotutorial.blogspot.com/2016/11/arduino-project-tutorial-10-obstacle.html.
En algunas versiones desactualizadas de navegadores no se despliega correctamente el sitio original; por ello se reproduce el código debajo de los diagramas.
Crédito del código; Mert Arduino.
const int trig = 12;
const int echo = 11;
const int leftForward = 2;
const int leftBackward = 3;
const int rightForward = 4;
const int rightBackward = 5;
int duration = 0;
int distance = 0;
void setup()
{
pinMode(trig , OUTPUT);
pinMode(echo , INPUT);
pinMode(leftForward , OUTPUT);
pinMode(leftBackward , OUTPUT);
pinMode(rightForward , OUTPUT);
pinMode(rightBackward , OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(trig , HIGH);
delayMicroseconds(1000);
digitalWrite(trig , LOW);
duration = pulseIn(echo , HIGH);
distance = (duration/2) / 28.5 ;
Serial.println(distance);
if ( distance < 30 )
{
digitalWrite(leftForward , LOW);
digitalWrite(leftBackward , HIGH);
digitalWrite(rightForward , HIGH);
digitalWrite(rightBackward , LOW);
delay(100);
}
else
{
digitalWrite(leftForward , HIGH);
digitalWrite(leftBackward , LOW);
digitalWrite(rightForward , HIGH);
digitalWrite(rightBackward , LOW);
}
}



No hay comentarios:
Publicar un comentario