Los sistemas electrónicos digitales pueden recibir señales analógicas y también generarlas. La clave es que el rango de esas señales se ajuste al rango de funcionamiento del microcontrolador en cuestión. En el caso de Arduino, ese rango es de 0 a 5V.
En Arduino son de mentira… utilizan modulación PWM, que consiste en encender y apagar la señal muchas veces en el tiempo para ajustar el voltaje eficaz
int pin = 9; // "~"
int valorsalida = 0;
pinMode(pin, OUTPUT);
analogWrite(pin,valorsalida);
El pin que vayas a utilizar debe tener el símbolo “virgulilla” (~).
Ese “valor” se transmite mediante un integer cuyo valor varía entre 0 y 255.
Recuerda que Arduino trabaja en niveles lógicos TTL (0-5V).
Realizar un programa que haga encender progresivamente un led con cinco intensidades distintas cada segundo: 0%, 25%, 50%, 75% y 100%.
Usando bucles “while” y “for”, haz que la intensidad suba y baje suavemente (en 255 niveles).
La entrada analógica no es “de mentira”. Mide valores analógicos entre 0 y 5 voltios y los mapea mediante un integer cuyo valor varía entre 0 y 1023.
const int sensorPin = A0;
int medida = 0;
void loop()
{
medida = analogRead(sensorPin);
}
Fíjate que las entradas y salidas analógicas trabajan con rangos distintos: entradas de 0 a 1023 y salidas de 0 a 255.
Realizar un programa que lea el valor de tensión en el cursor de un potenciómetro de 10kΩ y lo transfiera al ordenador por serial.
En la transmisión serie se debe de mostrar el porcentaje y los voltios.
Para escalar los datos, puedes hacer una regla de tres o bien usar la función map()
:
MyValue = map(analogRead(MyPin), 0, 1023, 50, 800); // 0 voltios equivale a 50 y 5 voltios equivale a 800
En las LDR, la resistencia disminuye cuando la luz cae sobre ellos y aumenta en la oscuridad.
Tal cual se plantea el montaje tenemos algo muy parecido a un pull down:
Realizar un programa que:
Periféricos:
Programa que incremente el nivel de luz de un LED en tramos de un 10% en cada pulsación. Deberá mostrar por serial el nivel en que se encuentra.
Hacer un programa que cambie periódicamente entre 8 combinaciones de colores sobre un led RGB. Puedes consultarlas en esta página. O bien puedes usar la función random(min, max).
En la figura se conecta una única resistencia en el cátodo. Como sabes, los diferentes colores requieren diferentes resistencias. Te recomiendo poner resistencias adecuadas en el ánodo de cada LED.
Ahora haz que el color se elija con tres potenciómetros que transmitan su posición a tres entradas analógicas.
Debes lograr que se muestre por puerto serie el valor de cada color (R, G, B) seleccionado.
Periféricos:
El LED sirve para dar una indicación visual de cuándo debería oírse el zumbador. Es decir, cuando actives uno, activa también el otro.
Toca todas las notas de más grave a más aguda. Las frecuencias son:
Usando las funciones:
tone(pin, frecuencia)
tone(pin, frecuencia, duracion)
noTone(pin)
Las funciones anteriores emiten señales PWM (~) de 50% de ciclo de trabajo.
En los años 90, los tonos de llamada se podían componer manualmente en el móvil. O bien, si te descargabas de internet la partitura, podías transcribirla. Yo le puse a mi padre la melodía de “El Padrino”.
Haz el siguiente programa y comprende su funionamiento: http://www.iescamp.es/miarduino/2016/02/15/buzzer-y-star-wars/
Realiza un sistema de control de temperatura para una maqueta. Trabajaremos con dos actuadores (calentador, enfriador). Ambos llevan asociada un LED para informar de su encendido (azul enfriar, rojo calentar).
La alarma sonará cuando la diferencia de temperaturas entre consigna y medida se mayor de 15ºC
El potenciómetro tendrá un valor ohmico igual a la resistencia que tiene en serie. Si son 10k, pues 10k. Si pones 1k, pues 1k.
El LM35 mide la temperatura de la maqueta, y con un potenciómetro seleccionamos la temperatura deseada.
Deberás comprender cómo funciona una salida a transistor, y por qué y cuándo se utiliza diodo de libre circulación.
El algoritmo de control deberá hacer funcionar a distintas intensidades los actuadores proporcionalmente a la diferencia de temperatura respecto la real. Para eso necesitas usar salidas PWM.
No siempre conectaremos LEDs, habrá otros actuadores de más potencia. Motores, por ejemplo. Tipos de salidas digitales:
Fuente: “Introducción ao Arduino” - David Touceda Bugallo, 2014