Inclinación activa nube luz (9 / 12 paso)

Paso 9: Programación parte 4: ensamblar el programa

Estamos casi allí!

Es más fácil para mí explicar lo que está pasando en el programa comentando porciones más abajo.

Principios del código

#include < Adafruit_NeoPixel.h >

#define 13 PIN //identifies pin 13 conectado a la neopixels

const int wait_T = 40;
const int ACCEL_PIN = A0;
const int PixelCount = 29;     / / Tengo 29 neopixels

const int MAX_AREAD = 370;     / / Esta sección establece el máximo, mínimo, mediana y media ventana para el programa.
const int MIN_AREAD = 280;
const int MID_AREAD = 325;
const int MID_WINDOW = 10;
const int TILT_TIME = 10;  en segundos / / la cantidad de tiempo necesario para quedarse en la ventana para elegir un nuevo patrón de luz

const int Pixel_Start_End = 0;     //Settings para el generador de patrones de luz al azar
const tipo boolean UsingBar = false;
int random_pick = 0;
Boolean pick_new_random = true;
int accel_read = 0;
time_keeper largo sin signo = 0;

Tira de Adafruit_NeoPixel = Adafruit_NeoPixel (PixelCount, PIN, NEO_GRB + NEO_KHZ800);

void setup() {}
Serial.Begin(57600);
Strip.Begin();              / / Tira de arranque
Strip.Show();               / / Inicializar todos los píxeles en 'off'
pinMode (ACCEL_PIN, entrada); / Analógico configurar acelerometro leer pin
randomSeed(analogRead(A3));
}

Aquí es donde se codifica el gráfico de la acción:

void loop() {}

/ / Lee el valor del acelerómetro
accel_read = analogRead(ACCEL_PIN);

/ / La selección de una nueva al azar si es el momento de.
Si (pick_new_random == true) {}
random_pick = random(6);
pick_new_random = false;
}

Cuando el valor del acelerómetro es dentro de la ventana escoge de las siguientes funciones
Si ((accel_read > MID_AREAD - MID_WINDOW) & & (accel_read < MID_AREAD + MID_WINDOW)) {}
Si (random_pick == 0) {}
ThunderAccel();
} else if(random_pick == 1) {}
PatternOne();
} else if(random_pick == 2) {}
PatternTwo();
} else if(random_pick == 3) {}
PatternThree();
} else if(random_pick == 4) {}
PatternFour();
} else if(random_pick == 5) {}
PatternFive();
} else if(random_pick == 6) {}
PatternSix();
}
} else {}
time_keeper = millis();

mientras que ((millis() - time_keeper) < TILT_TIME * 1000) {}
color_tilt();
}

pick_new_random = true;

}


}

de lo contrario el código hará el siguiente patrón de inclinación
{} void setStripColor (int rojo, int verde, int azul)
para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, rojo, verde, azul);
}
Strip.Show();
}

void color_tilt() {}
int accel_value = analogRead(ACCEL_PIN);
accel_value = map(accel_value,MIN_AREAD,MAX_AREAD,0,255);
accel_value = constrain(accel_value,0,255);

para (int i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, 255-accel_value, 0, accel_value);
Strip.Show();
Delay(2);
}
}

las siguientes son todas las funciones de patrón de luz

void PatternOne() {}
CylonEyeUp (de la tira. Color(255,255,255), tira. Color(0,255,255), tira. Color(255,255,255), wait_T, PixelCount, Pixel_Start_End);
Delay(wait_T);
Ejemplo: CylonEyeDown (Center_Dot_Color, Second_Dot_color, Third_Dot_color, wait_T, PixelCount, Pixel_Start_End);
CylonEyeDown (de la tira. Color(255,255,255), tira. Color(0,255,255), tira. Color(255,255,255), wait_T, PixelCount, Pixel_Start_End);
Delay(wait_T);
}

void PatternTwo() {}
para (int i = 0; i < 102; i ++) {}
setStripColor (i, (204 - i * 2), 204);
Delay(20);
}
para (int i = 0; i < 102; i ++) {}
setStripColor (102-i, (i * 2), 204);
Delay(20);
}
}

void PatternThree() {}

para (int i = 0; i < 255; i ++) {}
setStripColor (255, i, 0);
Delay(20);
}
para (int i = 255; i > 0; i--) {}
setStripColor (255, i, 0);
Delay(20);
}
Delay(1000);
}

void PatternFour() {}

