Tabla de Contenidos
Introducción
Hoy les traigo este sencillo proyecto, que simula el encendido de velas o de un fuego, podría servir por ejemplo para decorar la casa en Halloween
Materiales
el material necesario para su realización es mínimo y muy fácil de conseguir:
- Arduino Nano
- 3 Leds
- 3 Resistencias de 220 Ω
- Protoboards pequeñas
- Pila 9v
- Botes vacíos de plástico transparente, yo usé unos de unas galletas.
Diseñé esta cajita usando el programa FreeCad, y después la imprimí en la impresora3D. Como puedes observar es ideal para alojar dentro tu Arduino nano, y la pila de 9V. Al final del documento se adjunta el fichero stl.
Vídeo del proyecto
Esquema de conexión
Sketch 1
En cuanto al sketch, vamos a utilizar la función analogWrite(), para apagar y encender un LED. AnalogWrite utiliza la modulación de ancho de pulso (PWM), encendiendo y apagando un pin digital muy rápidamente con diferente proporción entre encendido y apagado, para crear un efecto de desvanecimiento. También usaremos la función random(), que nos devolverá un número aleatorio.
//Efecto fuego, con tres Leds, un rojo y dos amarillos
//www.tecnosalva.com
int ledPin1 = 10; //led amarillo
int ledPin2 = 9; //led rojo
int ledPin3 = 11; //led amarillo
void setup()
{
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
}
void loop() {
analogWrite(ledPin1, random(125)+135);
analogWrite(ledPin2, random(105)+155);
analogWrite(ledPin3, random(125)+135);
delay(random(100));
}
Galería fotos proyecto
Sketch 2
Este podría ser otro ejemplo para usar.
//Efecto fuego, con cuatro Leds, dos rojos y dos amarillos
//www.tecnosalva.com
int red1 = 6; //Led rojo1 pin 6
int yel1 = 9; //Led amarillo1 en pin 9
int red2 = 10; //Led rojo2 en pin 10
int yel2 = 11; //Led amarillo 2 on pin 11
int val1;
int val2;
int val3;
int val4;
int val5;
int val6;
int val7;
int val8;
void setup() {
pinMode(red1, OUTPUT);
pinMode(yel1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(yel2, OUTPUT);
}
void loop() {
randomSeed(analogRead(0));
val1 = random(100, 225);
analogWrite(red1, val1);
val2 = random(10, 30);
delay(val2);
val3 = random(128, 256);
analogWrite(yel1, val3);
val4 = random(20, 30);
delay(val4);
val5 = random(100, 225);
analogWrite(red2, val5);
val6 = random(10, 30);
delay(val6);
val7 = random(128, 256);
analogWrite(yel2, val7);
val8 = random(20, 30);
delay(val8);
}