![Arduino Mood Light: 5 pasos Arduino Mood Light: 5 pasos](https://img.gwsigeps.com/img/img/blank.jpg)
Tabla de contenido:
- Paso 2: Lo que necesitarás
- Paso 3: Conectando todo
- Paso 4: El Código
- Paso 5: Una pequeña explicación del código
Las ondas sinusoidales son ondas continuas que se pueden encontrar en la naturaleza como ondas de sonido, ondas de radio, ondas de luz y muchas otras formas. Se pueden describir por su amplitud (cuán grandes son) y su frecuencia (la velocidad a la que se repite la onda).
Ahora para un poco de matemáticas
La onda sinusoidal puede ser descrita por la fórmula Un pecado (2 * PI * F * t)
Dónde UNA es la amplitud
La amplitud es el valor máximo que la onda se desvía del eje central (generalmente cero).
F es la frecuencia o la cantidad de veces que la onda realiza un ciclo en 1 segundo y se mide en (Hertz: Hz). La onda que se muestra en la imagen es de 1Hz de frecuencia.
t es el tiempo en segundos (s) y es la cantidad variable que permite que la fórmula describa una onda en lugar de simplemente dar una respuesta fija.
El período como se muestra en el diagrama (a veces conocido como la longitud de onda) se puede describir como:
p (periodo) = 1 / F (frecuencia).
2 * PI es la relación del radio de un círculo (análogo a la amplitud), a la circunferencia de un círculo (análogo al período de la onda).
Paso 2: Lo que necesitarás
Una computadora cargada con el ide arduino
Un arduino
LED RGB
Tablero sin soldadura
Resistencias de 330 ohm x 3 o 6 si usa dos LEDs
cables de conexión
Paso 3: Conectando todo
Conecte como se muestra. Tenga en cuenta que: usé LED de cátodo comunes; si ha usado ánodo común, es posible que deba tener esto en cuenta al realizar el cableado.
Los LED de cátodo comunes están conectados de la siguiente manera.
Desde el lado plano
Verde
Cátodo (pin más largo)
Azul
rojo
Para el Arduino, he usado los pines 9, 10 y 11, estos son pines PWM que son necesarios para que el programa funcione.
Paso 4: El Código
/*
Basado en Adafruit Arduino - Lección 3. LED RGB
learn.adafruit.com/adafruit-arduino-lesson-3-rgb-leds/arduino-sketch
Programa para variar colores en LEDs RGB usando ondas sinusoidales
Por Ray Houghton
Por favor, siéntase libre de usar este software o muck con
como le plazca
*/
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
flotar t;
/ * Pines de salida para LED (estas son todas las salidas PWM * /
// descomentar esta línea si usa un LED de ánodo común
// # define COMMON_ANODE
configuración del vacío ()
{
pinMode (redPin, SALIDA);
pinMode (greenPin, SALIDA);
pinMode (bluePin, SALIDA);
// establecer pines para salida
}
bucle de vacío ()
{
para (t = 0; t <1000; t = t + 0.001)
// establece el elemento de tiempo instantáneo de las funciones sinusoidales.
{
/ * Las funciones sinusoidales para variar las salidas PWM son de la forma
offset + amplitude * sin (2 * pi * F * t)
Donde el desplazamiento asegura que la onda sinusoidal no sea menor que cero y
donde F es la frecuencia deseada
NOTA: El verde rojo y el azul son diferentes brillos con LED RGB, de modo que el offset y la amplitud se ajustan para compensar.
*/
int redsat = 126 + 126 * sen (2 * 3.141592654 * 0.03 * t);
int greensat = 64 + 64 * sin (2 * 3.141592654 * 0.027 * t);
int bluesat = 32 + 32 * sin (2 * 3.141592654 * 0.025 * t);
// llamar a la función setColor
setColor (redsat, greensat, bluesat);
retraso (1);
}
}
void setColor (int rojo, int verde, int azul)
{
#ifdef COMMON_ANODE
rojo = 255 - rojo;
verde = 255 - verde;
azul = 255 - azul;
#terminara si
analogWrite (redPin, red);
analogWrite (greenPin, green);
analogWrite (bluePin, blue);
}
Paso 5: Una pequeña explicación del código
El código describe las ondas sinusoidales en el diagrama anterior.
Para dar una variación entre la salida cero y la salida máxima, las ondas sinusoidales deben variar entre 0 y 255. Una función sinusoidal normal de la forma:
Un pecado (2 * PI * F * t)
Dará una ola que varía entre - 128 y +128. Para hacer la onda entre 0 y 255 necesitamos agregar un desplazamiento. Esto da la forma.
MAX / 2 + A sin (2 * PI * F * t)
Dónde UNA es el máximo (MAX) Amplitud disponible (256) dividida por 2.
Como los LED RGB dan diferentes intensidades para rojo, verde y azul, he reducido la amplitud y el desplazamiento.
Las frecuencias utilizadas dan un periodo de alrededor de 30 segundos.
redsat = 126 + 126 * sin (2 * 3.141592654 * 0.03 * t);
greensat = 64 + 64 * sin (2 * 3.141592654 * 0.027 * t);
bluesat = 32 + 32 * sin (2 * 3.141592654 * 0.025 * t);
Las tres ondas sinusoidales descritas en el código tienen frecuencias ligeramente diferentes, esto significa que la mezcla de colores cambiará de una manera que no se repetirá hasta que la variable (t) caduque (1000 en pasos de 0.001).