De momento no me atrevo a realizar grandes montajes (estoy aprendiendo el entorno), pero utilizo ejemplos de programación a los que añado mis variaciones, para que den "un pasito más".
Ayer mareé a mis pobres vecinos con la flauta para sacar las notas de "Canción de cuna" (las podría haber buscado en internet, ya lo sé...), y luego estuve toda la tarde programando la secuencia, los tiempos, los silencios, intentando añadir nuevas notas... ¡Trasteando, vaya!, que es como se aprende.
Este vídeo muestra mis primeros pinitos con la herramienta.
A continuación os muestro una variación que le he hecho al #proyecto2 del kit Sparkfun, en el que se controla el parpadeo de un LED mediante el nivel de tensión de entrada medido analógicamente en el punto medio de un potenciómetro.
Un potenciómetro es una resistencia variable que nos ayuda a controlar la intensidad de corriente que pasa por un circuito, al variar el valor analógico de la resistencia cuando giramos su patilla central. El ejemplo más conocido sería el control de volumen giratorio de una cadena de música. Si conectáramos las dos patillas de los extremos, el valor de resistencia sería el máximo. En este caso, lo estamos utilizado como divisor de tensión, para utilizar ese valor como tiempo. ¿Raro, no?
Un LED es un semiconductor que se ilumina cuando lo atraviesa una pequeña corriente. La lucecita roja de la tele sería el ejemplo que todos conocemos.
Pero concretemos...
Esquema eléctrico propuesto por el Arduino Inventor Kit de Sparkfun |
Este sería el esquema, muy sencillo también:
Mi esquema de montaje, elaborado a partir del anterior. |
A nivel de programación, las líneas de código serían las siguientes (pongo comentarios intermedios, para hacerlo más comprensible):
//Lo primero que hay que hacer es definir las variables
int sensorPin = 0;
// Conectamos el pin central del potenciómetro al pin analógico A0
// Los LED están conectados a los pines digitales 11, 12 y 13
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
void setup() // definimos la configuración de los diferentes pines como salida, o entrada, según corresponda
{
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT); // Estas líneas significarían lo mismo que definierlas como "pinMode(13, OUTPUT);"
}
void loop() // Comenzamos una secuencia repetitiva
{
int sensorValue;
//Definimos como entero el valor del sensor, y le asignaremos la lectura analógica del pin A=
sensorValue = analogRead(sensorPin);
digitalWrite(ledPin1, HIGH);
// Encendemos el primer diodo
delay(sensorValue);
// Añadimos un retraso en milisegundos del valor dado por la tensión del potenciómetro
// Repetimos los mismos pasos para los otros dos leds, retrasando el encendido 100ms más
digitalWrite(ledPin2, HIGH);
delay(sensorValue+100);
digitalWrite(ledPin3, HIGH);
delay(sensorValue+200);
// Apagamos los leds en el mismo orden y aplicando los mismos retrasos
digitalWrite(ledPin1, LOW);
delay(sensorValue);
digitalWrite(ledPin2, LOW);
delay(sensorValue+100);
digitalWrite(ledPin3, LOW);
delay(sensorValue+200);
// La repetición (Loop) se realiza continuamente, sin fin.
}
Y el resultado real sería el siguiente:
Como se puede comprobar, los leds se encienden y apagan secuencialmente, y a medida que giramos el cursor del potenciómetro la velocidad de transición entre parpadeos es mayor.
Vemos que de manera muy sencilla, podemos montar y programar circuitos muy vistosos con poco trabajo.
¿Les gustará a los chicos en el aula?
¿Les gustará a los chicos en el aula?