para (int i = 0; i < 127; i ++) {}
setStripColor (255-i * 2, 255-i, 255);
Delay(20);
}
para (int i = 0; i < 127; i ++) {}
setStripColor (i * 2, 127 + i, 255);
Delay(20);
}
Delay(2000);

}

void PatternFive() {}
strip.setPixelColor (14, 255,255,255);
Delay(20);
strip.setPixelColor (15, 255,255,255);
Delay(20);
strip.setPixelColor (13, 255,255,255);
Delay(20);
strip.setPixelColor (16, 255,255,255);
Delay(20);
strip.setPixelColor (12, 255,255,255);
Delay(20);
strip.setPixelColor (17, 204,255,255);
Delay(20);
strip.setPixelColor (11, 204,255,255);
Delay(20);
strip.setPixelColor (18, 204,255,255);
Delay(20);
strip.setPixelColor (10, 204,255,255);
Delay(20);
strip.setPixelColor (19, 204,255,255);
Delay(20);
strip.setPixelColor (9, 204,255,255);
Delay(20);
strip.setPixelColor (20, 0,128,255);
Delay(20);
strip.setPixelColor (8, 0,128,255);
Delay(20);
strip.setPixelColor (21, 0,128,255);
Delay(20);
strip.setPixelColor (7, 0,128,255);
Delay(20);
strip.setPixelColor (22, 0,128,255);
Delay(20);
strip.setPixelColor (6, 0,128,255);
Delay(20);
strip.setPixelColor (23, 0,128,255);
Delay(20);
strip.setPixelColor (5, 0,128,255);
Delay(20);
strip.setPixelColor (24, 0,128,255);
Delay(20);
strip.setPixelColor (4, 0,128,255);
Delay(20);
strip.setPixelColor (25, 0,128,255);
Delay(20);
strip.setPixelColor (3, 0,128,255);
Delay(20);
strip.setPixelColor (26, 0,0,255);
Delay(20);
strip.setPixelColor (2, 0,0,255);
Delay(20);
strip.setPixelColor (27, 0,0,255);
Delay(20);
strip.setPixelColor (1, 0,0,255);
Delay(20);
strip.setPixelColor (28, 0,0,255);
Delay(20);
strip.setPixelColor (0, 0,0,255);
Delay(20);
strip.setPixelColor (29, 0,0,255);
Delay(20);
Strip.Show();
}

void PatternSix() {}

para (int i = 0; i < 255; i = i + 1) {}
strip.setPixelColor (0, 0, i, 255-i);
strip.setPixelColor (1, 0, i, 255-i);
strip.setPixelColor (2, 0, i, 255-i);
strip.setPixelColor (3, 0, i, 255-i);
strip.setPixelColor (4, 0, i, 255-i);
strip.setPixelColor (5, 0, i, 255-i);
strip.setPixelColor (6, 0, i, 255-i);
strip.setPixelColor (8, 0, i, 255-i);
strip.setPixelColor (9, 0, i, 255-i);
strip.setPixelColor (10, 0, i, 255-i);
strip.setPixelColor (11, 0, i, 255-i);
strip.setPixelColor (12, 0, i, 255-i);
strip.setPixelColor (13, 0, i, 255-i);
strip.setPixelColor (14, 0, i, 255-i);
strip.setPixelColor (15, 0, i, 255-i);
strip.setPixelColor (16, 0, i, 255-i);
strip.setPixelColor (17, 0, i, 255-i);
strip.setPixelColor (18, 0, i, 255-i);
strip.setPixelColor (19, 0, i, 255-i);
strip.setPixelColor (20, 0, i, 255-i);
strip.setPixelColor (21, 0, i, 255-i);
strip.setPixelColor (22, 0, i, 255-i);
strip.setPixelColor (23, 0, i, 255-i);
strip.setPixelColor (24, 0, i, 255-i);
strip.setPixelColor (25, 0, i, 255-i);
strip.setPixelColor (26, 0, i, 255-i);
strip.setPixelColor (27, 0, i, 255-i);
strip.setPixelColor (28, 0, i, 255-i);
strip.setPixelColor (29, 0, i, 255-i);
Delay(10);
Strip.Show();
}

