Bata de laboratorio LED interactivo (8 / 11 paso)

Paso 8: Código de Arduino

Su capa puede iluminar en respuesta a cualquier número de sensores que pueden conectarse a un Arduino. En el código de ejemplo encontrará un acelerómetro (de modo parpadeará como caminar y bailar) un micrófono (de modo parpadeará como hablas) y un sensor de distancia (al resplandor más brillante como enfoque de las cosas). Pero con todos los diferentes sensores que puede conectarse a un Arduino, realmente no hay límite a lo que usted podría hacer su capa reaccionar a. Puede conectar un sensor de temperatura para hacer el abrigo rojo más como calentar para arriba. Puede utilizar un sensor de efecto hall para hacer un abrigo que se enciende para avisarle de invisibles campos magnéticos. No es como que siempre hemos conectado un sensor de alcohol en una de estas capas para convertir a una persona en un alcoholímetro brillan en la oscuridad. Excepción de aquella época.

Se trata, nuevos sensores de cableado en el arduino es la mejor manera de hacer esta capa su propia. Ser creativo. Utilice el siguiente código muestra como punto y ser creativo a partir de ahí. Háganoslo saber en los comentarios lo que aparejó su capa para detectar!

====================
El código de
====================

bibliotecas incluidas
#include < Wire.h >
#include < ADXL345.h >
#include < NewPing.h >

Sensor sonar
#define TRIGGER_PIN 11 / / pin Arduino atado para activar el pin en el sensor de ultrasonidos.
#define ECHO_PIN 10 / / atado de Arduino pin a pin en el sensor ultrasónico del eco.
#define MAX_DISTANCE 200 / / distancia máxima queremos ping para (en centímetros). Distancia máxima del sensor está valorada en 400-500cm.

Sonar de NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing instalación de pernos y distancia máxima.
int potencia = 0;
int distancia = 0;

sensor de micrófono
int micPin = A3;    Seleccione la entrada de pin para el potenciómetro

Accel + accelRainbow + arco iris
doble val = 0.0;
doble valAdjustAccel = 0.0;
doble highvalAccel = 0.0;
doble maxVal = 0.0;
doble azul, verde, rojo;
doble timecounter = 0;
tc doble = 200;
ADXL345 adxl; adxl variable es una instancia de la biblioteca ADXL345

LEDs PWM
int rojo = 5;
blueLED int = 6;
greenLED int = 3;

botones
redButton int = 7;
int greenButton = 4;
blueButton int = 2;
int rainbowButton = 0;
Botón de int = 8;
int distanceButton = 9;
int micButton = 12;
int accelButton = 13;

otros
int contador = 0;

modos de
int modo = 0;    0 = apagado, 1 = rojo, 2 = azul, 3 = verde, 4 = púrpura, 5 = verde azulado, 6 = amarillo, 7 = blanco, 8 = arco iris
9 = accel azul, 10 = accel verde, 11 = accel rojo, 18 = arco iris accel
12 = micrófono verde, 13 = micrófono azul, 14 = mic rojo
15 = distancia rojo, 16 = distancia azul, 17 = distancia verde

micrófono
int sensorValue = 0;  variable para almacenar el valor que viene desde el sensor
doble valAdjustMic = 0.0;
doble highvalMic = 0.0;

void setup() {}
Serial.Begin(115200); Open monitor serie a 115200 baudios
pinMode (rojo, salida);
pinMode (blueLED, salida);
pinMode (greenLED, salida);
pinMode (redButton, entrada);
pinMode (greenButton, entrada);
pinMode (blueButton, entrada);
pinMode (rainbowButton, entrada);
pinMode (botón, entrada);
pinMode (distanceButton, entrada);
pinMode (micButton, entrada);
pinMode (accelButton, entrada);
adxl.powerOn();
}

void loop() {}
readColorButtons();
readAccelButton();
readMicButton();
readDistanceButton();
readOffButton();

modos: 0 = apagado, 1 = rojo, 2 = azul, 3 = verde, 4 = púrpura, 5 = verde azulado, 6 = amarillo, 7 = blanco, 8 = arco iris
9 = accel azul, 10 = accel verde, 11 = accel rojo, 18 = arco iris accel
12 = micrófono verde, 13 = micrófono azul, 14 = mic rojo
15 = distancia rojo, 16 = distancia azul, 17 = distancia verde

Si (modo == 0) / / off
{
digitalWrite (rojo, baja);
digitalWrite (greenLED, LOW);
digitalWrite (blueLED, LOW);
}

