Lámpara de varios modos de funcionamiento de Arduino con interruptor tacto suave (6 / 6 paso)

Paso 6: El bosquejo más reciente.

/*

  • Prueba de tacto y de la matriz Tri-LED (Piraña)
  • (C) Copyright 2009 qs
  • Módulos (seleccionados por progMode)
  • 0 - secuencia
  • 1 - luz blanca. Se atenúa mientras que en 'hold'.
  • 2 - colores de morphing. Luces al azar mezclando lentamente.
  • 3 - luz del fuego. Llamas parpadeantes (difíciles de hacer cuando hay no real amarillo!)
  • 4 - luciérnagas. Emular el ritual del cortejo de la especie.

*

  • 20mA había integrado color LEDs - común ánodo!!!!
  • D02 - rojo (baja para encender!)
  • D03 - verde
  • D04 - azul
  • D05 - LED de la derecha (alto para encender)
  • D06 - centro LED
  • D07 - LED de la izquierda

*/

int matriz [5] = {}
0660,0626,0466,0,0}
; Display arco iris
int matrix02 [5] [2] = {/ / Morphing rutina y firelight
{
511,7}
,{
511,56}
,{
511.504}
,{
511,0}
,{
511.504}
};
unsigned int firefly [4] = {}
0xdd42 0xff00, 0x8a00, 0x2200};
/ * Luciérnagas:

  • MSB - (7:5) intensidad (0-7)
  • (4:2) retraso en unidades de 1/2 seg.
  • (1:0) tipo de insecto (1 = mujer, 2, 3 = varones)

*/

Para el ajuste de secuencias paso a paso
bigDelay largo = 300, bigD;
int fsuitors = 0, i, j, val, LED, c0, c1, r0, g0, b0, r1, g1, b1, blanco = 7;

int progMode = 0; ... El interruptor selector de caso (99 es prueba)
int controlPin = 12, sw02 = 0; Cambiar estado en A02
dttimer02 largo sin signo = 0, timer02 = 0, ffTimer = 0; Contadores de tiempo del perro guardián
umbral de int = 100; triple de milisegundos para un 'toque', de 'hold'

void setup() {}
para (int i = 2; i < = 7; i ++) {}
pinMode(i,OUTPUT);
digitalWrite (i, i < 5);
}
randomSeed(analogRead(0));
pinMode(12,OUTPUT); Nuestro interruptor de mando principal
digitalWrite(12,LOW);
analogReference(INTERNAL); Sensibilidad de Boost (tacto). Aref es offlimits!

para (i = 1; i < 4; i ++) {/ / establecer rutina de luciérnagas
j = random(2,4); Tipo de hombre
j += ((j + i-3) << 2); Vitalidad (falta de) 0-7
Firefly [i] = (j << 8) | (j << 1) |
((i+3) << 13); Energía (brillo)
}
}

void loop() {}
bigD = bigDelay+millis(); Tiempo de espera de Calc

interruptor (progMode) {}
caso 0:
{}
para (LED = 0; LED < = 2; LED++)
writeLED(LED,matrix[LED]);
}
mientras que (bigD > = millis());

Si ((sw02&7) == 0) {/ / Hold es HOLD!
matriz [0] = matriz [0] ++ y 511; matemáticas divertidas

i = (matriz [1] + 8); Aumento de la verde
Si (i > 511) i = (& 7) + 1;
matriz [1] = i;

i = (matriz [2] + 64); Aumentar el azul
Si (i > 511) i = (i & 63) + 1;
matriz [2] = i;
}
rotura;

caso 1:
{
R1 = (blanco << 6) | (blanca << 3) |white;
mientras que (bigD > =millis())
para (LED = 0; LED < = 2; LED++)
writeLED(LED,r1);
Si ((sw02&7)! = 0) {}
blanco--;
Si (blanco < = 0) blanco = 7;
}
rotura;
}

