PROGRAMACIÓN COCHE 4X4:
Para programar el coche en Arduino vamos escribir el siguiente código para que se pueda mover.
Para realizar esta tarea abrimos la aplicación IDE Arduino.
Práctica 1.
Vamos a escribir el primer código para que el coche se mueva hacia adelante y hacia atrás.
A la hora de escribir el código en arduino podemos distinguir dos funciones principales.
void setup(){
// aquí escribimos el código para definir diferentes parámetros de la librería que vayamos a utilizar.
}
void loop(){
// aquí escribimos el código que qeremos que se ejecute.
}
En nuestro caso el código que hay que escribir para que se mueva nuestro coche es el siguiente:
#include<AFMotor.h> // Esta línea indica la librería que vamos autilizar.” Hay que instalarla
previamente”.
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);
// Con las líneas anteriores estamos definiendo los motores de la Motor Shield.
void setup(){
[Link](9600);
[Link](255); // definimos la velocidad de los motores que va desde 0 a 255
[Link](255);
[Link](255);
[Link](255);
}
void loop(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](FORWARD);
[Link](FORWARD);
delay (2000); // el tiempo de movimiento es 2 segundos
[Link](RELEASE); // el coche se para, todo los motores
[Link](RELEASE);
[Link](RELEASE);
[Link](RELEASE);
delay (1000) ; // se para durante 1 segundo
[Link](BACKWARD); // el coche se mueve hacia atrás
[Link](BACKWARD);
[Link](BACKWARD);
[Link](BACKWARD);
delay (2000); // durante 2 segundos
Reto: Cambia los tiempos para que el recorrido sea más largo.
Práctica 2.
Ahora vamos hacer que el coche se mueva a izquierda y derecha.
Para hacer esto hacemos que un lado se pare y el otro continue en movimiento el tiempo necesario
para que [Link] más tiempo el giro será más pronunciado.
Escribamos el código.
#include<AFMotor.h>
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);
void setup(){
[Link](9600);
[Link](255); // definimos la velocidad de los motores que va desde 0 a 255
[Link](255);
[Link](255);
[Link](255);
}
void loop(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](FORWARD);
[Link](FORWARD);
delay (2000); // el tiempo de movimiento es 2 segundos
[Link](RELEASE); // el coche se para, todo los motores
[Link](RELEASE);
[Link](RELEASE);
[Link](RELEASE);
delay (1000) ; // se para durante 1 segundo
[Link](BACKWARD); // el coche se mueve hacia atrás
[Link](BACKWARD);
[Link](BACKWARD);
[Link](BACKWARD);
delay (2000);
// El coche se mueve hacia la derecha.
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](RELEASE);
[Link](FORWARD);
delay (2000); // el tiempo de movimiento es 2 segundos
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](FORWARD);
[Link](FORWARD);
delay (2000); // el tiempo de movimiento es 2 segundos
// El coche se mueve hacia la izquierda
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](RELEASE);
[Link](FORWARD);
[Link](FORWARD);
delay (2000); // el tiempo de movimiento es 2 segundos
Reto1: Cambia los tiempos para que los giros sean más pronunciados.
Reto2: Realiza un código para que el coche realice un circuito cerrado.
Práctica 3.
Vamos ahora a intentar simplificar o hacer más accesible nuestro código. Vamos a definir las
funciones que son trozos de código que repite y lo vamoa a utilizar varias veces, por ejemplo la
parte del código que va hacia adelante lo podemos definir en una función y cuando lo necesitemos
sólo debemos invocar o llamar a esa función para entenderlo mejor vamoas al código.
#include<AFMotor.h>
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);
void setup(){
[Link](9600);
[Link](255); // definimos la velocidad de los motores que va desde 0 a 255
[Link](255);
[Link](255);
[Link](255);
}
void loop(){
adelante();
delay(2000);
derecha();
delay(500);
atras();
delay(2000);
izquierda();
delay(500);
adelante();
delay(2000);
void adelante(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](FORWARD);
[Link](FORWARD);
void paro(){
[Link](RELEASE); // el coche se para, todo los motores
[Link](RELEASE);
[Link](RELEASE);
[Link](RELEASE);
void atras(){
[Link](BACKWARD); // el coche se mueve hacia atrás
[Link](BACKWARD);
[Link](BACKWARD);
[Link](BACKWARD);
void derecha(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](RELEASE);
[Link](FORWARD);
void izquierda(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](RELEASE);
[Link](FORWARD);
[Link](FORWARD);
}
Práctica 4.
Ahora vamos a programar los leds que tiene incorporado el coche, vamos a programar un pqueño
código para que cuando vaya hacia adelante se encienda los leds delanteros y cuando vaya hacia
atrás se encienda los leds traseros.
Primero debemos averiguar en que pins está conectados los leds a la placa arduino.
Led trasero izquierdo=44
Led trasero derecho=45
led delantero izquierdo=46
led delantero derecho=47
Primero debemos definir en la función setup el modo en que actua el pin con la siguiente línea de
código:
pinMode(44,OUTPUT);
Y en la función loop debemos abrir o cerrar el Pin con la siguiente línea de código:
digitalWrite(44,HIGH); // El led se enciende
digitalWrite(44,LOW); // El led se apaga
Empezamos a programar:
#include <AFMotor.h>
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);
void setup(){
[Link](9600);
[Link](255); // definimos la velocidad de los motores que va desde 0 a 255
[Link](255);
[Link](255);
[Link](255);
pinMode(44,OUTPUT);
pinMode(45,OUTPUT);
pinMode(46,OUTPUT);
pinMode(47,OUTPUT);
}
void loop(){
adelante();
delay(2000);
derecha();
delay(500);
atras();
delay(2000);
izquierda();
delay(500);
adelante();
delay(2000);
void adelante(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](FORWARD);
[Link](FORWARD);
digitalWrite(44,HIGH);
digitalWrite(45,HIGH);
digitalWrite(46,LOW); // apagamos los leds
digitalWrite(47,LOW);
}
void paro(){
[Link](RELEASE); // el coche se para, todo los motores
[Link](RELEASE);
[Link](RELEASE);
[Link](RELEASE);
void atras(){
[Link](BACKWARD); // el coche se mueve hacia atrás
[Link](BACKWARD);
[Link](BACKWARD);
[Link](BACKWARD);
digitalWrite(46,HIGH);
digitalWrite(47,HIGH);
digitalWrite(44,LOW); // apagamos los leds
digitalWrite(45,LOW);
}
void derecha(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](RELEASE);
[Link](FORWARD);
void izquierda(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](RELEASE);
[Link](FORWARD);
[Link](FORWARD);
}
Práctica 5.
Ahora vamos aprogramar el Buzzer que tiene incorporado el coche y vamos a hacer que suene
cuando vaya marcha atrás.
Para hacer las lóneas de código hacemos lo mismo que con los leds y utilizamos el mismo código.
Buzzer=49
#include <AFMotor.h>
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);
void setup(){
[Link](9600);
[Link](255); // definimos la velocidad de los motores que va desde 0 a 255
[Link](255);
[Link](255);
[Link](255);
pinMode(44,OUTPUT);
pinMode(45,OUTPUT);
pinMode(46,OUTPUT);
pinMode(47,OUTPUT);
pinMode(49,OUTPUT);
}
void loop(){
adelante();
delay(2000);
derecha();
delay(500);
atras();
delay(2000);
izquierda();
delay(500);
adelante();
delay(2000);
void adelante(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](FORWARD);
[Link](FORWARD);
digitalWrite(44,HIGH);
digitalWrite(45,HIGH);
digitalWrite(46,LOW); // apagamos los leds
digitalWrite(47,LOW);
digitalWrite(49,LOW); // apagamos el Buzzer
}
void paro(){
[Link](RELEASE); // el coche se para, todo los motores
[Link](RELEASE);
[Link](RELEASE);
[Link](RELEASE);
void atras(){
[Link](BACKWARD); // el coche se mueve hacia atrás
[Link](BACKWARD);
[Link](BACKWARD);
[Link](BACKWARD);
digitalWrite(46,HIGH);
digitalWrite(47,HIGH);
digitalWrite(44,LOW); // apagamos los leds
digitalWrite(45,LOW);
digitalWrite(49,HIGH);
}
void derecha(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](RELEASE);
[Link](FORWARD);
void izquierda(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](RELEASE);
[Link](FORWARD);
[Link](FORWARD);
Práctica 6.
En esta práctica vamos hacer que los leds parpadeen al hacer un giro, para ello vamos a utilizar una
estructura de control de repetición en este caso la sentencia For.
Su sintaxis sería la siguiente:
For(int i=0;i<3;i++){
//Aquí va el código que quiero que se repita.
Vamos ahora con nuestro código:
#include <AFMotor.h>
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);
void setup(){
[Link](9600);
[Link](255); // definimos la velocidad de los motores que va desde 0 a 255
[Link](255);
[Link](255);
[Link](255);
pinMode(44,OUTPUT);
pinMode(45,OUTPUT);
pinMode(46,OUTPUT);
pinMode(47,OUTPUT);
}
void loop(){
adelante();
delay(2000);
derecha();
delay(1000);
atras();
delay(2000);
izquierda();
delay(1000);
adelante();
delay(2000);
void adelante(){
[Link](FORWARD) ; // el coche se mueve hacia adelante , todos los motores.
[Link](FORWARD);
[Link](FORWARD);
[Link](FORWARD);
//digitalWrite(44,HIGH);
//digitalWrite(45,HIGH);
//digitalWrite(46,LOW);
//digitalWrite(47,LOW)
}
void paro(){
[Link](RELEASE); // el coche se para, todo los motores
[Link](RELEASE);
[Link](RELEASE);
[Link](RELEASE);
}
void atras(){
[Link](BACKWARD); // el coche se mueve hacia atrás
[Link](BACKWARD);
[Link](BACKWARD);
[Link](BACKWARD);
//digitalWrite(46,HIGH);
//digitalWrite(47,HIGH);
//digitalWrite(44,LOW);
//digitalWrite(45,LOW);
}
void derecha(){
[Link](FORWARD) ;
[Link](FORWARD);
[Link](RELEASE);
[Link](FORWARD);
for(int i=0;i<3;i++){
digitalWrite(44,HIGH);
digitalWrite(46,HIGH);
delay(200);
digitalWrite(44,LOW);
digitalWrite(46,LOW);
}
}
void izquierda(){
[Link](FORWARD) ;
[Link](RELEASE);
[Link](FORWARD);
[Link](FORWARD);
for(int i=0;i<3;i++){
digitalWrite(47,HIGH);
digitalWrite(45,HIGH);
delay(100);
digitalWrite(45,LOW);
digitalWrite(47,LOW);
delay(100);
}