Si (modo == 1) //red
{
digitalWrite (rojo, alto);
digitalWrite (greenLED, LOW);
digitalWrite (blueLED, LOW);
}
Si (modo == 2) //blue
{
digitalWrite (rojo, baja);
digitalWrite (greenLED, LOW);
digitalWrite (blueLED, HIGH);
}
Si (modo == 3) / / verde
{
digitalWrite (rojo, baja);
digitalWrite (greenLED, HIGH);
digitalWrite (blueLED, LOW);
}
Si (modo == 4) / / púrpura
{
digitalWrite (rojo, alto);
digitalWrite (greenLED, LOW);
analogWrite (blueLED, 50);
}
Si (modo == 5) / / teal
{
digitalWrite (rojo, baja);
digitalWrite (greenLED, HIGH);
analogWrite (blueLED, 50);
}
Si (modo == 6) / / amarillo
{
digitalWrite (rojo, alto);
digitalWrite (greenLED, HIGH);
digitalWrite (blueLED, LOW);
}
Si (modo == 7) / / blanco
{
digitalWrite (rojo, alto);
digitalWrite (greenLED, HIGH);
digitalWrite (blueLED, HIGH);
}
Si (modo == 8) / / arco iris
{
Rainbow();
}
Si (modo == 9 || modo == 10 || modo == 11) / / accel azul, verde, rojo
{
Accel();
}
Si (modo == 12 || modo == 13 || modo == 14) / / micrófono verde, azul, rojo
{
MIC();
}
Si (modo == 15 || modo == 16 || modo == 17) / distancia rojo, azul, verde
{
distanceSensor();
}
Si (modo == 18) / / arco iris accel
{
accelRainbow();
}

}

void mic() {}
leer el valor del sensor:
sensorValue = analogRead(micPin);

Serial.println(highvalMic);
valAdjustMic = sensorValue-390;
Si (valAdjustMic > highvalMic)
{
highvalMic = valAdjustMic;
}
otra cosa
{
highvalMic = highvalMic*.90;
}
Si (highvalMic > maxVal)
//  {
maxVal = highvalMic;
//  }
if(highvalMic < 100)
{
highvalMic = 0;
}
Si (modo == 14)
{
analogWrite(greenLED,highvalMic);
digitalWrite (blueLED, LOW);
digitalWrite (rojo, baja);
}
Si (modo == 13)
{
analogWrite(blueLED,highvalMic);
digitalWrite (rojo, baja);
digitalWrite (greenLED, LOW);
}
Si (modo == 12)
{
analogWrite(redLED,highvalMic);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
}
Delay(1);
}

void distanceSensor() {}
Delay(50);                      Esperar 50ms entre pings (pings alrededor de 20 por segundo). 29ms debería ser el retraso más corto entre pings.
unsigned int nos = sonar.ping(); Enviar ping, ping tiempo en microsegundos (uS).
distancia = uS / US_ROUNDTRIP_CM;
Serial.Print ("Ping:");
Serial.Print(US / US_ROUNDTRIP_CM); Convertir el tiempo de ping a distancia en cm y el resultado de la impresión (0 = distancia fija fuera de rango)
Serial.println("cm");

Si (distancia > 29 & & distancia < 131)
{
potencia = (distancia - 30) * 2.55;
}
Si (distancia < 30 || distancia > 150)
{
potencia = 0;
}
Si (distancia > 130)
{
potencia = 255;
}
Si (modo == 17)
{
analogWrite(greenLED,power);
digitalWrite (blueLED, LOW);
digitalWrite (rojo, baja);
}
Si (modo == 16)
{
analogWrite(blueLED,power);
digitalWrite (greenLED, LOW);
digitalWrite (rojo, baja);
}
Si (modo == 15)
{
analogWrite(redLED,power);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
}
}

void accel() {}
Aburrido cosas de acelerómetro
int x, y, z;
adxl.readAccel (& x & y y z); leer los valores de acelerómetro y almacenarlos en las variables x, y, z
doble dx, dy, dz;
DX = abs (doble) (x) / 100;
DY = abs (doble) (y) / 100;
DZ = abs (doble) (z) / 100;
Val = sqrt((dx*dx)+(dy*dy)+(dz*dz));
Val = sqrt((x*x)+(y*y)+(z*z));
Salida de x, y, valores z - comentados
Serial.Print(Val);
valAdjustAccel = val-3;
Si (valAdjustAccel > highvalAccel)
{
highvalAccel = valAdjustAccel;
}
otra cosa
{
highvalAccel = highvalAccel*.83;
}
Si (highvalAccel > maxVal)
//  {
maxVal = highvalAccel;
//  }
Si (highvalAccel * 57 < 4)
{
highvalAccel = 4/57;
}
Si (modo == 10)
{
azul = 1;
rojo = 0;
verde = 0;
}
Si (modo == 9)
{
azul = 0;
rojo = 0;
verde = 1;
}
Si (modo == 11)
{
azul = 0;
rojo = 1;
verde = 0;
}
analogWrite(blueLED,highvalAccel*57*blue);
analogWrite(greenLED,highvalAccel*57*green);
analogWrite(redLED,highvalAccel*57*red);
Delay(30);
}