caso 2:
{
para (LED = 0; LED < = 2; LED++) {}
Si ((sw02&7) == 0) {/ / Hold es HOLD!
C0 = matrix02 [LED] [0];
C1 = matrix02 [LED] [1];
Si (c0! = c1) {}
R0 = c0 y 7;
G0 = (c0 >> 3) y 7;
B0 = (c0 >> 6) y 7;
R1 = c1 y 7;
G1 = (c1 >> 3) y 7;
B1 = (c1 >> 6) y 7;
R1 = constrain(r1-r0,-1,1);
G1 = constrain(g1-g0,-1,1);
B1 = constrain(b1-b0,-1,1);
matrix02 [LED] [1] = (b1 << 6) | (g1 << 3) | R1;
}
otra cosa
matrix02 [LED] [0] = random(0,512); Nuevas luces de blanco
}
}
mientras que (bigD > =millis())
para (LED = 0; LED < = 2; LED++)
writeLED(LED,matrix02[LED][1]);
rotura;
}

caso 3: / / Log fuego
{
para (LED = 0; LED < = 2; LED++) {}
Si ((sw02&7) == 0) {/ / Hold es HOLD!
C0 = matrix02 [LED] [0];
C1 = matrix02 [LED] [1];
Si (c0! = c1) {}
R0 = c0 y 7;
G0 = (c0 >> 3) y 7;
B0 = (c0 >> 6) y 7;
R1 = c1 y 7;
G1 = (c1 >> 3) y 7;
B1 = (c1 >> 6) y 7;
R1 = constrain(r1-r0,-1,1);
G1 = constrain(g1-g0,-1,1);
B1 = constrain(b1-b0,-1,1);
matrix02 [LED] [1] = (b1 << 6) | (g1 << 3) | R1;
}
Else {}
Si (LED == 1) {}
R1=Random(4,8);
G1 = r1-2;
B1 = 0;
}
Else {}
R1 = random(2,7);
G1 = r1-2;
B1 = 0;
}
matrix02 [LED] [0] = (b1 << 6) | (g1 << 3) | R1; Nuevo objetivo luces rojos * verdes
}
}
}
bigD millis () = 130;
{}
para (LED = 0; LED < = 2; LED++)
writeLED(LED,matrix02[LED][1]);
}
mientras que (bigD > =millis());
rotura;
}

caso 4: / / luciérnagas
{
Si (ffTimer < millis()) {/ / debe esperar a que el tiempo transcurrido
para (i = 0; i < 4; i ++) {}
ff0 int = luciérnaga [i];
ff1 int = ff0 >> 8;
FF0 = ff0 y 127;
int ff = ff0 y 7;
Si (ff > 0) {/ / Flash en
j = (ff1 >> 2) y 070; Verde de precarga
Si ((ff1&3)! = 1) {//A masculino
writeLED(i-1,j);
writeLED(i-1,j);
Firefly [i]--;
fsuitors ++;
}
Else / / una hembra!
Si (fsuitors == 0) {}
j += 3;
writeLED(0,j);
writeLED(1,j);
writeLED(2,j);
writeLED(0,j);
writeLED(1,j);
writeLED(2,j); Las hembras muestran un pulso más largo, amarillento
Firefly [i]--;
i = 99; Salida temprano
}
}
Else {/ / No flash
Si (i == 1) fsuitors = 0;
j = (ff0 >> 3) y 15;
Si (j == 0) //Wait caducado
Firefly [i] = (firefly [i] & 0xff00) | 0 x 40 | ((FF1&31) << 1);
otra cosa
Firefly [i]-= 8;
}
}
ffTimer = millis () + 450;
}
rotura;
}

caso 99: / / modo de prueba...
{
i = ((sw02>1) & 1) << 2 | Verifique que el grifo
((SW02>2) & 1) << 6;
writeLED(2,i); Tap = rojo + hold = azul
rotura;
}

por defecto:
progMode = 0;
rotura;
}

