Skip to main content

map() – Adaptar señales – Ejemplo con Arduino Nº 13

Con la función map(), podemos adaptar un valor de un rango determinado a otro con un rango diferente, es decir, podemos “escalar” una señal a nuestra conveniencia. En el ejemplo siguiente, vas a adaptar una señal de entrada analógica, que va de 0 a 1023, a una señal también analógica, pero esta vez con un margen de valores que va de 0 a 255. osea que cuando la señal de entrada vale cero la señal de salida también valdrá cero, pero cuando la señal de entrada sea 1023 la señal de salida tomará un valor de 255, y así proporcionalmente para todos los valores intermedios.

Además de todo lo anterior, colocarás un LED en la salida analógica del pin número 9, y utilizarás el monitor serie para ver los valores, tanto el valor de entrada (0-1023), como el valor de salida(0-255).

HARDWARE NECESARIO:

Para realizar este circuito necesitarás:

  • Tarjeta Arduino o Genuino
  • Potenciómetro
  • Led rojo
  • Resistencia de 220 ohmios
  • Protoboard
  • Cables de conexión

CIRCUITO:

Para montar este ejemplo utilizarás cualquiera de los circuitos que ya has utilizado antes, para trabajar con entradas analógicas

CÓDIGO:

En este programa la placa Arduino está constantemente leyendo el valor de la entrada analógica, y mediante la función map(valor, MinimoValorEntrada, MaximoValorEntrada, MinimoValorSalida, MaximoValorSalida), escalaremos el valor de la variable y lo mostraremos en la salida 9.

El programa definitivo queda así:

const int PinEntradaAnalogico=A0;

const int PinSalidaAnalogico=9;

int ValorLeido=0;

int ValorSalida=0;

void setup()

{

Serial.begin(9600);

}

void loop()

{

ValorLeido=analogRead(PinEntradaAnalogico);

ValorSalida=map(ValorLeido,0,1023,0,255);

analogWrite(PinSalidaAnalogico,ValorSalida);

Serial.print(“sensor = “);

Serial.print(ValorLeido);

Serial.print(“\t output = “);

Serial.println(ValorSalida);

delay(2);

}

 

Contar el número de pulsaciones – Ejemplo con Arduino Nº 12

Para hacer un contador con Arduino para contar el número de pulsaciones, debemos contar las veces que se acciona un pulsador, recuerda que cuando decimos pulsador, puede ser un final de carrera o cualquier otro detector de dos estados, en definitiva, contaremos las veces que cambia de estado el pulsador, esto se denomina detección de cambio de estado o detector de flanco.

HARDWARE NECESARIO:

Para realizar este circuito necesitarás:

  • Tarjeta Arduino o Genuino
  • Pulsador
  • Resistencia de 10K
  • Protoboard
  • Cables de conexión

CIRCUITO:

Para montar este ejemplo utilizarás cualquiera de los circuitos que ya has utilizado antes, para trabajar con entradas digitales.

Para ello conectarás uno de los extremos de la resistencia a masa y el otro extremo a una de las patillas del pulsador, la otra patilla del pulsador la conectarás a +Vcc, y por último el nudo que hay entre los dos componentes lo conectarás a la entrada digital número 2.

CÓDIGO:

En este programa la placa Arduino está constantemente leyendo el estado del pulsador, y si este ha cambiado respecto al estado anterior, y el estado es alto, incrementa en uno el contador. Además de ello si el número contado es múltiplo de 3 enciende un led, de lo contrario lo apaga.

El programa definitivo queda así:

const int Pulsador=2;

const int Led=13;

int ContadorDePulsaciones=0;

int EstadoDelPulsador=0;

int AnteriorEstadoDelPulsador=0;

void setup()

{

                pinMode(Pulsador,INPUT);

                pinMode(Led,OUTPUT);

                Serial.begin(9600);

}

void loop()

