domingo, 27 de febrero de 2022

Los diodos LED (IDE Arduino)

El shield multifunción cuenta con cuatro diodos LED, D1, D2, D3 y D4, que están conectados a los pines 13, 12, 11 y 10 de Arduino. Para controlarlos es necesario programar dichos pines como salidas con la instrucción pinMode y, posteriormente, encenderlos o apagarlos con la instrucción digitalWrite, suministrando un voltaje bajo (LOW del orden de 0 voltios) o alto (HIGH unos 5v).

Nuestro primer programa sirve para encender el LED D1. En él vamos a utilizar las instrucciones comentadas anteriormente.

/* 
 * encendidoLedD1
 * Este programa enciende el Led D1, conectado al pin13.
 * Por la manera en la que están conectados en el shield, los
 * diodos Led se encienden con un nivel de voltaje bajo LOW
 * y se apagan con un voltaje alto HIGH.
 */

void setup() {
  pinMode(13, OUTPUT);      //programamos pin 13 como salida
  digitalWrite(13, LOW);    //ponemos un voltaje bajo en pin 13
}

void loop() {                          

}

Ahora vamos a hacer que el LED D1 parpadee a intervalos de 1 segundo. Usaremos la instrucción delay para detener el programa durante el tiempo que deseemos, expresado en milisegundos (1 seg = 1000 mseg).

/* 
 * parpadeoD1
 * Este programa hace parpadear el Led D1, pin 13,
 * a intervalos de 1 segundo.
 * El tiempo hay que expresarlo en milisegundos
 * 1 seg = 1000 mseg.
 */

void setup() {
  pinMode(13, OUTPUT);      //programamos pin 13 como salida
}

void loop() {                          
  digitalWrite(13, LOW);    //encendemos Led D1
  delay(1000);              //esperamos 1 segundo
  digitalWrite(13, HIGH);   //apagamos Led D1
  delay(1000);              //esperamos 1 segundo
}


En el siguiente programa vamos a ir encendiendo los LED de uno en uno a intervalos de 1 segundo. Después se apagan todos durante 2 segundos y vuelve a iniciarse el ciclo.

/*
 * encendidoProgresivoLED
 * Los LED se van encendiendo de uno en uno a intervalos
 * de un segundo. Después se apagan durante dos segundos
 * y vuelve a iniciarse el ciclo.
 */

void setup() {
  pinMode(13, OUTPUT);     //todos los pines salidas
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  digitalWrite(13, HIGH);  //apagamos todos los LED
  digitalWrite(12, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(10, HIGH);  
}

void loop() {
  digitalWrite(13, LOW);   //encendemos D1
  delay(1000);
  digitalWrite(12, LOW);   //encendemos D2
  delay(1000);
  digitalWrite(11, LOW);   //encendemos D3
  delay(1000);
  digitalWrite(10, LOW);   //encendemos D4
  delay(1000);
  digitalWrite(13, HIGH);  //apagamos todos los LED
  digitalWrite(12, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(10, HIGH);  
  delay(2000);
}
Ejercicios propuestos:

1.- Hacer un programa que provoque el parpadeo alternativo de los LEDs 1-2 y los LEDs 3-4. Es decir, se encienden los LEDs 1 y 2 mientras que los LEDs 3 y 4 permanecen apagados durante medio segundo, posteriormente, se apagan los LEDs 1 y 2 y se encienden los LEDs 3 y 4 durante medio segundo. El ciclo se repite permanentemente.

2.- Ahora tenemos que conseguir un movimiento rápido de sube-baja con un único LED encendido.

3.- Programar un semáforo para coches. El LED D1 sería el rojo, el D2 el ambar y el D3 el verde. Posteriormente, se podría ampliar el programa usando el LED D4 para los peatones, encendido no se puede pasar y apagado si, incluso se puede hacer parpadear para avisar que el tiempo de paso se agota antes de ponerse en rojo.

miércoles, 23 de febrero de 2022

Arduino + Shield multifunción (IDE Arduino)

Arduino es una pequeña tarjeta programable capaz de hacer unas cosas u otras dependiendo de los programas que nosotros carguemos en su memoria. Se conecta al puerto USB del ordenador y mediante un lenguaje propio se escriben los programas y se suben a la placa. Una vez programada no necesita seguir unida al ordenador, se puede desconectar de él y funcionar de manera autónoma (siempre que la alimentemos con una fuente o batería adecuada).

Arduino cuenta con una serie de pines en los que podemos conectar y controlar elementos externos; luces, motores, sensores, etc:

14 pines digitales (numerados de 0 a 13) que se programan individualmente como entrada o salida y  suministran o leen un voltaje alto (próximo a 5v, HIGH) o bajo (próximo a 0v, LOW). Además, en los pines 3, 5, 6, 9, 10 y 11 se puede obtener una señal analógica (PWM) con una precisión de 8 bit.

6 entradas analógicas (numeradas de 0 a 5) que permiten leer un voltaje comprendido entre 0 y 5v con una resolución de 10 bit (suministran un número entre 0 y 1023). Si se desea, también podemos programarlos como entradas/salidas digitales, en ese caso, se nombran como pines 15,...19.


En lugar de usar una protoboard para cablear y añadir  elementos externos, vamos a utilizar un Shield multifunción (k5864195); se trata de una placa que se pincha directamente sobre Arduino y pone a nuestra disposición cuatro diodos LEDs, tres pulsadores, un potenciómetro, un zumbador y un display de 7 segmentos de cuatro dígitos, además, quedan libres varios pines en los que podemos conectar directamente otros dispositivos, por ejemplo: un sensor de temperatura, micro servos, sensores de ultrasonidos, de infrarrojos (sigue línea) e incluso un circuito bluetooth.


Un aliciente adicional para usarlas es su bajo coste, actualmente, se pueden encontrar por un precio inferior a 10 euros (las dos) en ElectroHobby.

En estas entradas vamos a utilizar como lenguaje de programación el entorno de desarrollo propio de Arduino; en este caso, no se trabaja con bloques, sino que hay que ir escribiendo las instrucciones. Además, en principio, vamos a procurar no usar librerías externas, pretendemos hacerlo todo nosotros sin ayudas.

Descargamos el IDE Arduino del siguiente enlace con la página oficial:


Lo instalamos siguiendo las instrucciones y lo ejecutamos, nos aparecerá una ventana similar:


Ya podemos escribir nuestro primer programa. Se trata de hacer encender el LED D1 de la placa multifunción, que está conectado al pin 13 de Arduino:


Ahora enchufamos Arduino al ordenador con el cable USB y comprobamos que ha quedado conectado a uno de los puertos COM. Por último, pinchamos en el icono Subir para cargar el programa en la memoria. Si todo es correcto el LED D1 permanecerá encendido.


En las siguientes entradas iremos utilizando los distintos elementos del shield multifunción y las instrucciones necesarias para su programación.