/*

  • Verifique que la tecla pulsada

*/
Si (readTouch(2)) {/ / vemos algo en el pin 2.
Si ((sw02&1) == 0) {/ / primera vez ' redondo
digitalWrite(13,HIGH); para que vean algo.
SW02 = 1; El toque de la bandera
timer02 = millis(); Primer toque de reloj
}
Else {/ / 1-bit ya establecido: hemos estado aquí antes.
t largo sin signo = millis ()-timer02; pero ¿cuánto tiempo hace?
Si ((sw02&2) == 2) {/ / buscar en 'hold' solamente si 'Pulse' se establece
Si (t > 750) {}
SW02 = sw02 | 4;
Si (t > 8000) progMode = 99;
}
}
else if (t > = 200) sw02 = sw02 | 2; ' Presione ', más diferenciación
}
}
else if (sw02 & & 1) {/ / procesos clave de
Si ((millis()-timer02)>100) / permiten algunos ' give'before que se cierra
{
digitalWrite(13,LOW); Lo
Si ((sw02&6) == 2) {//Process un 'golpe'
t largo sin signo = millis ()-dttimer02; //
dttimer02 = millis(); Permite mantener 'tapping'
Si (t < 600) {/ / 2 grifos dentro del tiempo límite (600ms)
SW02 = 0 x 10; Abrir grifo de doble '
progMode ++; Próximo programa
}
}
Else {}
SW02 = sw02 & 0xff00;
timer02 = 0;
}
}
}
}

# definir baja 180 / baja es 180mV
# define highThreshold 450 / / 450mV [600] - resistencia de la piel es 8Meg

Boolean readTouch (int pin) {}
int i=analogRead(pin);
i=analogRead(PIN); Ignorar la 1ra lectura
Si (i < baja) i=analogRead(pin); Rechazo de ruido
Si (i < baja) {}
digitalWrite(controlPin,HIGH);
Si (progMode == 99) writeLED(0,02); Prueba: octal rojo
i=analogRead(PIN);
digitalWrite(controlPin,LOW);
Si (i > highThreshold) {}
Si (progMode == 99) writeLED(0,020); Prueba: octal amarillo
volver (analogRead(pin) < baja);
verdaderas;
}
más return false;
} / / Prueba superada - tecla
más return false;
}

#define waitFactor 6 / / factor de brillo
void writeLED (int LED, int valor) {/ / LED == 0(D7), 1(D6), 2(D5)
valor es 3bits para r [lsb], g, b
digitalWrite(7-LED,HIGH); Llevar ánodo de alta
int r = valor & 7;
int g = (valor >> 3) y 7;
int b = (valor >> 6) y 7;

Si (r > 0) {}
digitalWrite(2,LOW);
delayMicroseconds (waitFactor << r);
}
digitalWrite(2,HIGH);
delayMicroseconds (waitFactor < <(7-r));

Si (g > 0) {}
digitalWrite(3,LOW);
delayMicroseconds (waitFactor << g);
}
digitalWrite(3,HIGH);
delayMicroseconds (waitFactor < <(7-g));

Si (b > 0) {}
digitalWrite(4,LOW);
delayMicroseconds (waitFactor << b);
}
digitalWrite(4,HIGH);
delayMicroseconds (waitFactor < <(7-b));

digitalWrite(7-LED,LOW);
}

Artículos Relacionados

Varios modos de funcionamiento clave correa

Varios modos de funcionamiento clave correa

Cada día es un tema ampliamente debatido - qué y cómo debe llevar lo esencial. Independientemente de cómo mi lleva cambios de escenario, la cosa número una no deje nunca sin mis llaves--es por lo menos con ellos, yo puedo todavía volver a la casa o e
Combinar 1 o varios Arduinos con un RaspberryPi

Combinar 1 o varios Arduinos con un RaspberryPi

Este instructable es una demostración de la función de Control remoto de Drogon (RDC) incluida con wiringPi.Las bibliotecas de wiringPi, escritas por Gordon Henderson, añaden las funciones que le permiten al programa de la GPIO pins en RaspberryPi en
Hack-uno-lámpara o cómo controlar Arduino con tu smartphone

Hack-uno-lámpara o cómo controlar Arduino con tu smartphone

Tengo una lámpara de ikea en mi condominio, funciona bien, se gira, da vuelta apagado... que todo lo que hace. ¿Es aburrido kindy, verdad? Estaba pensando, ¿qué pasa si quiero hackear? Luego LEDs RGB vienen a mi cabeza y las ideas empezados a fluir.E
Tarro de masón DIY Lámpara con interruptor

Tarro de masón DIY Lámpara con interruptor

