Skip to main content

Timbre con un pulsador – Ejemplo con Arduino Nº 08

En este ejemplo te voy a enseñar cómo crear un circuito de un timbre con un pulsador, eso sí, sustituiremos el timbre por un diodo LED, aunque te invito a probar con un piezoeléctrico, si quieres obtener un sonido en vez de una luz, aunque para aprender el concepto es suficiente con un LED.

Antes de nada, debes comprender el funcionamiento del pulsador, el pulsador es un componente electrónico que une dos puntos del circuito cuando lo presionas, también es llamado Botón.

CIRCUITO:

En este montaje utilizaremos el mismo circuito que en el ejemplo de entradas digitales, es decir utilizaremos una resistencia de 10K conectada a GND por un extremo, y por el otro conectaremos uno de los extremos del pulsador y el otro del pulsador lo conectaremos a Vcc, y es del nudo de la intersección de estos dos componentes de donde sacaremos la señal que llevaremos a la entrada digital 2 de la placa de Arduino.

Cuando el pulsador no está accionado, la patilla 2 del Arduino lee un “cero” es decir cero voltios, y cuando el componente es pulsado, la patilla 2 del Arduino lee un “uno” es decir cinco voltios.

Es necesario recordar, que si en una entrada digital de Arduino, no está conectada ni a GND ni a Vcc, no se puede saber cuál será el valor que estará leyendo en ese momento.

CÓDIGO:

En este caso en la función setup(), inicializamos el Pin 13 como salida mediante la variable Led, y el Pin 2 como entrada mediante la variable, Boton.

En la función loop() leemos si está accionado o no el pulsador mediante la función digitalRead(), la cual nos deja su lectura en la variable EstadoDelBoton.

Por último, simplemente hacemos una comparación para conocer el EstadoDelBoton, y en el caso de que esté activado encenderemos el Led mediante la función digitalWrite(), pasándole el parámetro HIGH y en caso contrario, apagaremos el Led con la misma función digitalWrite(), pero en este último caso, pasándole el parámetro LOW.

El código definitivo queda de la siguiente manera:

const int Boton =2;

const int Led=13;

int EstadoDelBoton=0;

void setup()

{

                pinMode(Led, OUTPUT);

                pinMode(Boton, INPUT);

}

void loop()

