Tecnosalva

Adornamos la casa para Halloween. Efecto llama en Arduino

Vota!

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:

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

https://www.tecnosalva.com/wp-content/uploads/2020/05/halloween-arduino.m4v

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

Archivos adjuntos

Salir de la versión móvil