MATERIALES y componentes:-lampcord, aproximadamente 6-9 pies- interruptor de palanca (mina pasa a ser un pulgar conmutador de suelo también existen conmutadores)-zócalo de lámpara (el mio es estándar blanco porcelana. porcelana es mejor con disipació
Seleccionar una apertura en modo de prioridad de abertura con una réflex digital o apuntar y disparar con modos Manual

Seleccionar una apertura en modo de prioridad de abertura con una réflex digital o apuntar y disparar con modos Manual

muchas personas tienen una cámara o quiere uno, pero no tienen idea cómo trabajarlo. Tan pronto como empiezan a palabras de audiencia como exposición equivalente o ISO Haz apagados. ¿Parece tan complicado derecho? Me deja a punto la cosa y sale la im
Homenaje retro - lámpara de cintas de CaSsette con interruptor de palanca de mando

Homenaje retro - lámpara de cintas de CaSsette con interruptor de palanca de mando

[[vídeo (http://http :// www.youtube.com/watch?v=bGrcujH5tx0, {ancho: 600, altura: 500})]] Reciclaje siempre todo lo que pueda.Esta lámpara está hecha de cintas de Cassette, y adapté un Joystick viejo como un interruptor.Un homenaje a las viejas cint
Desactivar el modo de seguridad en Youtube con 2 métodos

Desactivar el modo de seguridad en Youtube con 2 métodos

Modo restringido es un opt-in ajuste disponible en el ordenador y el sitio móvil que ayuda a descartar contenido potencialmente ofensivo que puede prefiere no ver.Paso 1: Desactivar el modo seguro de Youtube con unos sencillos pasosAprende a desactiv
ArduDroid: Un Simple controlador de Android basado en el modo Bluetooth 2 para Arduino RGB led tira

ArduDroid: Un Simple controlador de Android basado en el modo Bluetooth 2 para Arduino RGB led tira

INTRODUCCIÓNCONSEGUIR en el app de google PLAY "ardudroid"ARDUDROID (antes Andruino) es una aplicación Android sencilla para ayudarle a controlar los pines de tu Arduino Uno (o clon) de tu teléfono Android sin cables. Es una aplicación Android y
Un funcionamiento en 3D impreso interruptor eléctrico

Un funcionamiento en 3D impreso interruptor eléctrico

Este es un interruptor eléctrico momentáneo para pequeños, de baja tensión, proyectos de bajo del amperio. Aún debe ser completamente probado, pero he hecho ya con éxito proyectos impresos que incorporan materiales no plástico incrustados dentro de o
Lámpara mod vatio bajo PL

Lámpara mod vatio bajo PL

en este instructable (mi primera yay) vamos mod 2 x 36 w luz fluorescente de 9 wLa lámpara que vamos a utilizar es de 9 w PL. Es CFL incompleto y es más pequeño y más en la fiabilidad y vida útil normal CFLPuede convertir casi cualquier luz en lámpar
Colgante cassette retro lámpara led

Colgante cassette retro lámpara led

hay instructables sobre lámparas de cassette. Todos los que he visto son mejores lámparas de mesa.Que quería hacer un colgante de la lámpara de la azotea.También quería usar lámpara led multicolor, para que se vea aún más retro: los años 70 aquí veng
Ventana falsa luz del humor

Ventana falsa luz del humor

Para todos los que viven actualmente en el sótano de sus padres o volver a vivir en el sótano de sus padres, vestir a su morada sin ventanas con esta luz limpia ventana imitación del humor. Por cierto, su habitación ha ya sido alquilado hace mucho ti
WeggUp - un dormir del ciclo y la luz despertador

WeggUp - un dormir del ciclo y la luz despertador

A menudo tengo el problema, que tengo problemas para levantarme en la mañana, mientras que al mismo tiempo, tengo problemas para dormir en la noche.He comprobado varias posibilidades para hacer tanto más fácil.Levantarse en la mañanaAlarma de salida
Linterna resistente con acento de madera

Linterna resistente con acento de madera

Este proyecto es una continuación de mi proyecto anterior de la linterna de madera. Puedes ver el enlace a este instructable proyecto aquí:Aunque la linterna de madera anterior era un producto hermoso y tenía muchas grandes características, tenía alg