{

                EstadoDelBoton=digitalRead(Boton);

                If (EstadoDelBoton==HIGH)(

                {

                               digitalWrite(Led,HIGH);

}

else

{

                digitalWrite(Led,LOW);

}

}

Espero que te haya sido útil este ejemplo, y recuerda que tienes cursos completos de Arduino en el aula virtual de aprobarfacil.com.


Entrada al AULA VIRTUAL de aprobarfacil.com

Voltímetro – Ejemplo con Arduino Nº 06

En este ejemplo te voy a enseñar como hacer un voltímetro con Arduino, leiendo el valor de un pin analógico y mostrar el valor de tensión correspondiente en el monitor serie, es decir vamos a construir un votímetro simple con Arduino.

Para ello conectaremos un potenciómetro con sus dos patillas de los extremos conectadas a GND y Vcc respectivamente y la patilla común del potenciómetro en la entrada A0, que es una entrada analógica de la placa de Arduino.

Si conectamos correctamente el potenciómetro, en uno de los extremos mostrará 5 voltios en la patilla A0 y en el otro extremo 0 Voltios pasando por todos los valores que nos proporciona el conversor analógico a digital es decir 5 Voltios/1023 valores. Así que para obtener el valor de tensión, multiplicarás el valor obtenido de dividir 5/1023 por el valor leído en la patilla A0 de la placa Arduino, mediante la función analogRead().

En este programa utilizaremos una variable de tipo float, que nos permitirá tener una medición más ajustada al valor real de la tensión.

CÓDIGO

void setup()

{

Serial.begin(9600);

}

void loop()

{

int ValorLeido=analogRead(A0);

float Voltaje = ValorLeido * (5.0 / 1023.0);

Serial.println (Voltaje);

}

analogRead() – Lectura de entradas analógicas – Ejemplo con Arduino Nº 05

En este ejemplo te enseñare como leer el valor presente en una entrada analógica, mediante la función analogRead(), usando un potenciómetro que simulará una señal proveniente de un sensor.

El potenciómetro es el mecanismo más simple para obtener una señal eléctrica variable. Conectando los dos extremos del potenciómetro a la tensión de alimentación y a masa respectivamente, dispondrás en la patilla común una señal eléctrica variable entre 0 voltios y Vic (Tensión de alimentación), podrás crear un divisor de tensión que simulará la señal eléctrica que te proporcionaría un sensor de cualquier magnitud física.

En este ejemplo, además veremos el valor que nos proporciona el conversor analógico integrado dentro de la placa arduino, a través del monitor del puerto serie.

CIRCUITO ELÉCTRICO

analogreadserial_bb
analogreadserial_bb

Para la realización de este circuito, conectaremos una de las patillas del extremo del potenciómetro a masa (GND) y el otro extremo a 5 voltios (Vcc), la patilla del centro del potenciómetro la conectaremos a la entrada analógica A2.

Cuando el potenciómetro se encuentra en uno de los extremos tendrás en la patilla del centro, O voltios y cuando este girado hasta el otro extremo tendrás 5 voltios en la patilla del medio del potenciómetro.

La placa de Arduino tiene un conversor de Analógico a Digital que te proporciona un valor de 0 cuando en la patilla tienes 0 Voltios y 1023 cuando la tensión en la patilla es de 5 voltios. El valor leído por el conversor analógico a digital (ADC) se lee mediante la función analogRead() que te devuelve un valor entre 0 y 1023, proporcionalmente a la tensión aplicada al pin de entrada analógica.

CÓDIGO

void setup()

{

Serial.begin(9600);

}

void loop()

{

int LecturaDelSensor= analogRead(A2);

Serial.println(LecturaDelSensor);

}

Recuerda abrir el monitor del Puerto serie que se encuentra en la esquina superior derecha del IDE de Arduino.

analogWrite() – Manejo de salidas analógicas – Ejemplo con Arduino Nº 04

En este ejemplo voy a tratar de explicarte cómo funciona la salida analógica de tu placa Arduino, para ello utilizaré la función analogWrite(), una salida con un “falso valor analógico” ya que utiliza una modulación por ancho de pulso para proporcionarnos un valor de tensión analógico (que puede variar entro dos valores sin perder su continuidad).

Así como la función analogRead() puede leer valores que van del 0 al 1023, con la función analogWrite() solamente podrás escribir valores de 0 a 255 en la salida analógica.

Las salidas analógicas son aquellas que tienen el símbolo de la corriente alterna ( ~ ) serigrafiado en su costado.

CIRCUITO:

Para realizar el circuito de este ejemplo conectarás el ánodo del diodo LED al pin de la salida digital 9, a través de una resistencia de 220 ohmios, y la otra patilla del LED, el cátodo la conectarás directamente a masa.

CÓDIGO:

Para comprobar el funcionamiento de esta función utilizaremos una variable Brillo que irá variando su valor de 0 a 255 y de 255 a 0 sucesivamente, con lo que conseguirás que el LED se valla encendiendo y apagando progresivamente, en lugar del ejemplo del parpadeo, en el que el LED se encendía y apagaba en un TODO / NADA, APAGADO / ENCENDIDO.

El programa definitivo quedará de la siguiente manera:

int LED=9;                                           // Asigno a la variable LED el valor 9

int Brillo = 0;                                      // Asigno a la variable Brillo el valor 0

int IncrementoBrillo = 5;               // Asigno a la variable IncrementoBrillo el valor 5

void setup()

{

pinMode( LED, OUTPUT);  // Establezco el pin 9 como salida

}

void loop()

{

analogWrite( LED, Brillo);                // Envío al pin 9 el valor de la variable Brillo

Brillo = Brillo + IncrementoBrilo   // Incremento el Brillo para la próxima iteración

If(Brillo <= 0 || Brillo >= 255)      // Si el brillo llega a su límite superior o inferior

{

IncrementoBrillo = -IncrementoBrillo     // Cambio de incremento a decremento según

}                                                                             // convenga

delay(30);            // Espero 30 milisegundos para poder observar el efecto

}

Con este simple programa podrás observar el efecto de la salida analógica, te invito a utilizar el monitor serie, y la función Serial.println() para poder observar cuantitativamente el valor que enviamos al LED y a hallar la correspondiente función de equivalencia en voltios de los valores de salida.

digitalRead() y Serial.begin() – Lectura de entradas digitales – Ejemplo con Arduino Nº 03

Para leer el valor de un detector, utilizarás la función digitalRead(), además en este ejemplo te voy a mostrar cómo ver en el monitor del puerto serie el valor leído en un pin configurado como entrada digital, a través del USB, para ello utilizarás la función Serial.begin().

CIRCUITO:

En este ejemplo utilizaremos una resistencia de 10K, uno de sus extremos lo conectarás directamente a masa, el otro extremo lo conectarás a un pulsador tal como se indica en el esquema eléctrico, el nodo donde se conectan el pulsador y la resistencia lo llevarás mediante un cable de conexión al pin 2, configurado como entrada, en este caso entrada digital.

Si todo funciona como debiera, cuando no acciones el pulsador en el pin digital número 2 tendrás 0 voltios, que la placa de Arduino interpretará como “cero” o “falso” y cuando el pulsador este activado tendrás en el citado pin 5 voltios que la placa de Arduino interpreta como “uno” o “cierto”

Si desconectas el pin de entrada del todo, el LED puede parpadear de forma errática. Esto se debe a que la entrada no está conectada ni a tierra ni a Vcc, es por ello que se necesita una resistencia pull-down en la circuitería que acompaña al pulsador.

CÓDIGO:

Para comenzar las comunicaciones entre la placa de Arduino y el PC deberás inicializar el puerto de comunicaciones serie a 9600 baudios (bits/segundo) mediante la función:

Serial.begin(9600).

A continuación, iniciarás el pin digital 2, como un pin de entrada mediante la función:

pinMode( 2 , INPUT );

Estas dos funciones, como ya habrás deducido, irán dentro de la función setup() y el programa en sí, estará en la función loop(), donde continuamente estaremos comprobando si el pulsador esta accionado o no, mediante la función:

digitalRead(2);

El valor leído por esta función lo debemos memorizar en una variable de tipo int, llamada por ejemplo, EstadoDelPulsador, donde memorizaremos si el pulsador ha sido activado o no, mediante esta sentencia:

EstadoDelPulsador = digitalRead(2);

Has de tener en cuenta, que mientras el pulsador no está activado, la patilla número dos está conectada a masa mediante la resistencia de 10K, pero cuando activas el pulsador estás conectando Vcc a masa mediante la citada resistencia.

Una vez que se ha leído el valor presente en el pin 2, y memorizado en la variable EstadoDelPulsador, la puedes mostrar en el monitor del puerto serie incluido en el IDE de Arduino, mediante la función:

Serial.println(EstadoDelPulsador);

Si todo ha ido correctamente en tu monitor del puerto serie verás un “0” cuando el pulsador no está accionado y un “1” cuando pulses el dispositivo.

El programa completo quedará así:

int pulsador=2;

void setup()

{

Serial.begin(9600);

pinMode( pulsador, INPUT);

}

void loop()

{

int EstadoDelBoton = digitalRead( pulsador );

Serial.println( EstadoDelBoton );

delay( 1 ) ;                  // Retraso para poder ver el valor en el monitor

}

digitalWrite() – Manejo de salidas digitales – Ejemplo con Arduino Nº 02

En el ejemplo del parpadeo, o blink, utilizamos la función digitalWrite(), este es el ejemplo más sencillo que se puede hacer con Arduino, para conocer el comportamiento de una salida digital, a este pin configurado como salida, conectaremos un led y una resistencia de 220 ohms, conectados con la polaridad adecuada. Es decir, el cátodo a masa y el ánodo del led conectado a la parte más positiva del circuito.

De hecho, para este ejemplo, no es necesario conectar una resistencia y un led, ya que las placas de Arduino, tienen integrado un led conectado a una salida digital concreta. El IDE de Arduino tiene una constante definida como LED_BUILTIN, que es la que permite controlar el led incorporado a la placa.

Esta es la relación de pins con el led incorporado y las placas que lo utilizan:

D13:

  • 101
  • Vencimiento
  • Intel Edison
  • Intel Galileo Gen2
  • Leonardo y micro
  • LilyPad
  • LilyPad USB
  • MEGA2560
  • Mini
  • Nano
  • Pro
  • Pro Mini
  • UNO
  • Yún
  • Cero

D6

  • MKR1000

D1:

  • Genma

Pero si deseas encender un LED externo con este sketch, necesitas construir un circuito, donde se conecta en un extremo la resistencia al pin digital correspondiente a la constante LED_BUILTIN. Además de ello debes conectar la pata larga del LED (pin negativo, llamado cátodo) a la GND (masa del circuito)

El valor de resistencia adecuado es de 220 ohmios, pero también se encenderá con valores de hasta 1K, pero descenderá la luminosidad del LED.

CÓDIGO:

void setup()

{

pinMode(LED_BUILTIN, OUTPUT); // Inicializa el pin 13 como salida

}

void loop()

{

digitalWrite(LED_BUILTIN, HIGH);          // Enciende el led 13

delay(1000);                                                   // Espera un segundo

digitalWrite(LED_BUILTIN, LOW);           // Apaga el led 13

delay(1000);                                                   // Espera un segundo

}

Este ejemplo lo puedes utilizar también para comprobar rápidamente si la placa de Arduino funciona correctamente.

loop() y setup() – Ejemplo con Arduino Nº 01

En este ejemplo te muestro el código minimo necesario, que son las funciones loop() y setup(), para que un programa (Sketch) realizado con el IDE de Arduino se compile correctamente, sin dar errores.

Para ello será necesario incluir dos funciones.

La función setup()

La función setup() se inicia automaticamente cuando se inicia el programa, se usa para inicializar variables, modos de los pines (INPUT o OUTPUT), llamadas a librerias, etc. La función setup() se inicia UNA SOLA VEZ, cuando se enciende la placa por primera vez o se reinicia.

La función loop()

La función loop() como su nombre indica, es un lazo que se ejecuta INDEFINIDAMENTE, permitiendo realizar un proceso de multitud de iteraciones. El código dentro de la función loop() es el programa que efectivamente controla la placa de Arduino.

Para comprobar lo anterior únicamente necesitas la placa de Arduino conectada mediante el USB a tu ordenador y ejecutar el IDE de Arduino.

El código que vas a cargar y ejecutar en tu placa de Arduino, “no hace nada”, pero su estructura es útil para comenzar desde cero cualquier programa que quieras realizar. Si te fijas en este programa he añadido algún comentario, que no será leido por el compilador. Para ello utilizarás // dos barras, las que están encima del 7 en la mayoria de los teclados, si vas a hacer un comentario de una linea, y /* comentario de varias lineas */, asterisco y barra si vas a hacer un comentario que ocupe varias lineas.

El código mínimo para que el compilador no de errores es el siguiente:

void setup()

{

            // esta parte del código solamente se ejecutará una vez

}

void loop()

{

            /* Esta parte del código se

                        ejecutará en infinitas

                                    iteraciones */

}

Empezando con Arduino

Si estas empezando con Arduino, debes saber algunas cosas, antes de empezar a controlar el mundo que te rodea con Arduino, debes instalar el software para programar tu placa de Arduino.

El entorno de programación de Arduino (IDE) te permite escribir tus programas y cargarlos en tu placa micro-programable. En la página del software de Arduino encontrarás dos opciones:

  1. Si tienes una conexión de Internet fiable, debes utilizar el IDE en línea (Editor Web de Arduino) Este te permitirá guardar tus bocetos en la nube, tenerlos disponibles desde cualquier dispositivo y realizar copias de seguridad. Siempre tendrás la versión más actualizada del IDE sin necesidad de instalar actualizaciones o bibliotecas generadas por la comunidad.
  2. Si prefieres trabajar sin conexión, puedes utilizar la última versión del IDE de escritorio.

CÓDIGO ONLINE EN EL EDITOR WEB DE ARDUINO

Para usar el IDE online simplemente sigue las instrucciones que puedes encontrar en esta página, recuerda que si trabajas online, no necesitarás instalar nada en tu ordenador.

INSTALACIÓN DEL IDE DE ARDUINO DE ESCRITORIO

Para conocer como debes instalar la versión de escritorio del entorno de desarrollo de Arduino (IDE) debes seguir las instrucciones que figuran en los siguientes enlaces dependiendo del sistema operativo que tengas.

En la página principal de aprendizaje de Arduino, a la derecha tienes una relación de las diferentes placas de Arduino disponibles y es desde allí donde puedes encontrar alguna peculiaridad de alguna de ellas, pero si vas a empezar a trabajar con el Arduino UNO, el MEGA o alguno de los más habituales puedes empezar a trabajar sin problemas, únicamente teniendo en cuenta el puerto COM al que has conectado la placa, y al tipo de placa que es, que puedes encontrar en el menú de herramientas.

COMIENZA CON ARDUINO

Si estas empezando con Arduino es bueno que leas una introducción sobre lo que es Arduino y por qué te gustaría usarlo, después es interesante que sepas qué es el software de Arduino y ajustarlo al idioma en el que te desenvuelvas mejor, no te olvides que hay mucho trabajo ya hecho y que puedes utilizar las librerías o bibliotecas ya creadas y desarrolladas. Si te animas no puedes dejar de aprender qué son los núcleos y la necesidad o no de añadir o ampliar la placa de Arduino con la que estás trabajando, y si de verdad de verdad, quieres ser un verdadero maestro de Arduino, debes saber solucionar los problemas que se te planteen cuando no salgan bien las cosas a la primera.

Para obtener una visión completa de las Guías que tiene Arduino, es muy conveniente visitar la sección de fundaciones, donde puedes encontrar conocimientos a un nivel mucho más profundo sobre los principios y técnicas que hay detrás de la plataforma Arduino.

Puedes empezar a jugar con Arduino con los proyectos que se encuentran en el libro de proyectos “Arduino Starter Kit projects”, además la lectura del libro “Getting Started with Arduino”, sin duda te ayudará a comprender mejor los conceptos que hay detrás de esta interesante plataforma de aprendizaje y comenzarás a controlar el mundo que te rodea.

YA HE APRENDIDO, Y… ¿AHORA QUÉ?

Si ya has aprendido los primeros conceptos y nociones de Arduino, puedes seguir trabajando con el “Arduino and Genuino Starter Kit”, que te guiará en tus primeros pasos en el mundo de la electrónica y más concretamente en el mundo de los sensores y objetos interactivos.

Si estás buscando inspiración, puedes encontrar una gran cantidad de tutoriales en “Arduino Project Hub