void accelRainbow() {}
Aburrido cosas de acelerómetro
int x, y, z;
adxl.readAccel (& x & y y z); leer los valores de acelerómetro y almacenarlos en las variables x, y, z
doble dx, dy, dz;
DX = abs (doble) (x) / 100;
DY = abs (doble) (y) / 100;
DZ = abs (doble) (z) / 100;
Val = sqrt((dx*dx)+(dy*dy)+(dz*dz));
Val = sqrt((x*x)+(y*y)+(z*z));
Salida de x, y, valores z - comentados
Serial.Print(Val);
valAdjustAccel = val-3;
Si (valAdjustAccel > highvalAccel)
{
highvalAccel = valAdjustAccel;
}
otra cosa
{
highvalAccel = highvalAccel*.83;
}
Si (highvalAccel > maxVal)
//  {
maxVal = highvalAccel;
//  }
Si (highvalAccel * 57 < 4)
{
highvalAccel = 4/57;
}

analogWrite(blueLED,highvalAccel*57*blue);
analogWrite(greenLED,highvalAccel*57*green);
analogWrite(redLED,highvalAccel*57*red);
Delay(30);
timecounter = timecounter + 30;




Si (timecounter < tc)
{
rojo = 1;
azul = 0 + (timecounter) /tc;
}
Si (timecounter > 2 * tc & & timecounter < 3 * tc)
{
rojo = 1 - (timecounter-2 * tc) /tc;
}
Si (timecounter > 4 * tc & & timecounter < 5 * tc)
{
verde = 0 + (timecounter-4 * tc) /tc;
}
Si (timecounter > 6 * tc & & timecounter < 7 * tc)
{
azul = 1 - (timecounter-6 * tc) /tc;
}
Si (timecounter > 8 * tc & & timecounter < 9 * tc)
{
rojo = 0 + (timecounter-8 * tc) /tc;
}
Si (timecounter > 10 * tc & & timecounter < 11 * tc)
{
verde = 1-(timecounter-10 * tc) /tc;
}
Si (timecounter > 12 * tc)
{
timecounter = 0;
}
Serial.Print(red);
Serial.Print("");
Serial.Print(Blue);
Serial.Print("");
Serial.Print(Green);
Serial.Print("");
Serial.println(timecounter);

}

void rainbow() {}

analogWrite(blueLED,255*blue);
analogWrite(greenLED,255*green);
analogWrite(redLED,255*red);
Delay(30);
timecounter = timecounter + 30;




Si (timecounter < tc)
{
rojo = 1;
azul = 0 + (timecounter) /tc;
}
Si (timecounter > 2 * tc & & timecounter < 3 * tc)
{
rojo = 1 - (timecounter-2 * tc) /tc;
}
Si (timecounter > 4 * tc & & timecounter < 5 * tc)
{
verde = 0 + (timecounter-4 * tc) /tc;
}
Si (timecounter > 6 * tc & & timecounter < 7 * tc)
{
azul = 1 - (timecounter-6 * tc) /tc;
}
Si (timecounter > 8 * tc & & timecounter < 9 * tc)
{
rojo = 0 + (timecounter-8 * tc) /tc;
}
Si (timecounter > 10 * tc & & timecounter < 11 * tc)
{
verde = 1-(timecounter-10 * tc) /tc;
}
Si (timecounter > 12 * tc)
{
timecounter = 0;
}
Serial.Print(red);
Serial.Print("");
Serial.Print(Blue);
Serial.Print("");
Serial.Print(Green);
Serial.Print("");
Serial.println(timecounter);
}

