Paso 21: La rata codificada
En Resumen, aquí es lo que quería la rata para hacer, effect-wise de luz:
-Los ojos debían ser azul puntos, es decir, solo los LEDs azules. Debe cambiar en intensidad con el tiempo y no parpadeo, debe "blink" (Apagar) cada ahora y entonces. Parpadea dos veces al azar, sería bueno y tan se guiño, parpadeo, es decir sólo un ojo.
-El hourclass se debe brillante de alguna manera, si posible una uneartly luz incrustada en la arena.
Empecé con dos LEDs de pines PWM y programar algo para el cambio sutil de brillo. Entonces agregué intermitente usando un elemento al azar, y después de superar un problema técnico que causó los ojos a parpadear repetidamente después del primer parpadeo, decidí que no realmente quería la rata a wink después de todo.
Con el tiempo, mejorado el código para hacer el parpadeo suave y aleatorizar el cambio sutil.
Para la brillante decidí usar un registro de desplazamiento, por lo menos al principio. Pensé que esto me permita poner un número de LEDs en el reloj de arena con menos cables. Era una buena manera para practicar, pero había desechado la idea en el protoboard. Pueden guardar los cables, pero estaría utilizando un microcontrolador con cerca de 10 pines no utilizados.
Así que decidí omitir el registro de desplazamiento y utilizar los LEDs directamente, así que me permita tomar ventaja de PWM para efectos más, demasiado.
El principal problema fue decidir qué color usar. En las películas y en los libros en general, hay un problema. Sin duda, hay un montón de imágenes y descripciones de la muerte (es uno de los mejores personajes, créanme) y relojes de arena aparecen, también, pero lo es... Dominio de la muerte es
.
Por lo había no era factible, ya que todavía tengo un stock bastante grande de LEDs de colores diferentes - los más baratos, pero ilumina y que es lo que cuenta. Así que tenía verde, rojo, azul, amarillo, naranja... Teniendo en cuenta que los ojos son de color azules pensamiento verde sería una buena opción, pero entonces una voz pequeña dentro de mi cabeza - que me regaños para el uso de un cambio de registro en primer lugar cuando podría tener PWM en cambio - dijo "¿por qué eligió?".
Así que decidí ir para el verde como luces parpadeantes, meras con. / desc. y añadir otros colores que se descoloraría, principalmente el rojo y el amarillo. Los LEDs de 2-3 haría algunos al azar regulación hacia arriba y abajo mientras que los verdes 5-7 parpadear al azar.
Armar algo como él y después algunos jugando cerca, decidí que mi decisión había sido viciado. Así que me cambié a verde y naranja, verde más que naranja, con pérdida de color y parpadea LED en ambos colores.
Y llegó el punto que debo disculpen, haciéndole leer todo eso solo te digo al final, ser satisfecho con mis opciones y lo que parecían, desechado completamente la luz para el reloj de arena.
Así que, aquí está el código que usé para la rata. Todo lo que hace lo hacen parpadear.
-----
auge1 int = 6; el pasador que los ojos están conectados a
int auge2 = 5;
int auge_hell = 100; Cómo brillante es el LED
int auge_fade = 4; Cuántos puntos a desvanecerse el LED por
int auge_hellmax = 250;
int auge_hellmin = 80;
int blinkytime = 0;
int auge_hellalt = 0;
void setup() {}
pinMode (auge1, salida);
pinMode (auge2, salida);
}
void loop() {}
analogWrite (auge1, auge_hell);
analogWrite (auge2, auge_hell);
Si (blinkytime == 0 & & random(175) == 1) {}
blinkytime = random (4, 14);
auge_hellalt = auge_hell;
auge_hell = 0;
}
interruptor (blinkytime) {}
caso 0:
auge_hell = auge_hell auge_fade;
Si (auge_hell < = auge_hellmin) {}
auge_fade = - auge_fade;
auge_hellmin = random(50,100);
}
else if (auge_hell > = auge_hellmax) {}
auge_fade = - auge_fade;
auge_hellmax = random(120,250);
}
rotura;
caso 1:
auge_hell = auge_hellalt;
blinkytime = 0;
rotura;
por defecto:
blinkytime--;
rotura;
}
Delay(60);
}