Practicas Arduino
Practicas Arduino
de Tecnología
1
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
2. PROGRAMACIÓN BÁSICA
La estructura básica del lenguaje de programación de Arduino es bastante simple y se compone de al menos
dos partes. Ambas funciones son necesarias para que el programa trabaje.
Hay que ser muy cuidadoso y escribir los “comandos” exactamente, reSpetando mayúsculas y minúsculas y
2
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
Una vez escrito el programa pulsamos el botón verificar, para detectar errores de escritura. Si no hay ninguno
conectamos arduino al ordenador y pulsamos cargar para que lo ejecute.A los programas se les suele poner
un texto que explica como funcionan. El próximo programa que realicemos lo tendrá. Pero hay que tener
mucho cuidado y escribir el texto adecuadamente para que no de error.
Podemos hacer una mejora de este programa para que quede más “profesional”, utilizando variables. Esto
será lo más habitual más adelante. Las variables son un valor que arduino guarda en su memoria y que
después podemos utilizar.
3
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
void setup() Dentro del setup, colocamos la orden pinMode hace que
“Led” sea una salida. Como hemos dicho que “Led =12”
{
querrá decir que el pin 12 del Arduino será una salida de
pinMode(Led, OUTPUT);
información.
}
Dentro del loop
void loop()
digitalWrite
{ Escribe en “Led” un valor 1, o sea pon a 5 v la salida 12
digitalWrite(Led, HIGH); delay
delay(t); Hace esperar al programa t milisegundos ( como le hemos
digitalWrite(Led, LOW); dicho que t=500, se espera 500 milisegundos = 0,5 segundos)
delay(t); Repite la orden y escribe un valor 0 en el Led. Espera t
} milisegundos.
Repite el programa indefinidamente.
void setup()
{
pinMode(rojo, OUTPUT); // Indica que la variable " rojo " es una salida de arduino, y por tanto el pin 13 es una salida.
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
4
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
void loop()
{
digitalWrite(rojo, HIGH); // Escribe en la variable "rojo" un valor alto, un "1".
delay(500); // Espera 0,5 segundos
digitalWrite(rojo, LOW); // Escribe en la variable "rojo" un valor bajo, un "0".
digitalWrite(amarillo, HIGH);
delay(500);
digitalWrite(amarillo, LOW);
digitalWrite(verde, HIGH);
delay(500);
digitalWrite(verde, LOW);
}
5
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
ORDEN IF
La orden IF es una estructura condicional:
si se cumple la condición se ejecuta { programa}. Si no se cumple la condición se para.
if (condición) {...}
int rojo = 12; // Crea una variable llamada "rojo" y le asigna un valor 13
int amarillo = 11;
int verde = 10;
int tiempo = 500;
int pulsador = 9;
void setup()
{
pinMode(rojo, OUTPUT); // Indica que la variable " rojo " es una salida de arduino, y por tanto el pin 13 es una salida.
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(pulsador, INPUT);
}
void loop()
{
if (digitalRead(pulsador) == HIGH) // lee el valor que tiene el pin 9, si el valor es IGUAL a 1 entonces ejecuta el
programa, de lo contrario no hace nada y espera. Para que se repita tendremos que volver a pulsar.
{
digitalWrite(amarillo, HIGH);
delay(tiempo );
digitalWrite(amarillo, LOW);
digitalWrite(verde, HIGH);
delay(tiempo);
digitalWrite(verde, LOW);
}
}
Resistencia de
220
6
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
int rojo = 12; // Crea una variable llamada "rojo" y le asigna un valor 12
int negro = 10;
void setup()
{
pinMode(rojo, OUTPUT); // Indica que la variable"rojo" es una salida de arduino, y por tanto el pin 12 es una salida.
pinMode(negro, OUTPUT);
}
void loop()
{
digitalWrite(rojo, HIGH); // EL MOTOR GIRA A DERECHAS. Escribe en la variable "rojo" un valor alto, un "1".
digitalWrite(negro, LOW); // Escribe en la variable "negro" un valor alto, un "0".
delay(2000); // Espera 2 segundos
digitalWrite(rojo, LOW); // Escribe en la variable "rojo" un valor bajo, un "0".
delay(500); // Espera 0,5 segundos
7
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
int rojo = 12; // Crea una variable llamada "rojo" y le asigna un valor 12
int negro = 10;
void setup()
{
pinMode(rojo, OUTPUT); // Indica que la variable "rojo” es una salida de arduino, y por tanto el pin 12 es una
salida.
pinMode(negro, OUTPUT);
}
void loop()
{
Motor_derecha(); // ejecuta la función MOTOR GIRA A LA DERECHA
delay(2000);
Motor_derecha(); // ejecuta la función MOTOR GIRA A LA DERECHA de nuevo para ver la diferencia.
Motor_izquierda(); // ejecuta la función MOTOR GIRA A LA IZQUIERDA
}
void Motor_derecha() // CREAMOS LA FUNCIÓN Motor_derecha
{
digitalWrite(rojo, HIGH);
digitalWrite(negro, LOW);
delay(2000);
digitalWrite(rojo, LOW);
delay(500);
}
8
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
int corto=100; //Declara la variable de argumento entero "corto" y la inicializa con el valor 100 (letra S)
int espacio=100 // Espacio ente pitito y pitido
int pausa=500; //tiempo entre letra y letra
int largo=400; //variable de argumento entero "largo" y la inicializa con el valor 300 (letra O)
int espera=2000; //variable argumento entero "espera" y la inicializa con el valor 1000 (tiempo entre SOS - SOS)
int n=0;
int zumbador=13; //PIN digital al que conectamos el zumbador
void setup() //comienza la configuración
{
pinMode(zumbador,OUTPUT);
}
void loop()
{
digitalWrite(zumbador, HIGH); // comienza la S
delay(corto);
digitalWrite(zumbador,LOW);
delay(espacio);
digitalWrite(zumbador, HIGH);
delay(corto);
digitalWrite(zumbador,LOW);
delay(espacio);
digitalWrite(zumbador, HIGH);
delay(corto);
digitalWrite(zumbador,LOW);
delay(pausa);
digitalWrite(zumbador, HIGH); // comienza la O
delay(largo);
digitalWrite(zumbador,LOW);
delay(espacio);
digitalWrite(zumbador, HIGH);
delay(largo);
digitalWrite(zumbador,LOW);
delay(espacio);
digitalWrite(zumbador, HIGH);
delay(largo);
digitalWrite(zumbador,LOW);
delay(pausa);
digitalWrite(zumbador, HIGH); // comienza la S
delay(corto);
digitalWrite(zumbador,LOW);
delay(espacio);
digitalWrite(zumbador, HIGH);
delay(corto);
digitalWrite(zumbador,LOW);
delay(espacio);
digitalWrite(zumbador, HIGH);
delay(corto);
digitalWrite(zumbador,LOW);
delay(espera);
}
9
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
Sustituye el led por un zumbador y añade un pulsador como viste en la práctica 3. Cambia
el circuito de modo que cada vez que presiones un pulsador, suene 5 veces un zumbador.
10
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
ORDEN IF
La orden IF es una estructura condicional:
si se cumple la condición se ejecuta { programa}. Si no se cumple la condición se para.
if (condición) {...}
A la hora de comprobar si una condición se cumple o no, podemos utilizar los siguientes
operadores de comparación dentro del paréntesis:
x == 3 si x es igual a 3
x != 3 si x es distinto de 3
x < 3 si x es menor que 3
x > 3 si x es mayor que 3
x <=3 si x es menor o igual que 3
x >= 3 si x es mayor o igual que 3
x < 2 || x > 5 si x es menor que 2 o mayor que 5
x == 4 && z <= 8 si x es igual a 4 y z es menor o igual que 8
! x > 0 si x no es mayor que 0 (si es menor o igual que 0)
12
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
13
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
Vamos a usar la función analogRead() para leer los valores analógicos que nos proporciona el
potenciómetro. A analogRead() hay que indicarle que pin hay que leer o medir. El valor que mide lo convierte
en uno entre 0 y 1023. La conversión la hace el microcontrolador utilizando un número de 10 bits, donde el
mínimos será entonces un 0 para 0 volts, el máximo 1023, equivalente a 5 Voltios y por ejemplo, 512
equivalente a 2.5 Voltios.
Para transmitir los datos a la computadora usaremos la biblioteca Serial. La inicializamos en la función setup
con la velocidad a la que queremos transmitir la información, [Link](9600);
Para enviar datos del arduino hacia la computadora usamos la función [Link](). Cuando giremos la
varilla del potenciómetro, cambia su resistencia y este cambio se verá en el ordenador.
int pinSensor = A0; // pin del sensor analogico, con un potenciometro
int valorAnalogico = 0; // variable para guardar el valor leido del sensor
void setup()
{
pinMode(pinSensor, INPUT); // Aunque no es necesario en este caso incializa el pin del boton como de entrada
[Link](9600); // Inicializa la comunicacion serial
}
void loop(){
valorAnalogico = analogRead(pinSensor); // lee el valor del sensor
[Link]("Valor del sensor analogico = "); // Escribe en el monitor serial este texto
[Link](valorAnalogico); // Escribe el valor almacenado en la variable “valorAnalógico” en el monitor
delay(1000); // espera 1000 milisegundos para leer y enviar la siguiente lectura del sensor
}
14
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
void setup()
{
pinMode(pinPotenciometro, INPUT); // pinPotenciometro es una entrada
pinMode(8, OUTPUT); // pin 8 es una salida
pinMode(9, OUTPUT); // pin 9 es una salida
pinMode(10, OUTPUT); // pin 10 es una salida
pinMode(11, OUTPUT); // pin 11 es una salida
if (valorPotenciometro == 1023) encenderLeds(); // si el valor del potenciómetro es 1023 ejecuta la orden “encenderLeds”
}
void apagarLeds()
{
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
}
void encenderLeds()
{
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
15
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
PRÁCTICA 13. LDR para medir la luz. Visualizar en el ordenador el valor de esta luz.
Una LDR es una resistencia electrónica que varía su valor en función de la luz que recibe. Vamos a utilizarla
para medir la luz ambiente. Para poder ver cual es su valor utilizaremos remos la orden “[Link](9600);”
que permite comunicarse nuestro arduino con el PC a una velocidad de 9600 bits/segundo y ver la medida de
la luz. Realizaremos un montaje parecido al de la práctica 3, conectando la LDR en serie con una resistencia
de 10 K (marrón, negro, naranja), como aparece en la imagen. La señal que indica la medida de la luz entrará
en arduino por el pin 0 que es uno de las entradas analógicas. Para que varíe podemos cubrirla con el dedo o
enfocarla a una lámpara.
int ldr=0; //conectamos la ldr a la entrada analógica 0
int luz=0;
void setup()
{
pinMode(ldr, INPUT);
[Link](9600);
}
void loop()
{
luz=analogRead(ldr);
[Link]("el valor de luz es...");
[Link](luz);
delay(1000);
}
PRÁCTICA 14. LDR con visualización y activación de señal de alarma con un zumbador.
Realiza un montaje similar al de la práctica anterior pero añade un led conectado al pin 10. Cuando la luz
sea menor de 500, debe encenderse un led. Si la luz es superior a 500 el led se apaga. Después puedes
sustituir el led por un zumbador que haga lo mismo y nos avise cuando la luz es escasa.
int ldr=0; //conectamos la ldr a la entrada analógica 0
int luz=0; //asignamos a la variable “luz” un valor inicial 0
int led=10; //conectamos la el led a la entrada digital10
void setup()
{
pinMode(ldr, INPUT); // definimos las entradas y salidas y activamos el monitor serial del ordenador
pinMode(led, OUTPUT);
[Link](9600);
}
void loop()
{
luz=analogRead(ldr);
[Link]("el valor de luz es...");
[Link](luz);
delay(1000);
if(luz>=0 && luz < 500) // si el valor de la luminosidad está comprendido entre 0 y 500 enciende led
{
digitalWrite(led,HIGH);
}
else // Si no está comprendido entre 0 y 500, entonces apaga el led
{
digitalWrite(led,LOW);
} }
16
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
PRÁCTICA 15. Medida de la temperatura con una resistencia NTC con visualización serial
Las NTC son resistencias que varían su valor con la temperatura. Conforme aumenta la temperatura
disminuye su resistencia. Tendremos un valor numérico que es proporcional a la temperatura que
medimos. Una lectura de 500 equivale a 20 º C. Por lo tanto si multiplicamos el número que mide por 0
´04 tendremos la temperatura en º C.
int ntc=0; //conectamos la resistencia NTC a la entrada analógica 0
int temperatura=0;
int grados=0;
void setup()
{
pinMode(ntc, INPUT);
[Link](9600);
}
void loop()
{
temperatura=analogRead(ntc);
grados= 0.04*temperatura; // multiplicamos por 0.04 para
tener la temperatura en º C
[Link]("el valor de la temperatura es...");
[Link](grados);
delay(1000);
}
PRÁCTICA 16. Medida de la temperatura con una resistencia NTC con visualización serial,
activación de señal de alarma y puesta en marcha de un motor.
Realiza un montaje similar al anterior pero añade un zumbador conectado al pin 10 y un motor al pin 11.
Cuando la temperatura supere los 25º C debe sonar el zumbador y ponerse en marcha un motor para enfriar.
int ntc=0; //conectamos la resistencia NTC a la entrada analógica 0
int temperatura=0;
int grados=0;
int zumbador=10;
int motor=11;
void setup()
{
pinMode(ntc, INPUT);
pinMode(zumbador, OUTPUT);
pinMode(motor,OUTPUT);
[Link](9600);
}
void loop()
{
temperatura=analogRead(ntc);
grados= 0.04*temperatura; // multiplicamos por 0.04 para tener la temperatura en º C
[Link]("el valor de la temperatura es...");
[Link](grados);
delay(1000);
if(grados > 25) //Si la temperatura aumenta por encima de 25 debe sonar la alarma y ponerse en marcha el motor
{
digitalWrite(zumbador,HIGH);
digitalWrite(motor, HIGH);
}
else
{
digitalWrite(zumbador,LOW);
digitalWrite(motor, LOW);
}
}
17
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
PRÁCTICA 17. Medir distancias con ultrasonidos utilizando el puerto serial del PC
Vamos a utilizar el emisor de ultrasonidos para medir la distancia a objetos y haremos que las
mediciones aparezcan en nuestro ordenador. Para ello utilizaremos la orden “[Link](9600);”
que permite comunicarse nuestro arduino con el PC a una velocidad de 9600 bits/segundo.
En primer lugar será necesario cargar la librería que controla los sensores y los motores.
¿Que es una librería de arduino?
Las librerías son colecciones de código que facilitan la interconexión de sensores, pantallas, módulos
electrónicos, etc. El entorno de arduino ya incluye algunas librerías de manera que se facilite, por
ejemplo, mostrar texto en pantallas LCD. Existen cientos de librerías desarrolladas por terceros en
Internet, que nos ayudarán a conectar prácticamente cualquier dispositivo a nuestras tarjetas con
arduino. Las librerías normalmente incluyen los siguientes archivos: Un archivo .cpp (código de C++), un
archivo .h o encabezado de C,…
Para cargar una librería que hemos encontrado en Internet en arduino: sketch importar librería
Add library. Si ya la hemos utilizado antes la tendremos en la lista y sólo tenemos que seleccionarla
para que esté disponible para nuestro programa.
#include <Ultrasonic.h> // conectamos el Trig al pin 9 y el Echo al pin 8, el número 30000 son
los ms máximos que mide y equivale a unos 5 metros. Cuanto más
Ultrasonic ultrasonic(9,8,30000);
cerca esté el objeto menor será el tiempo de regreso del ultrasonido.
}
void loop()
{ // imprime un texto entrecomillado (distancia= )
18
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11 , 12); // pines de arduino que se van a utilizar arduino
void setup() {
[Link](16, 2); //tipo de LCD que usamos de 16 columnas y 2 filas
[Link](4,1); //indicamos el punto donde comenzamos a escribir
columna 4 fila 1
[Link]("IES ZOCO "); // Texto que se escribe en la LCD
}
void loop() { }
}
void loop()
{
[Link](6, 2); // se situa el cursor en la columna 6 fila 2 de la LCD
[Link]([Link](CM));
[Link]("cm"); // imprime los cm de la medida
delay(200); // imprime la palabra “ cm” después de la cantidad
[Link](); //borra la pantalla
}
20
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
#include <Ultrasonic.h>
Ultrasonic ultrasonic(9,8,30000); // Trig 9 y Echo al pin 8, microsegundos máximos que mide el emisor 30000 ms= 5
metros. CUANTO MAS CERCA ESTÉ EL OBJETO MENOR SERÁ EL TIEMPO DE REGRESO DEL ULTRASONIDO
int led=7;
int zumbador=6;
long distancia =0;
int pausa=1000;
void setup() {
[Link](9600); //comenzamos la comunicación serial
pinMode(zumbador, OUTPUT);
pinMode(led, OUTPUT);
}
void loop() {
distancia=[Link](CM);
21
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
22
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
Como demostración, vamos a controlar un motor DC a través de la salida B del módulo. El pin ENB se
conectará con el jumper a +5V, para indicar que no vamos a controlar la velocidad del motor.
Esquema de conexión
El programa básicamente activa el motor en
un sentido por 4 segundos, luego detiene el
motor por 0.5 segundos, después activa el
motor en sentido inverso por 4 segundos y
IN3 IN4 por último detiene el motor por 5 segundos.
5 4
Jumper conectado = Luego repite la acción indefinidamente.
sin variación de
velocidad del motor
derecho
Código en Arduino
/*
Ejemplo de control de motor DC usando modulo L298
El programa activa el motor en un sentido por 4 segundos,
para el motor por 500 ms, activa el motor en sentido inverso por 4 segundos
y se detiene por 5 segundos. Luego repite la acción indefinidamente. */
int IN3 = 5;
int IN4 = 4;
void setup()
{
pinMode (IN3, OUTPUT); // Conectamos la salida 5 de arduino con la entrada IN3 de la placa
pinMode (IN4, OUTPUT); // Conectamos la salida 4 de arduino con la entrada IN4 de la placa.
}
void loop()
23
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
{
digitalWrite (IN4, HIGH); // Motor gira en un sentido, al poner una entrada a 5 v y otra a 0 v
digitalWrite (IN3, LOW);
delay(4000);
digitalWrite (IN3, HIGH); //Motor gira en sentido inverso, al cambiar la entrada que está a 5v
delay(4000);
24
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
Si queremos controlar la velocidad del motor, tenemos que hacer uso de PWM. Este PWM será
aplicado a los pines de activación de cada salida o pines ENA y ENB respectivamente, por tanto los
jumper de selección no serán usados.
Código en Arduino
El programa controla la velocidad de un motor DC aplicando PWM al pin ENB del módulo L298N.
/*
Ejemplo de control de motor DC usando modulo L298. Utilizamos una salida analógica variable entre 0 y 5
voltios, de esta forma podremos variar la velocidad del motor que irá cada vez más rápido.
*/
int IN3 = 5; // Input3 conectada al pin 5
int IN4 = 4; // Input4 conectada al pin 4
int ENB = 3; // ENB conectada al pin 3 de Arduino
void setup()
{
pinMode (ENB, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void loop()
{
digitalWrite (IN3, HIGH); //Preparamos la salida para que el motor gire en un sentido
digitalWrite (IN4, LOW);
analogWrite(ENB,55); // Escribimos en el pin ENB un valor de tensión de 1 v. El motor gira despacio.
delay(2000); //Espera 2 segundos
analogWrite(ENB,105); // Escribimos en el pin ENB un valor de tensión de 2 v. El motor gira más rápido
delay(2000); //espera
analogWrite(ENB,255); //Escribimos en el pin ENB un valor de 5 v. El motor va a máxima velocidad.
delay(2000); //Espera 2 segundos
analogWrite(ENB,0); // Apagamos el motor
delay(5000); //Espera 5 segundos
}
25
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
PRÁCTICA 23. Programa básico de control del robot controlado por un sensor de
ultrasonidos.
El robot envía por el pin TRIG del sensor de ultrasonidos un pulso de 10 milisegundos y almacena en la
variable duración el tiempo que tarda el pulso o señal de ultrasonidos en regresar. Para transformar en
centímetros este tiempo lo dividimos entre dos (porque es un tiempo de ida y de vuelta al robot) y luego entre
29. Cuando ya conocemos la distancia en centímetros, almacenamos esta información en la variable
distancia.
Con la orden IF determinamos que, si la distancia es mayor de 2 cm y menor de 15 centímetros el robot debe
parar motores, retroceder y girar. Si no detecta ningún objeto a menos de 15 cm, avanzará de nuevo.
int ECHO = 8; // define el pin 2 como (echo) para el Ultrasonido
int TRIG = 9; // define el pin 3 como (trig) para el Ultrasonido
int duracion // Creamos al variable donde guardaremos el tiempo que tarda en regresa el ultrasonido
int distancia; // Creamos al variable donde guardaremos la distancia que hemos medido
int MderA = 4; // Llamamos MderA a conector IN3 del motor derecho que conectamos al pin 4 de Arduino .
int MderB = 3; // Llamamos MderB a conector IN4 del motor izquierdo que conectamos al pin 3 de Arduino
int MderVelo = 2; // Llamamos MderVel a conector ENB que controla la velocidad del motor derecho y conectamos al pin2
int MizqB = 5; // Llamamos MizqB a conector IN2 del motor izquierdo que conectamos al pin 5 de Arduino.
int MizqA = 6; // Llamamos MizqA a conector IN1 del motor izquierdo que conectamos al pin 6 de Arduino
int MizqVelo = 7; // Llamamos MizqVel a conector ENA que controla la velocidad del motor izquierdo y conectamos al pin7
void setup() {
pinMode(ECHO, INPUT); // define el pin 8 como entrada de Arduino procedente del ultrasonido
pinMode(TRIG,OUTPUT); // define el pin 3 como salida de Arduino que va al ultrasonido
pinMode (MderA, OUTPUT); // Define como salidas de Arduino todos esos pines de comunicación
pinMode (MderB, OUTPUT); //Que van a controlar los motores
pinMode (MderVelo, OUTPUT);
pinMode (MizqB, OUTPUT);
pinMode (MizqA, OUTPUT);
pinMode (MizqVelo, OUTPUT);
}
void loop() {
digitalWrite(TRIG, HIGH); // Lanza un pulso por el Trigger del ultrasonidos durante 10 milisegundos
delay(10);
digitalWrite(TRIG, LOW); // anula el pulso al pasar los 10 milisegundos
duracion = pulseIn(ECHO, HIGH); // Lee el tiempo del Echo, que es el que ha tardado en regresar el pulso que
hemos lanzado y lo guarda en la variable “duración”.
distancia = (duracion/2) / 29; // calcula la distancia en centímetros y la guarda en variable distancia. Para ello
la divide entre 2 (porque es de ida y vuelta) y entre 29 (para pasarlo a centímetros) guarda el resultado en la variable
“distancia”
delay(10);
if (distancia <= 15 && distancia >=2){ //si la distancia es menor de 15 cm y mayor de 2 cm entonces
26
I.E.S. Virgen del campo PRÁCTICAS ARDUINO Dpto. de Tecnología
digitalWrite (MderB, HIGH); //Ambos motores vuelven a girar hacia delante a máxima potencia
digitalWrite (MderA, LOW);
analogWrite(MderVelo,160);
digitalWrite (MizqB, HIGH);
digitalWrite (MizqA, LOW);
analogWrite(MizqVelo,160);
}
}
digitalWrite(negro, LOW);
delay(500);
}
void M_derecha_lento() // Crea la función motor gira a derechas lento
{
analogWrite(rojo, 130); // el motor gira a derechas lentamente.
digitalWrite(negro, LOW);
delay(2000);
digitalWrite(rojo, LOW);
delay(500);
}
void M_izquierda_lento() // Crea la función motor gira a izquierdas lento
{
analogWrite(negro, 130); // el motor gira a izquierdas lentamente.
digitalWrite(rojo, LOW);
delay(2000);
digitalWrite(negro, LOW);
delay(500);
}
28