Arduino es una completa plataforma libre, para la programación y control de elementos físicos. Comprende tanto una placa electrónica (hardware) que cuenta con un microcontrolador y
pines para conexión, como un entorno de desarrollo o IDE (software).
Su entorno es multiplataforma; se puede instalar y usar tanto en Linux, en Windows y en Mac OS.
Utiliza un lenguaje de programación simple, basado en Java pero admite C y C++.
Para descargar el IDE podés acceder desde acá: https://www.arduino.cc/en/Main/Software
Básicamente un programa de Arduino tiene 2 partes bien diferenciadas. Una es el void setup y otra el void loop.
Setup, quiere decir preparación, disposición. Por ello, en esta parte de la estructura, entre otras cosas, inicializaremos los pines como entrada o salida.
Comenzaremos escribiendo la palabra void (es una palabra reservada que significa nulo, pero más adelante veremos para que sirve) seguida de la palabra setup. Luego abriremos y cerraremos paréntesis y seguidamente abriremos una llave "{". Esta llave es la que dará inicio a todo lo que deba contener el setup.
Como dijimos, la función setup se usa para inicializar los pines; para ello creamos la función pinMode seguida de unos paréntesis donde colocaremos sus parámetros separados por una coma. Estos parámetros serán el número de pin del que se trate y el modo en que queremos configurarlo, INPUT, si será un pin de entrada o OUTPUT, si será de salida.
Siempre se debe recordar colocar un punto y coma ";" luego de cerrar el paréntesis. Para dar por terminada la función setup, digitaremos una llave de cierre "}".
Loop, es una palabra en inglés que significa bucle y tiene la finalidad de repetir constantemente lo que se coloque dentro de sus llaves. ¡Sí, al igual que el setup, comienza con la palabra void, luego la palabra loop seguida de los paréntesis y la llave de apertura.
En esta parte del sketch se colocará todo lo que queremos que el programa haga. Y eso se repetirá en un bucle infinito.
En el ejemplo de la imagen, vemos que tenemos la función digitalWrite y en sus parámetros el número de pin al que le dará energía, al configurarlo como HIGH o se la quitará al configurarlo como LOW.
La función delay se utiliza para pausar el programa y su único parámetro será el tiempo en milisegundos que se desea mantenerlo detenido.
Vemos también que cada instrucción se separa por un punto y coma ";" y toda la función loop se culmina con una llave de cierre "}".
Luego de haber analizado la secuencia de luces de los semáforos de la vía pública, nos animamos a armar el propio en clase. En la imagen vemos una representación digital creada en el programa Tinkercad. Y adjunto a este texto, encontramos el programa que utilizamos para que funcione en esa aplicación. ¡Pueden probar en sus casas!
const int verde=2; //definimos el valor del pin para el led verde
const int amarillo=4; //definimos el valor del pin para el led amarillo
const int rojo=7; //definimos el valor del pin para el led rojo
void setup() {
pinMode(verde,OUTPUT); //declaramos el pin verde como salida
pinMode(amarillo,OUTPUT);//declaramos el pin amarillo como salida
pinMode(rojo,OUTPUT); //declaramos el pin rojo como salida
Serial.begin(9600);
}
void loop() {
digitalWrite(verde,HIGH); //encendemos el led verde
delay(2000); //esperamos 2 segundos (equivalente a 2000 milisegundos)
digitalWrite(verde,LOW); //apagamos el led verde
delay(500); //esperamos medio segundo (equivalente a 500 milisegundos)
digitalWrite(amarillo,HIGH); //encendemos el led amarillo
delay(1000); //esperamos 1 segundo
digitalWrite(amarillo,LOW); //apagamos el led amarillo
delay(500); //esperamos medio segundo
digitalWrite(rojo,HIGH); //encendemos el led rojo
delay(2000); //esperamos 2 segundos
digitalWrite(rojo,LOW); //apagamos el led rojo
delay(500); //esperamos medio segundo
}
Esta sería una solución para el interrogante que planteamos sobre conocer la cantidad de veces que el semáforo repitió el código que agregamos dentro del loop. Esta simple variable que llamamos "vueltas", que va sumando un valor de 1 cada vez que se cumple 1 ciclo del loop, nos permite conocer la cantidad de vueltas que fue dando de la secuencia completa de prendido y apagado de luces.
const int verde=2; //definimos el valor del pin para el led verde
const int amarillo=4; //definimos el valor del pin para el led amarillo
const int rojo=7; //definimos el valor del pin para el led rojo
int vueltas=0;
void setup() {
pinMode(verde,OUTPUT); //declaramos el pin verde como salida
pinMode(amarillo,OUTPUT);//declaramos el pin amarillo como salida
pinMode(rojo,OUTPUT); //declaramos el pin rojo como salida
Serial.begin(9600);
}
void loop() {
digitalWrite(verde,HIGH); //encendemos el led verde
delay(2000); //esperamos 2 segundos (equivalente a 2000 milisegundos)
digitalWrite(verde,LOW); //apagamos el led verde
delay(500); //esperamos medio segundo (equivalente a 500 milisegundos)
digitalWrite(amarillo,HIGH); //encendemos el led amarillo
delay(1000); //esperamos 1 segundo
digitalWrite(amarillo,LOW); //apagamos el led amarillo
delay(500); //esperamos medio segundo
digitalWrite(rojo,HIGH); //encendemos el led rojo
delay(2000); //esperamos 2 segundos
digitalWrite(rojo,LOW); //apagamos el led rojo
delay(500); //esperamos medio segundo
vueltas = vueltas + 1;
Serial.print("Vueltas dadas = ");
Serial.println (vueltas);
}