Así que probé programación Attiny45 con Arduino como tuve tanto ya en mi cajón. Cómo hacerlo (o ATtiny85) puede leer artículo original MIT o un instructable randofo.
Es sólo un fade desigual dentro y fuera de guión.
Lo ATtiny tiene tres entradas y otro pin PWM no utilizado y hay un montón de espacio en la placa perforada, así que añadiré algo que en el futuro. Por ejemplo un sensor, una sacudida podría agilizar "beat".
Elegí una batería de litio de 3V con más amp-horas disponibles como la mayoría de ellos tenía el mismo premio. Que pasó a ser CR2430 que es bastante grande de tamaño. ATtiny funciona en voltajes de entre 2.7 y 5.5 así el 3V es perfecto. Interruptor y portapilas son totalmente improvisados.
Soporte de la batería: arreglé conector de tierra de ATtiny y LED de tierra pin para tiras sobre la placa perforada que relativamente se centran. Entonces soldó un alambre (una pierna de la componente de corte) doblado en forma de U a través de orificios en los carriles de tierra. Entonces yo atravesado un pedazo de cartón con los extremos de la te y doblar los extremos hacia abajo - el cartón aísla de tierra de la batería del resto de la placa perforada, los dos alambre perforado extremos hacen contacto. Luego doblar un alambre más fino para caber sobre la batería y soldadas en sus extremos a las esquinas de la placa perforada. La batería me alojé debajo de él bastante bien, pero además aseguró con una goma.
El interruptor es un simple extremo suelto del cable trenzado, despojado, estañado y hacerse más robusta con tubo termo retráctil, que puede estar metido entre la batería y alambre que la sostiene. Por alguna razón no había pequeños conmutadores baratos en tienda, así que ahorré algún dinero y sala con eso.
El código ATtiny:
/* "Alien's heart" for Attiny45 (or 85). Derived largely from "Fade" sketch. by liba_hunt */ int brightness = 0; // variable for current LED brightness const int fadeAmount = 5; // brightness change step size boolean middlebeat = true; //variable to indicate if a quicker fade-in-out should be done next int del = 40; //variable for delay time between change of brightness void setup() { pinMode(0, OUTPUT); //ATtiny45 (or 85) has pins 0 and 1 for PWM (analogWrite) } void loop() { analogWrite(0, brightness); //LED on a current brightness brightness = brightness + fadeAmount; //set next brightness level if (brightness == 255) { fadeAmount = -fadeAmount;//reverse direction of brightness change if (middlebeat == true) {//if quicker fade-off phase starting del = 2; //set delay shorter } else {//if slower fade-off phase starting del = 40; //set delay longer } } if (brightness == 0) { fadeAmount = -fadeAmount;//reverse direction of brightness change if (middlebeat == true) { //if in the middle of quicker fade-on phase middlebeat = false; //set middlebeat to false to indicate it's done } else { //if in the middle of slower fade-on phase middlebeat = true; //set middlebeat to true to indicate the quicker phase has to start next } } delay(del);//delay between change of LED brightness }