Arduino

introducción a Arduino

En la imagen anterior se puede ver una imagen de Arduino.

Se pueden diferenciar las distintas conexiones que tiene entre las que hay 13 patitas de conexión de entrada o salida digital (opción configurable por el usuario al inicio del programa) que permiten conectar LED, pulsadores y otros dispositivos, que solo pueden tener dos estados (on-off, pulsado-no pulsado, verdadero-falso, etc). Son señales que manejan voltajes de 0V (off) ó 5V (on).

También hay 6 entradas analógicas, conexiones de voltajes de 5V, 3,3V, GND, un conector de alimentación externa y un puerto USB para conectarlo al ordenador.

comandos de Arduino

En la tabla de más abajo se pueden ver los comandos utilizados en los programas de Arduino, así como los tipos de variables que se pueden utilizar y las sentencias de control.

Imprime esta hoja para tenerla como hoja de referencia cuando estés programando con Arduino.

entorno de programación

Arduino IDE

Entorno de programación oficial de Arduino. Con este software se programa la placa real de Arduino

Tinkercad - Online

Entorno de programación on-line. Es un simulador que permite trabajar con Arduino sin necesidad de tener la placa físicamente. Permite añadir multitud de componentes electrónicos a la simulación y hacer pruebas simuladas antes de programar el Arduino real.

Es una herramienta gratuita que nos ofrecen desde la página de Autodesk.

estructura básica de un programa de Arduino

El código de programación básico se divide en dos grandes bloques, inicialización y ejecución.

La parte de inicialización es void setup(), en donde se definen como se van a utilizar las entradas y salidas de Arduino. Se ejecuta una sola vez al inicio del programa.

La parte de ejecución es void loop(), es donde estará definido el programa que se quiere ejecutar de marera repetida. Se ejecuta en modo bucle, es decir, cuando termina de ejecutarse la última línea se vuelve otra vez a ejecutar el programa desde el principio del void loop().

salida digital con Arudino


Entrada digital con arduino


Uso del un pulsador con Arduino

Salida pwm con arduino

Estas salidas se pueden utilizar para hacer encendidos de LED de manera progresiva o controlar la velocidad de giro de un motor.

"Es importante recordar en todo momento que en una salida PWM el valor de tensión realmente es Vcc. Por ejemplo, si estamos alimentando un dispositivo que necesita 3V, y usamos una pulsada, en realidad estaremos suministrando 5V durante un 60% del tiempo y 0V durante el 40%. Pero si el dispositivo, por ejemplo, soporta como máximo 3V, podemos dañarlo si lo alimentamos mediante un PWM. "

Se utilizará la función "analogWrite(pin,valor)" En donde valor puede tomar los valores entre 0 y 255.

Dependiendo de que valor se le dé al pin se obtendrá a la salida un porcentaje de voltaje medio que se puede calcular mediante una sencilla regla de tres.

En la imagen se ponen tres ejemplos, con valores 100, 128 y 40, respectivamente.

Eso hará que el LED conectado a la salida digital se encienda con una iluminación que corresponderá al porcentaje calculado.

LED RGB:

Este diodo LED tiene en su interior tres LED que se pueden encender de manera independiente con los colores rojo, verde y azul (Red, Green, Blue).

Se los LED se encienden de manera simultánea se obtendrán mezclas de colores, de tal manera que se puede representar cualquier color deseado si se elige la combinación correcta.

NOTA: Las resistencias de polarización utilizadas para los tres diodos deben ser del mismo valor. Así se conseguirán colores fieles a la tabla de colores que se muestra más abajo.

Como con Arduino se puede dar un nivel de intensidad a cada color dentro de 256 posibles niveles y tenemos 3 colores, la gama de colores que se puede conseguir es de:

255 x 255 x255 = 16.581.375 Colores. Es lo que se conoce como color verdadero de una imagen.

En una pantalla de PC o TV, que está compuesta por varios miles de Pixel o LED RGB para formar una imagen

En la tabla de más abajo se pueden ver varios ejemplos de colores conseguidos dependiendo de la combinación de colores elegida.

Tabla de colores RGB:

En esta tabla se puede observar los valores numéricos con los que hay que encender cada LED RGB para obtener el color deseado.

Esto se puede hacer con un programa en Arduino cuando se conecta un LED RBG a tres salidas PWM en las que se de como salida los códigos de color deseado en el programa en cuestión.

sonidos con buzzer y arduino

Hay dos tipos de altavoces que se pueden utilizar con Arduino.

Para activar un buzzer activo solo es necesario poner 5V en su entrada y ya generará un tono de sonido

Para activar un buzzer pasivo hay que generar un tono de sonido con Arduino, activando y desactivando la salida digital a una velocidad suficientemente alta como para que sea audible. Hay una función de Arduino ya preparada para esta función y que se presenta más abajo.