{

EstadoDelPulsador=digitalRead(Pulsador);

If(EstadoDelPulsador ¡=AnteriorEstadoDelPulsador)

{

                If(EstadoDelPulsador==HIGH)

{

ContadorDePulsaciones++;

Serial.println(“Pulsador pulsado”);

Serial.print(“El número de veces que has accionado el pulsador es: “

Serial.println(ContadorDePulsaciones);

}

else

{

                Serial.println(“Pulsador sin pulsar”);

}

AnteriorEstadoDelPulsador=EstadoDelPulsador;

If(ContadorDePulsaciones % 3 == 0)

{

                digitalWrite(Led, HIGH);

}

else

{

                digitalWrite(Led,LOW);

}

}

}

 

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);

}

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

conexiones lampara

Lámpara con efecto fuego – Proyecto con arduino Nº 09

Presentación del proyecto

En este proyecto con arduino, vas a aprender a simular una lámpara con “efecto fuego”, este efecto te puede ser util en maquetas o en situaciones donde desees simular una hoguera.

Para conseguir este efecto utilizaremos la función random(), que nos proporciona un valor pseudo-aleatorio, además de ello seguirás aprendiendo a utilizar las salidas analógicas de tu placa arduino.

Componentes necesarios

  • 1 Placa protoboard
  • 1 Placa Arduino Uno
  • 1 Led Rojo
  • 2 Leds Amarillos
  • 3 resistencia de 220 Ohmios
  • Cables de conexiónes.

Esquema de conexiones


Esquema eléctrico


Programa

// Proyecto 08 – Lampara con efecto fuego – aprobarfacil.com

int ledPin1 = 9;

int ledPin2 = 10;

int ledPin3 = 11;

void setup()

{

pinMode(ledPin1, OUTPUT);

pinMode(ledPin2, OUTPUT);

pinMode(ledPin3, OUTPUT);

}

void loop()

{

analogWrite(ledPin1, random(200) + 55);

analogWrite(ledPin2, random(200) + 55);

analogWrite(ledPin3, random(200) + 55);

delay(random(100));

}

Notas

  • Utiliza cable negro para todas las conexiones a masa (GND).
  • Utiliza cable rojo para todas las conexiones a VCC (5V).
  • No importa los colores que utilices para las demás conexiones.
  • Ten cuidado al conectar los componentes en el protoboard pues puedes dañarlos.
  • Comprueba que conectas el led con la polaridad correcta. (Cátodo a masa).
  • Cuando todo esté correctamente conectado puedes conectar el cable USB.

Observaciones

  • Si usas un Led azul o dos, podrás simular las luces de un arco de soldadura.
  • Si usas adecuadamente Leds rojos, con Leds azules podrás recrear las luces de un vehículo de emergencias.

Enlace del proyecto en circuits.io

Proyecto con Arduino Nº 08 -Lampara con efecto fuego

conexiones

Proyecto con Arduino Nº 08 – Mood Lamp

Presentación del proyecto

En el proyecto con arduino anterior viste que podias ajustar el brillo de un Led, utilizando las capacidades del PWM, el falso analógico que hemos llamado. Ahora seguiras aprovechando las capacidades que te ofrece este pulso de ancho variable, para mezclar los tres colores básicos, rojo, verde y azul, para conseguir el color que desees.

A partir de esto crearas una “Lampara de ánimo” similar a las que puedes encontrar en algunas tiendas.

Componentes necesarios

  • 1 Placa protoboard
  • 1 Placa Arduino Uno
  • 1 Led Rojo
  • 1 Led Verde
  • 1 Led Azul
  • 3 resistencias de 220 Ohmios
  • Cables de conexiónes.

Esquema de conexiones

conexiones
conexiones


Esquema eléctrico

esquema electrico
esquema electrico

 

 

 

Programa

// Proyecto Nº 08 – Mood Lamp – aprobarfacil.com

float RGB1[3];

float RGB2[3];

float INC[3];

int red, green, blue;

int RedPin = 11;

