Paso 10: programa tu chaqueta
Hay un montón de flexibilidad con este altavoz y el LED y el diseño de tela conductora. El programa lee la entrada analógica (es decir, su conductividad) como un número entre 0 y 1023; puede cambiar el comportamiento de la chaqueta dependiendo de la gama que es el número. Por ejemplo, cuando estás más conductora, la entrada analógica es menor. Más información sobre el uso de sensores analógicos está disponible aquí.
Programé mi sudadera con capucha a desaparecer los conjuntos de LEDs de una a otra cuando la conductividad es baja. Luego, con cada rango de valores de conductividad, tenía los altavoces emiten un ruido más alto y tenía un sistema diferente de LEDs iluminan.
Aquí está el código que usé para conseguir este comportamiento:
int sensorPin = 0; sensor de tela está conectada al pin analógico 0
int sensorValue; variable para almacenar el valor que viene desde el sensor
pin5 int = 5; LED conectado al pin digital 5
pin6 int = 6; LED conectado al pin digital 5
int pin7 = 7; LED conectado al pin digital 5
int pin8 = 8; LED conectado al pin digital 5
int speakerPin = 9; altavoz conectado al pin digital 9
void setup() / / ejecuta una vez, cuando comienza el bosquejo
{
Serial.Begin(9600); inicializar el puerto serie
digitalWrite (14, alto); Juegos pin analógico a0 a alta
pinMode (pin5, salida); pone el pin digital 5 ser una salida
pinMode (pin6, salida); pone el pin digital 6 que una salida
pinMode (pin7, salida); pone el pin digital 7 al ser una salida
pinMode (pin8, salida); pone el pin digital 8 para ser una salida
pinMode (speakerPin, salida); establece la speakerPin a ser una salida
}
void loop() / / ejecuta una y otra vez
{
sensorValue = analogRead(sensorPin); leer el valor del sensor
Serial.println(sensorValue); Enviar ese valor a la computadora
Si (sensorValue < 1000 & & sensorValue > = 970)
{
digitalWrite (pin5, HIGH); enciende led conectado al pin 5
digitalWrite (pin6, HIGH); enciende led conectado al pin 6
digitalWrite (pin7, HIGH); enciende led conectado al pin 7
digitalWrite (pin8, HIGH); enciende led conectado al pin 8
}
else if (sensorValue < = 970 & & sensorValue > 890)
{
digitalWrite (pin5, HIGH);
digitalWrite (pin6, LOW);
digitalWrite (pin7, LOW);
digitalWrite (pin8, LOW);
BEEP(speakerPin,2093,100); C: juega la nota C 500ms
}
else if (sensorValue < = 890 & & sensorValue > 810)
{
digitalWrite (pin5, HIGH);
digitalWrite (pin6, HIGH);
digitalWrite (pin7, LOW);
digitalWrite (pin8, LOW);
BEEP(speakerPin,2349,100); D
}
else if (sensorValue < = 810 & & sensorValue > 730)
{
digitalWrite (pin5, HIGH);
digitalWrite (pin6, HIGH);
digitalWrite (pin7, HIGH);
digitalWrite (pin8, LOW);
BEEP(speakerPin,2637,100); E
}
else if (sensorValue < = 730 & & sensorValue > 660)
{
digitalWrite (pin5, HIGH);
digitalWrite (pin6, HIGH);
digitalWrite (pin7, HIGH);
digitalWrite (pin8, HIGH);
BEEP(speakerPin,2793,100); F
}
else if (sensorValue < = 660 & & sensorValue > 590)
{
digitalWrite (pin5, HIGH);
digitalWrite (pin6, HIGH);
digitalWrite (pin7, HIGH);
digitalWrite (pin8, HIGH);
BEEP(speakerPin,3136,100); G
}
else if (sensorValue < = 590 & & sensorValue > 520)
{
digitalWrite (pin5, HIGH);
digitalWrite (pin6, HIGH);
digitalWrite (pin7, HIGH);
digitalWrite (pin8, LOW);
BEEP(speakerPin,3520,100); A
}
else if (sensorValue < = 520 & & sensorValue > 460)
{
digitalWrite (pin5, HIGH);
digitalWrite (pin6, HIGH);
digitalWrite (pin7, LOW);
digitalWrite (pin8, LOW);
BEEP(speakerPin,3951,100); B
}
else if (sensorValue < = 460)
{
digitalWrite (pin5, HIGH);
digitalWrite (pin6, LOW);
digitalWrite (pin7, LOW);
digitalWrite (pin8, LOW);
BEEP(speakerPin,4186,100); C alta
}
otra cosa
{
digitalWrite (pin5, LOW);
digitalWrite (pin6, LOW);
digitalWrite (pin7, LOW);
digitalWrite (pin8, LOW);
}
}
void beep (unsigned char speakerPin, int frequencyInHertz, timeInMilliseconds largo) / / el sonido que produce la función
{
int x;
delayAmount largo = (long)(1000000/frequencyInHertz);
loopTime largo = (long)((timeInMilliseconds*1000)/(delayAmount*2));
para (x = 0; x < loopTime; x ++)
{
digitalWrite(speakerPin,HIGH);
delayMicroseconds(delayAmount);
digitalWrite(speakerPin,LOW);
delayMicroseconds(delayAmount);
}
}
Otras posibilidades (cambiando sólo la sección en "anular loop()"):
Puede cambiar la sección bajo el "void loop()" (Asegúrese de conservar el soporte abierto en el soporte de inicio y cierre en el extremo) a algo como:
sensorValue = analogRead(sensorPin); leer el valor del sensor
Si (sensorValue < 1000)
BEEP (speakerPin, sensorValue * 3, 100);
Esto permitirá una respuesta más directa entre cómo se toca al tejido conductivo y salidas de lo que tu altavoz. Más de la tela estás tocando, menor será la nota. Este es el comportamiento que se muestra en el video.
Si desea que la nota a ser mayor cuando tocas más de la tela, se puede hacer algo como:
sensorValue = analogRead(sensorPin); leer el valor del sensor
Si (sensorValue < 1000)
BEEP (speakerPin, 3072 - sensorValue * 3, 100);
Por supuesto, aún puede agregar código para afectar los LEDs - esto sólo cambia el comportamiento del altavoz.
Programa de su chaqueta.
Para programar tu chaqueta, pegue el código anterior (o escribir su propio código) en la ventana de Arduino y cargarlo en el LilyPad. Si usted no está seguro de cómo programar el LilyPad o si el código no tiene ningún sentido, Leah Buechley tiene algunas grandes instrucciones aquí.
Enchufe la batería, y con su ropa hacer música!