Utilización de Funciones con Arduino

Como se habrán dado cuenta en el código del semáforo, hay mucho código que se repite…y que de alguna forma se podría automatizar para no tener que escribir tanto código.

Ahí es donde entra en juego la creación de funciones, donde uno puede indicarle que pines desea activar o desactivar. Y nos permite reutilizar el mismo código para distintas secuencias, ahorrando así espacio, código y memoria.

Que necesitamos para hacerlo?

1-Software Necesario

 

El ide (entorno de programacion) del Arduino descargado e Instalado

Chequear siempre antes de cargar cualquier código de arduino a la placa, que este bien seleccionado la Placa que estemos utilizando y el Puerto al cual esta conectada la misma.

 

2-Componentes Electrónicos

 

 

1 – Arduino Uno o cualquier otro tipo de Arduino que disponga de los pines hembra soldados.

 

 

 

 

1 -Cable USB para conectar el Arduino a la PC

 

 

 

 

1-Protoboard ya sea de 400 puntos o de 800 puntos

 

 

 

 

3-Resistencias de entre 100 y 330 Ohms, habitualmente utilizamos 220 Ohms

 

 

 

 

4- Cables macho macho para la conexión de los elementos de la protoboard con el arduino.

 

 

 

3-Leds de colores rojo, amarillo y verde para indicar los colores del semáforo.

Esquema de conexión eléctrica

 

Código de Programación

/*
La idea de este ejemplo es la implementación de funciones,
Uno que sea una función titila rápido y el otro titila lento
*/
//definimos los leds que vamos a usar 
const  int  led_verde = 12;            //le doy un nombre al pin 12
const  int  led_amarillo = 11;       //también se conocen como darle un alias
const  int  led_rojo = 10;               //en este caso al pin 10 lo llamamos led_rojo

//recordemos que en la función setup se definen las salidas
void setup() 
{  
  pinMode(led_verde, OUTPUT);       //defino el pin verde como salida
  pinMode(led_amarillo, OUTPUT);   //defino el pin amarillo  como salida
  pinMode(led_rojo, OUTPUT);          //defino el pin rojo como salida
}
//aqui comienza el loop o bucle principal
void loop() 
{
   titila_lento(led_rojo);                 //hago que el rojo titile lento
   titila_rapido(led_amarillo);       //que el amarillo titile rápido
   titila_lento(led_verde);              //verde titile lento
   titila_rapido(led_verde);           //verde titile rápido
   titila_lento(led_amarillo);         //amarillo titile lento
}
//las funciones se definen fuera de loop
 void titila_lento(int numero_pin)
{
     digitalWrite(numero_pin, HIGH);           //prendemos el pin
     delay(1000);
     digitalWrite(numero_pin, LOW);           //apago el pin
     delay(1000);
}

void titila_rapido(int numero_pin)
{
     digitalWrite(numero_pin, HIGH);           //prendemos el pin
     delay(500);
     digitalWrite(numero_pin, LOW);           //apago el pin
     delay(500);
}

}

Desafíos adicionales

 

1) Crear e implementar una nueva función que haga titilar mas de 1 vez el led.

2) Crear una nueva función que reciba 2 parámetros para activar y hacer titilar 2 leds simultáneamente.

3) Crear una función semáforo, al que solo le tenga que pasar los 3 pines donde estén conectados los leds rojo, amarillo y verde y que la función se encargue de hacer la secuencia.