jueves, 3 de diciembre de 2015
Hago presente mi segunda entrega de mi prototipo, empezando con los materiales que utilicé:
-Arduino UNO.- Placa principal para dar funcionamiento al circuito.
-Placa L298N.- Controlador de los motores DC.
-Kit Motores DC: Motores de corriente alterna, irán conectados a la placa L298N.
- Sensor Ultrasónico: Nos permite captar la distancia hacia un obstáculo
-Fuente de alimentación de 9V: Energía necesaria para que funcione la placa L298N.
-Cables.- Para las conexiones de los pines de los componentes.
Diagrama de conexión de los componentes:
Código empleado:
//Declaración de variables
//Pines del sensor de distancia
int trigger =6;
int echo=7;
//Motor Izquierdo
int ENA=8;
int IN1=9;
int IN2=10;
//Motor Derecho
int ENB=13;
int IN3=11;
int IN4=12;
int estado=0; //Estado para los casos del switch
long direccion; //nos permite elegir dirección izquierda: 0 y derecha: 1
//Configuración
void setup() {
Serial.begin(9600);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
//Iniciamos la lectura del random
randomSeed(analogRead(0));
//Después de 3 segundos empieza la ejecución
apagar();
delay(3000);
}
void loop() {
digitalWrite(trigger,LOW);
delayMicroseconds(5);
// Comienzo de la medida
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
// Adquisición y conversión a centímetros
float distancia = pulseIn(echo, HIGH);
distancia = distancia * 0.01657;
//Si la distancia esta entre 10 y 50 cm los motores disminuyen velocidad
if ((distancia>=10) && (distancia <=50)){
estado=0;}
// Si la distancia es mayor a 10 el robot avanza a velocidad normal
else if (distancia > 10.0){
estado=1;}
// Caso contrario esquiva el obstáculo
else{
estado=2;
}
//Elije el estado asignado anteriormente
switch (estado) {
case 0:
//Motores avanzan a velocidad menor
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,125);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,125);
break;
case 1:
//Llamada de métodos
avanzarA();
avanzarB();
break;
case 2:
//Elije la dirección para girar
direccion = random(2);
if (direccion==0) {
retroDerecha();}
else {
retroIzquierda();}
break;}
}
//Métodos
void avanzarA() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,255);}
void avanzarB() {
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,125);}
void retroDerecha() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,255);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,125);
delay(500);}
void retroIzquierda() {
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,255);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,125);
delay(500);}
void apagar() {
analogWrite(ENA,0);
analogWrite(ENB,0);}
Imágenes prototipo:
Video del funcionamiento:
Podcast:
Suscribirse a:
Enviar comentarios
(Atom)
Datos personales:
Etiquetas
- Arduino (8)
- Auditoria (2)
- ConceptosAuditoria (2)
- EjerciciosRedes (2)
- Entregas (4)
- Introducción a la web (2)
- Noticias (7)
- Programación (2)
- Redes (6)
- Scratch (5)
Entradas populares
-
Hago presente mi segunda entrega de mi prototipo, empezando con los materiales que utilicé: -Arduino UNO.- Placa principal para dar func...
-
Esta vez les traigo un ejercicio de enrutamiento estático con 3 routers: Datos: Lan1: 172.168.0.0 /18 Lan2: 172.168.64.0 /18 Lan3...
-
A continuación mostrare el funcionamiento del sensor detector de colores TCS3200 con el arduino. Como habíamos dicho en la presentación d...
-
Hago presente mi cuarta entrega de mi prototipo, bueno empecemos por los materiales que se utilizó: -Arduino mega: Placa fundamental y p...
-
Hola estimados esta vez les traigo un tutorial de como instalar Packettracer 6.2 para el sistema operativo ubuntu, bueno sin mas rodeo v...
Exelente!
ResponderEliminar