Buzzer Activo (Solo con alimentarlo suena)

Buzzer Pasivo

(Necesita un tono de sonido para funcionar)

Se utilizarán las siguientes funciones para hacer sonar el buzzer a una frecuencia determinada. usar las salidas PWM.

tone(pin, frecuencia); //activa un tono de frecuencia determinada en un pin dado

noTone(pin); //detiene el tono en el pin

tone(pin, frequencia, duracion); //activa un tono de frecuencia y duración determinados en un pin dado

Ver los siguientes ejemplos de uso del buzzer

altavoz conectado en el Pin9 para generar una función de 440Hz durante un segundo, pararlo durante 500ms, y finalmente un tono de 523Hz durante 300ms, para repetir el programa tras una pausa de 500ms.

Este programa emplea un array con frecuencias que recorremos secuencialmente para realizar un barrido que aproxima las distintas notas musicales.

manejar relés con arduino

Puesto que una salida digital de Arduino no puede manejar intensidades superiores a los 20mA, no se podrá activar directamente un relé a la salida de Arduino sin la ayuda de un circuito amplificador de corriente.

En el caso que se indica más abajo, este amplificador de corriente se construye con un transistor bipolar NPN. Puede utilizarse cualquier modelo, BD139, BC547, etc.

NOTA: Se recomienda utilizar siempre una resistencia de al menos 300 ohmios, como medida de protección, en cualquier salida de Arduino. Así se evitarán posibles daños al circuito de salida en caso de cometer una equivocación en la conexión del cableado.

En este esquema se puede ver el esquema que hay que montar para controlar un relé con Arduino.

El transistor actúa como amplificador de intensidad de la salida de Arduino, en modo interruptor.

Los contactos de salida del relé pueden atacar directamente a cargas de 230V.

En esta imagen se puede apreciar un módulo de relé ya preconstruido y diseñado para Arduino.

En este caso la circuitería auxiliar necesaria para la activación del relé y la señalización correspondiente ya está montada directamente en placa.

Se puede observar que también trae contactos con tornillos para conectar los cables de la carga.

PANTALLA LCD

Aspecto de un LCD funcionando



Conexionado de LCD

Manejo del LCD con Arduino:

  1. Incluir librería necesaria para la puesta en marcha de la pantalla LCD

#include <LiquidCrystal.h>

  1. Definir las constantes que manejaremos con la pantalla LCD en donde pondremos las características de la pantalla

#define COLS 16 // Columnas del LCD

#define ROWS 2 // Filas del LCD

#define VELOCIDAD 300 // Velocidad a la que se mueve el texto

  1. Indicar a Arduino como hemos conectado el LCD a la placa de Arduino, en donde se indicarán los pines utilizados en la conexión. La función espera definir los siguientes pines LyquidCrystal(RW, sincronización, d4, d5, d6, d7). Ejemplo:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

  1. Indicar a Arduino la resolución en filas y columnas que utiliza el LCD

lcd.begin(COLS, ROWS);

  1. Indicar la posición en donde se quiere escribir en el LCD y escribir el texto y/u otras operaciones.

lcd.setCursor(0,0); //Poner el cursor en la posición 0, 0

lcd.print("Hola Mundo!!!!!!"); //Imprimir una frase

lcd.clear(); //Borrar el LCD

lcd.noDisplay(); //Apagar la pantalla

lcd.display(); //Encender la pantalla

NOTA: Para ver las funciones de <LiquidCrystal.h> pincha aquí.

Entradas analogicas con arduino

Se utiliza la función de lectura:

Valor = analogRead(Pin_Analógico);

Nos devuelve un valor entre 1 y 1023, que corresponde a los escalones digitalizados de una señal de 5V por defecto

Con la función analogReference() se puede cambiar al voltaje de referencia segun:

  • DEFAULT: Valor por defecto, 5V o 3.3V, según modelos.

  • INTERNAL: Corresponde a 1.1V (en Atmega 168 y 328)

  • EXTERNAL: Voltaje aplicado de forma externa en el pin Vref (siempre entre 0 y Vcc

  • INTERNAL1V1 y INTERNAL2V56, correspondientes a 1.1V y 2.56V (sólo en Mega)

Monitor serie con Arduino

El monitor serie de Arduino nos permite ver los valores que van tomando las variables del programa al tiempo que se está ejecutando dicho programa.

Hay que inicializar el puerto serie en la parte de setup

void setup(){

Serial.begin(9600); //iniciamos el puerto serie

}

Para imprimir textos o valores se utiliza la función Serial.print() en la función principal

Serial.print("Contador: ");

Serial.println(cont);


Sensor de temperatura con Arduino

Conectando este dispositivo a una entrada analógica de Arduino se podrán obtener los valores de temperatura y humedad del lugar en donde está ubicado el sensor.