1. Parpadeo de un led
/*
Parpadeo
Enciende un LED por durante segundo y después lo apaga.
*/
int led = 13; // asigna a la variable led el valor 13
// la rutina de setup corre una vez o cuando se presiona reset
void setup() {
pinMode(led, OUTPUT); // inicializa el pin 13 como pin de salida
}
// la rutina loop corre constantemente
void loop() {
digitalWrite(led, HIGH); // enciende el LED (HIGH es el nivel de voltaje)
delay(1000); // espera un segundo
digitalWrite(led, LOW); // apaga el LED poniendo el voltaje a LOW
delay(1000); // espera por un segundo
}
2. Semáforo
/*************/
/* SEMÁFORO */
/*************/
//** Definiciones **//
int rojo=2; //definimos el valor del pin para el led rojo
int amarillo=4; //definimos el valor del pin para el led amarillo
int verde=7; //definimos el valor del pin para el led verde
//** Programa **//
void setup() {
pinMode(verde,OUTPUT); //declaramos el pin verde como salida
pinMode(amarillo,OUTPUT);//declaramos el pin amarillo como salida
pinMode(rojo,OUTPUT); //declaramos el pin rojo como salida
}
void loop() {
digitalWrite(verde,HIGH); //encendemos el led rojo
delay(2000); //esperamos 2 segundos
digitalWrite(verde,LOW); //apagamos el led rojo
digitalWrite(amarillo,HIGH); //encendemos el led amarillo
delay(2000); //esperamos 2 segundos
digitalWrite(amarillo,LOW); //apagamos el led amarillo
digitalWrite(rojo,HIGH); //encendemos el led verde
delay(2000); //esperamos 2 segundos
digitalWrite(rojo,LOW); //apagamos el led verde
}
3. Encendido progresivo de un led
Se trata aumentar y disminuir la luminosidad de un led usando la capacidad de ofrecer una tensión variable que da una salida analógica. Para ello se conecta un led al pin 11 y se provoca que su luminosidad pase de mínima a máxima, para luego ir de máxima a mínima. Los valores de salidas analógicas van del mínimo 0 al máximo 255.
int luminosidad = 0; // variable para asignar la luminosidad al led
int led = 11; // pin del led
void setup()
{
// en el setup no hay que configurar nada
}
void loop()
{
for (luminosidad = 0 ; luminosidad <= 255; luminosidad=luminosidad+3) // fade in (del mínimo a máximo)
{
analogWrite(led, luminosidad); // ilumina el led con el valor asignado a luminosidad (entre 0 y 255)
delay(30); // espera 30 ms para que se vea el efecto
}
for (luminosidad = 255; luminosidad >=0; luminosidad=luminosidad-3) // fade out (del máximo al mínimo)
{
analogWrite(led, luminosidad);
delay(30);
}
}
4. Secuencia de leds
Se trata de encender y apagar 4 leds secuencialmente. Los leds deben estar conectados a los pines 5,6,7 y 8.
Se deben encender y posteriormente apagar los leds desde el pin 5 al 8, con un tiempo de duración de
encendido y apagado de 200 milisegundos.
Solución 1:
int tiempo=200; //declara una variable como entero y de valor 200
void setup() { //comienza la configuracion
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
}
void loop() { //comienza el bucle principal del programa
digitalWrite(5,HIGH);
delay(tiempo);
digitalWrite(5,LOW);
delay(tiempo);
digitalWrite(6,HIGH);
delay(tiempo);
digitalWrite(6,LOW);
delay(tiempo);
digitalWrite(7,HIGH);
delay(tiempo);
digitalWrite(7,LOW);
delay(tiempo);
digitalWrite(8,HIGH);
delay(tiempo);
digitalWrite(8,LOW);
delay(tiempo);
}
Solución 2 (usando FOR):
int tiempo=200;
int n;
void setup() { //comienza la configuracion
for (n=5;n<9;n++) {
pinMode (n, OUTPUT);
}
}
void secuencia() {
for (n=5;n<9;n++) {
digitalWrite (n, HIGH);
delay (tiempo);
digitalWrite (n, LOW);
delay (tiempo);
}
}
void loop() {
secuencia();
}
5. Coche fantástico
Se trata de encender y apagar 7 leds secuencialmente. Los leds deben estar conectados a los pines
5,6,7,8,9,10 y 11.
Se deben encender y apagar los leds desde el pin 5 al 11, con un tiempo de encendido y apagado de 50 ms, más tarde se deben encender y apagar los leds desde el pin 11 al 5, con un tiempo de encendido y apagado de 50 ms. La secuencia se debe repetir indefinidamente.
El efecto del programa es el de las luces delanteras del "Coche fantástico".
int n=0;
int tiempo=50;
void setup() { //comienza la configuración
for (n=5;n<12;n++) {
pinMode(n,OUTPUT);
}
}
void loop() {
for (n=5;n<12;n++) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}
for (n=11;n>=5;n--) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}
}
Solución 2 (Mejorando el efecto visual):
int leds[]={5,6,7,8,9,10,11};
int n=0;
int tiempo=30;
void setup() { //comienza la configuración
for (n=0;n<7;n++) {
pinMode(leds[n],OUTPUT);
}
}
void loop() {
for (n=0;n<7;n++) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n+1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}
for (n=6;n>=0;n--) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n-1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}
}
6. Simulación de la luz de una vela
Se trata de simular el movimiento de la llama de una vela. Hacemos uso de la instrucción para generar un numero aleatorio que lo asignamos a una salida analógica PWM y otro número que lo asociamos a la variable de temporización (tiempo que esperamos para cambiar el valor de la salida).
/* Simula luz de vela*/
int ledPin = 9; // selecciona el puerto PWM
int val = 0; // define y pone a cero la variable "brillo"
int delayval = 0; // define el intervalo de cambio de valor de salida
void setup() {
randomSeed(0); // inicializa el generador de números aleatorios
pinMode(ledPin, OUTPUT); // declara el pin de SALIDA pin 9
}
void loop() {
val = random(100,255); // genera un número aleatorio entre 100 y 255 que asigna a la variable val
analogWrite(ledPin, val); // envía ese valor a la salida pin 9
delayval = random(50,150); // genera un numero aleatorio entre 50 y 150 y lo asigna a la variable de temporización
delay(delayval); // espera un tiempo delayval medido en milisegundos
}