void readColorButtons() {}
Si (digitalRead (redButton) == alto & & digitalRead (greenButton) == LOW & & digitalRead(blueButton)==LOW)
{
modo = 1; rojo
Contador = 0;
}
Si (digitalRead (redButton) == LOW & & digitalRead (greenButton) == LOW & & digitalRead(blueButton)==HIGH)
{
modo = 2; azul
Contador = 0;
}
Si (digitalRead (redButton) == LOW & & digitalRead (greenButton) == alto & & digitalRead(blueButton)==LOW)
{
Mode = 3; verde
Contador = 0;
}
Si (digitalRead (redButton) == alto & & digitalRead (greenButton) == LOW & & digitalRead(blueButton)==HIGH)
{
modo = 4; púrpura
digitalWrite (rojo, alto);
digitalWrite (greenLED, LOW);
analogWrite (blueLED, 50);
Delay (250);
Contador = 0;
}
Si (digitalRead (redButton) == LOW & & digitalRead (greenButton) == alto & & digitalRead(blueButton)==HIGH)
{
modo = 5; Teal
digitalWrite (rojo, baja);
digitalWrite (greenLED, HIGH);
analogWrite (blueLED, 50);
Delay (250);
Contador = 0;
}
Si (digitalRead (redButton) == alto & & digitalRead (greenButton) == alto & & digitalRead(blueButton)==LOW)
{
modo = 6; amarillo
digitalWrite (rojo, alto);
digitalWrite (greenLED, HIGH);
digitalWrite (blueLED, LOW);
Delay(250);
Contador = 0;
}
Si (digitalRead (redButton) == alto & & digitalRead (greenButton) == alto & & digitalRead(blueButton)==HIGH)
{
modo = 8; arco iris
digitalWrite(redLED,LOW);
digitalWrite(blueLED,LOW);
digitalWrite(greenLED,LOW);
Delay (250);
contador = contador + 250;
}
Si (contador == 1500)
//  {
modo = 8; colores del arco iris
digitalWrite (rojo, baja);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
Delay (500);
Contador = 0;
//  }
Si (contador == 3000);
//  {
modo = 0;
digitalWrite (rojo, baja);
digitalWrite (blueLED, HIGH);
digitalWrite (greenLED, LOW);
Delay(500);
digitalWrite (rojo, baja);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, alta;
Delay(500);
digitalWrite (rojo, alto);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
Delay(500);
digitalWrite (rojo, baja);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
Contador = 0;
//  }
//
}

void readAccelButton() {}
Si (digitalRead(accelButton)) / / 9 = accel azul, 10 = accel verde, 11 = accel rojo, 18 = arco iris accel
{
Si (modo == 9) / / ya accel azul
{
modo = 10; hacer accel verde
Delay(500);
}
else if (modo == 10) / / ya accel verde
{
modo = 11;  hacer accel rojo
Delay(500);
}
else if (modo == 11) / / ya accel rojo
{
modo = 18; hacer arco iris accel
Delay(500);
}
else if (modo == 18) / / ya accel arco iris
{
modo = 9; hacer accel azul
Delay(500);
}
otra cosa
{
modo = 9; hacer accel azul
Delay(500);
}
}
}

void readMicButton() {}
Si (digitalRead(micButton)) / / 12 = micrófono verde, 13 = micrófono azul, 14 = mic rojo
{
Si (modo == 12) / / ya micro verde
{
modo = 13; hacer micro azul
Delay(500);
}
else if (modo == 13) / / ya micro azul
{
modo = 14;  hacer micro rojo
Delay(500);
}
else if (modo == 14) / / ya mic rojo
{
modo = 12; hacer micro verde
Delay(500);
}
otra cosa
{
modo = 12; hacer micro verde
Delay(500);
}
}
}

void readDistanceButton() {}

Si (digitalRead(distanceButton)) / / 15 = distancia rojo, 16 = distancia azul, 17 = distancia verde
{
Si (modo == 15) / / ya distancia rojo
{
modo = 16; que distancia azul
Delay(500);
}
else if (modo == 16) / / ya distancia azul
{
modo = 17;  que distancia verde
Delay(500);
}
else if (modo == 17) / / ya distancia verde
{
modo = 15; que distancia rojo
Delay(500);
}
otra cosa
{
modo = 15; que distancia rojo
Delay(500);
}
}
}
void readOffButton() {}
Si (digitalRead(offButton))
{
modo = 0;
}
}

Artículos Relacionados

Bata de laboratorio Steampunk y el inyector

Bata de laboratorio Steampunk y el inyector

quería una bata de laboratorio sino que es un diseño original, así que me puse crear un Steampunk Labcoat.El conjunto es dos secciones, que son guarnición de forma.La parte blanca tiene una cremallera abajo del centro que está cubierto por una franja
Probador de baterías clip LED. ¿

Probador de baterías clip LED. ¿

usted nunca armar un circuito y después encontrar el LED no funciona? bien con este Instructable que nunca volverá a suceder! Les presento al medidor de LED de clip de batería.Paso 1: componentes: Components:pasadores hembra encabezadoresistencia de
Escotilla de acceso a batería para LED Throwie rata