para (int i = 255; i > 0; i = i-1) {}
strip.setPixelColor (0, 0, i, 255-i);
strip.setPixelColor (1, 0, i, 255-i);
strip.setPixelColor (2, 0, i, 255-i);
strip.setPixelColor (3, 0, i, 255-i);
strip.setPixelColor (4, 0, i, 255-i);
strip.setPixelColor (5, 0, i, 255-i);
strip.setPixelColor (6, 0, i, 255-i);
strip.setPixelColor (8, 0, i, 255-i);
strip.setPixelColor (9, 0, i, 255-i);
strip.setPixelColor (10, 0, i, 255-i);
strip.setPixelColor (11, 0, i, 255-i);
strip.setPixelColor (12, 0, i, 255-i);
strip.setPixelColor (13, 0, i, 255-i);
strip.setPixelColor (14, 0, i, 255-i);
strip.setPixelColor (15, 0, i, 255-i);
strip.setPixelColor (16, 0, i, 255-i);
strip.setPixelColor (17, 0, i, 255-i);
strip.setPixelColor (18, 0, i, 255-i);
strip.setPixelColor (19, 0, i, 255-i);
strip.setPixelColor (20, 0, i, 255-i);
strip.setPixelColor (21, 0, i, 255-i);
strip.setPixelColor (22, 0, i, 255-i);
strip.setPixelColor (23, 0, i, 255-i);
strip.setPixelColor (24, 0, i, 255-i);
strip.setPixelColor (25, 0, i, 255-i);
strip.setPixelColor (26, 0, i, 255-i);
strip.setPixelColor (27, 0, i, 255-i);
strip.setPixelColor (28, 0, i, 255-i);
strip.setPixelColor (29, 0, i, 255-i);
Delay(10);
Strip.Show();
}

}

void ThunderAccel() {}

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,255);
Strip.Show();
}
Delay(200);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
Strip.Show();
}
Delay (100);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,0);
Strip.Show();
}
Delay(200);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
Strip.Show();
}
Delay(50);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,0);
Strip.Show();
}
Delay(40);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
Strip.Show();
}
Delay(20);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,255);
Strip.Show();
}
Delay(200);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
Strip.Show();
}
Delay(1000);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,255);
Strip.Show();
}
Delay(200);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
Strip.Show();
}
Delay (100);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,0);
Strip.Show();
}
Delay(100);

para (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
Strip.Show();
}
Delay(3000);
}

Tomado y adaptado de https://github.com/EternalCore/NeoPixel_Cylon_Scrolling_Eye/blob/master/NeoPixel_Cylon_Eye.ino

void CylonEyeUp (uint32_t Co Ct de uint32_t uint32_t Ctt, uint8_t demora, int TotalPixels, int pStart) {}
para (int i = pStart; i < TotalPixels; i ++) {}
if (!. UsingBar) {strip.setPixelColor (i + 2, Ctt);} //Third punto Color
strip.setPixelColor (i + 1, Ct);   Segundo punto Color
strip.setPixelColor (i, Co);     Centro punto Color
strip.setPixelColor (i-1, Ct);   Segundo punto Color
if (!. UsingBar) {strip.setPixelColor (i-2, Ctt);} //Third punto Color

if (!. UsingBar) {}
strip.setPixelColor (i-3, tira. Color(0,0,0)); Borra los puntos después del color 3
} else {}
strip.setPixelColor (i-2, tira. Color(0,0,0)); Borra los puntos después del 2 º color
}
Strip.Show();
Serial.println(i); Utilizado para pixel cuenta depuración
Delay(Delay);
}
}
void CylonEyeDown (uint32_t Co Ct de uint32_t uint32_t Ctt, uint8_t demora, int TotalPixels, int pEnd) {}
para (int i = TotalPixels-1; i > pEnd; i--) {}
if (!. UsingBar) {strip.setPixelColor (i-2, Ctt);} //Third punto Color
strip.setPixelColor (i-1, Ct);   Segundo punto Color
strip.setPixelColor (i, Co);    Centro punto Color
strip.setPixelColor (i + 1, Ct);  Segundo punto Color
if (!. UsingBar) {strip.setPixelColor (i + 2, Ctt);} //Third punto Color

if (!. UsingBar) {}
strip.setPixelColor (+ 3, de la tira. Color(0,0,0)); Borra los puntos después del color 3
} else {}
strip.setPixelColor (+ 2, de la tira. Color(0,0,0)); Borra los puntos después del 2 º color
}
Strip.Show();
Serial.println(i); Utilizado para pixel cuenta depuración
Delay(Delay);
}
}

Artículos Relacionados

Inclinación activa cubo del LED resplandor

Inclinación activa cubo del LED resplandor

puedo agradezco Instructibles por inspirarme a hacer varios proyectos de LED para mi familia y amigos. Ahora es el momento de publicar mi primer instructible en mi última y favorito hasta ahora del proyecto.Este instructible le mostrará cómo rápida y
Animación de nube luz de noche con ATTiny

Animación de nube luz de noche con ATTiny