int GreenPin = 10;

int BluePin = 9;

void setup()

{

Serial.begin(9600);

randomSeed(analogRead(0));

RGB1[0] = 0;

RGB1[1] = 0;

RGB1[2] = 0;

RGB2[0] = random(256);

RGB2[1] = random(256);

RGB2[2] = random(256);

}

void loop()

{

randomSeed(analogRead(0));

for (int x = 0; x < 3; x++)

{

    INC[x] = (RGB1[x] – RGB2[x]) / 256;

  }

  for (int x = 0; x < 256; x++)

{

    red = int(RGB1[0]);

    green = int(RGB1[1]);

    blue = int(RGB1[2]);

    analogWrite (RedPin, red);

    analogWrite (GreenPin, green);

    analogWrite (BluePin, blue);

    delay(10);

    Serial.print(“red =”);

    Serial.print(red);

    Serial.print(”  green =”);

    Serial.print(green);

    Serial.print(”  blue =”);

    Serial.println(blue);

    RGB1[0] -= INC[0];

    RGB1[1] -= INC[1];

    RGB1[2] -= INC[2];

  }

  for (int x = 0; x < 3; x++)

{

    RGB2[x] = random(556) – 300;

    RGB2[x] = constrain(RGB2[x], 0, 255);

    delay(100);

  }

}

 

Notas

  • Utiliza cable negro para todas las conexiones a masa (GND).
  • Utiliza cable rojo para todas las conexiones a VCC (5V).
  • No importa los colores que utilices para las demás conexiones.
  • Ten cuidado al conectar los componentes en el protoboard pues puedes dañarlos.
  • Comprueba que conectas el led con la polaridad correcta. (Cátodo a masa).
  • Cuando todo esté correctamente conectado puedes conectar el cable USB.

 

 

Observaciones

  • Si el programa funciona correctamente el brillo de los Leds corresponderá a una función sinusoidal.

Enlace del proyecto en circuits.io

 

Proyecto con Arduino Nº 08 -Mood Lamp

conexiones

Proyecto con Arduino Nº 07 – Lampara pulsante

Presentación del proyecto

En este proyecto con arduino, vas a aprender a utilizar las salidas analógicas que nos proporciona la placa arduino, para ello vamos a realizar un proyecto donde controlaremos el brillo de un Led, mediante una salida analógica. Recuerda que las salidas analógicas de ardunino, son salidas que utilizan el ancho de pulso para proporcionarte un “falso” valor analógico.

Componentes necesarios

  • 1 Placa protoboard
  • 1 Placa Arduino Uno
  • 1 Led
  • 1 resistencia de 220 Ohmios
  • Cables de conexiónes.

Esquema de conexiones


Esquema eléctrico


Programa

// Proyecto 07 – Lampara pulsante – aprobarfacil.com

int ledPin = 11;

float sinVal;

int ledVal;

void setup()

{

pinMode(ledPin, OUTPUT);

}

void loop()

{

Serial.begin(9600);

for (int x = 0; x < 180; x++)

{

sinVal = (sin(x * (3.1412 / 180))); // Convierte los grados en radianes

ledVal = int(sinVal * 255); // Obtengo el valor del seno

Serial.println(ledVal);

analogWrite(ledPin, ledVal);

delay(25);

}

}

Notas

  • Utiliza cable negro para todas las conexiones a masa (GND).
  • Utiliza cable rojo para todas las conexiones a VCC (5V).
  • No importa los colores que utilices para las demás conexiones.
  • Ten cuidado al conectar los componentes en el protoboard pues puedes dañarlos.
  • Comprueba que conectas el led con la polaridad correcta. (Cátodo a masa).
  • Cuando todo esté correctamente conectado puedes conectar el cable USB.

Observaciones

  • Si el programa funciona correctamente el brillo del Led corresponderá a una función sinusoidal.

Enlace del proyecto en circuits.io

Proyecto con Arduino Nº 07 -Lampara pulsante