Escotilla de acceso a batería para LED Throwie rata

LED Throwie rata V2.0 tiene una portezuela de acceso de velcro para facilitar el cambio de batería.Paso 1: Coser en velcro Sew en el velcro antes de coser la parte trasera. Coloque directamente sobre la batería y asegúrese de que la longitud de velcr
Lona programable LED interactivo

Lona programable LED interactivo

El objetivo de este proyecto fue dar un paso más con el lienzo personalizado. Cuesta un poco más, pero el potencial es mucho mayor para este diseñoPaso 1: teoríaResistencia Calcs de LED blancoVCE = 0.3VLED de tensión = 3.2V a 20mAVcc = 9V9-0,3-3,2 =
DIY bronce caballo lámpara colocar 3.7 voltios Batería accionado LED

DIY bronce caballo lámpara colocar 3.7 voltios Batería accionado LED

sí adivinaron derecha otra lámpara de LED. Este excelente lámpara de cobre amarillo hace una edición buena para mi colección. Y esto se puede hacer con cualquier otra luz si decide construir una bombilla LED personalizada para tu lámpara GO GREEN! Sa
Batería accionado LED luces de la Navidad

Batería accionado LED luces de la Navidad

luces de la Navidad son buenas para algo más que decorar su árbol. Se podría hacer un sparkleball con ellos. Pero ¿qué pasa si se cuelgan de su techo? Tienes que enchufar las luces de una toma de corriente y no sé ustedes pero no tengo enchufes en mi
Cómo hacer una batería lata led luz de trabajo

Cómo hacer una batería lata led luz de trabajo

primero necesitará obtener una remachadora, martillo, taladro, pedacitos de taladro, soldadura, soldador, fundente, saber algo de alambre, saber soldar, leds, cables, resistencias {o no if si usa pila de 3 voltios}, tin snips, latas de lata, un botón
Peso ligero paneles de DJ LED interactivo

Peso ligero paneles de DJ LED interactivo

Hola! Brian Allen, especialista en formación técnica en LED Elemental lo que mi primera Instrucatable. Siempre he sido un poco de un fanático de la música (ok... ok, por lo que puede ser una leve subestimación), ya sea escuchando, creando o incorpora
4 x 4 x 4 interactivo-cubo del LED con Arduino

4 x 4 x 4 interactivo-cubo del LED con Arduino

para explicar mi 4 x 4 x 4 cubo del LED interactivo publicado antes, un poco más claro, voy a intentar hacer mi primer paso por paso instructable.Este 4 x 4 x 4 cube es interactivo usando la esquina de cuatro LEDs LEDs y sensores que reaccionan a la
DIY recargable LED luz de batería del ordenador portátil

DIY recargable LED luz de batería del ordenador portátil

Yo estaba teniendo algunas pilas de laptop en mi desguace por lo tanto he decidido hacer algún uso de las baterías. Normalmente las baterías del ordenador portátil son de 3.6 a 4V valorar, por tanto, he buscado una tira de LED del mercado aquí en Pak
Papa batería impulsada por LED

Papa batería impulsada por LED

por lo tanto, si miraras en mi perfil ves que me gusta física.  Cuando el reto de 'Patatas' yo solo sabía que tengo que hacer un proyecto que puso de relieve la humilde "batería de patata".  Así que aquí está cómo hacer una batería de patata y t
LINTERNA de LED de la batería móvil desechada

LINTERNA de LED de la batería móvil desechada

INTROAquí he utilizado una batería de Li-Ion desechados que no trabajan más en un teléfono móvil.Esta batería puede no funcionar en un sistema móvil pero tiene un montón de juce izquierda en él para ejecutar una pequeña poket tamaño recargable linter
TeaLED: Led, interruptor, caja y baterías (no pegamento ni soldadura)

TeaLED: Led, interruptor, caja y baterías (no pegamento ni soldadura)

una pequeña lámpara para usar donde sea, no necesitas conocimientos de electrónica para hacerlo, sólo cortar una hoja de acetato con la plantilla incluida aquí... Añadir 2 baterías CR2032 y 1 Led (blanco, rojo, ULTRAVIOLETA, RGB lento o rápido, 10mm
Interactive Arduino Powered LED esquís

Interactive Arduino Powered LED esquís

¿Enfermos de la oscuridad mate de esquí nocturno? ¡ No temáis! Esquís de LED interactivos programables Arduino aclarará su noche.Estas casa esquís tienen LEDs incrustados en la hoja superior y p-tex. Un Arduino y un acelerómetro controla las luces. S