Este Instructable te muestra cómo hacer un nifty Arduino (ATTiny) accionado luz animada de la noche. Este diseño utiliza tiras LED baratas de 3 circuitos independientes. El 'sol' LED encendida constantemente, mientras que la 'nube' 2 LEDs desvanecers
Luz nocturna holocrón

Luz nocturna holocrón

Esta luz nocturna aparece, al principio, para ser nada más que un simple cubo. Escrito por un lado está la palabra "Off" y en el otro es, como cabría esperar, es la palabra "On". Girando el cubo boca abajo, puedes activan la luz interi
De inclinación interruptor activado, modelo de papel brillante, luz

De inclinación interruptor activado, modelo de papel brillante, luz

este instructable muestra cómo crear modelos de papel,brillan cuando se les gira.Lo único que necesita es cierta electrónica simple!Para este proyecto utilicé una plantilla de papel de un diamante,Usted puede encontrar aquí: http://www.minieco.co.uk/
Luz programable LED nube fácil

Luz programable LED nube fácil

Leí el artículo "CLOUD lámparas traen la magia de al aire libre adentro" publicado por RACHAEL BERKEY ON 26 de marzo de 2016.Voy a copiar su idea y utilizar la tira de ws2812 led (uno de lo neopixel) y el controlador de blinkytape y terminar mi
Tutorial Sensor de la inclinación

Tutorial Sensor de la inclinación

¿Qué es un sensor de inclinación?Sensores de inclinación le permiten detectar orientación o inclinación. Son pequeños, barato, bajo consumo y fácil de usar. Si se utiliza correctamente, no desgastará. Su simplicidad les hace popular para los juguetes
Cómo hacer una luz barato hasta caña de respetuoso del medio ambiente.

Cómo hacer una luz barato hasta caña de respetuoso del medio ambiente.

Este es mi primer instructivo, así que paciencia.Recientemente, mi amigo me dio una caña para ir con mi traje de baile, sin embargo la caña que me dio fue viejo golpe para arriba y lo más importante, la cabeza o mango si prefieres era completamente i
Energía solar LinkIt (con seguimiento)

Energía solar LinkIt (con seguimiento)

El Mediatek LinkIt uno tiene un montón de características interesantes, junto con el GPS y GPRS, la batería incluida y cargador realmente hizo que mi día, suministrando energía a un proyecto si a menudo una verdadera molestia, por lo que es bueno ten
Terrario de Twitter vigilancia

Terrario de Twitter vigilancia

en este instructable me gustaría mostrarle cómo construir un terrario sistema de monitoreo mediante el uso de twitter para las notificaciones de eventos.Si eres propietario de un reptil, como yo ya debe saber que sus amigos tienen necesidades muy esp
Traje de Dalek humana!

Traje de Dalek humana!

¿Quién acuerda de aquel episodio de Doctor Who, "Evolución del Daleks" cuando en un híbrido humano-dalekDalek Sec? Que hago, porque es estúpido. Dalek Sec fue la criatura menos amenazante que he visto, parecía que Cthulhu tenía un bebé con un cí
Oogie Boogie Costume (Glows)

Oogie Boogie Costume (Glows)

You're jokin'! Usted está jokin'! No puedo creer mah EYEZ!" Hice mi esposo en Oogie Boogie como un disfraz de última hora bola de LACMA Tim Burton/Dead Man, que terminamos perdiendo y lloré. (Estábamos en traje, perdido en el centro de LA que el part
Automático de Arduino DIY crecer caja

Automático de Arduino DIY crecer caja

Siempre he querido hacer un pequeño proyecto Arduino desde cero.Por lo tanto decidí hacer esta caja crece. Este es tal vez más como un '' mira lo que hice '', en vez de un Instructable, pero voy a intentar hacerlo como un Instructable para otros pued
BRICOLAJE destornillador Sonic funcional

BRICOLAJE destornillador Sonic funcional

Último hijo de mi más antigua Halloween que Colin vestido como el Doctor de Doctor Who e improvisó un destornillador Sonic le de trozos de chatarra que robaban para arriba en el garaje. Al ver el destornillador Sonic mi hijo Sam decidido él absolutam
Cómo imprimir B &amp; W fotografías en un cuarto oscuro

Cómo imprimir B &amp; W fotografías en un cuarto oscuro

voy a enseñarte lo básico de la impresión en un cuarto oscuro, discutir los términos básicos y los procesos y explicar el funcionamiento del equipo que va a utilizar.Desarrollo de un cuadro en un cuarto oscuro por primera vez es una experiencia etern