Arduino Mood Light: 5 pasos

Arduino Mood Light: 5 pasos

Tabla de contenido:

Anonim

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).