Étape 10 : programmer votre veste
Il y a beaucoup de flexibilité avec ce haut-parleur et la LED et la conception de tissu conducteur. Le programme lit les entrées analogiques (autrement dit, votre conductivité) comme un nombre compris entre 0 et 1023 ; vous pouvez modifier le comportement de la veste selon la gamme que le nombre est en. Par exemple, lorsque vous êtes plus conductrice, l’entrée analogique est plus faible. Plus d’informations sur l’utilisation de capteurs analogiques sont disponibles ici.
J’ai programmé mon chandail à capuchon à s’estomper l’ensembles des LEDs de l’un à l’autre lorsque la conductivité est faible. Puis, avec chaque plage de valeurs de conductivité, j’ai eu le haut-parleur émet un bruit plus élevé et avait un ensemble différent de s’allument.
Voici le code que j’ai utilisé pour obtenir ce comportement :
int sensorPin = 0 ; capteur de tissu est connectée à la broche analogique 0
int sensorValue ; variable pour stocker la valeur provenant de la sonde
int pin5 = 5 ; LED connectée à la broche numérique 5
int pin6 = 6 ; LED connectée à la broche numérique 5
pin7 int = 7 ; LED connectée à la broche numérique 5
int pin8 = 8 ; LED connectée à la broche numérique 5
int speakerPin = 9 ; enceinte connectée à la broche numérique 9
void setup() / / exécuter une seule fois, au démarrage de l’esquisse
{
Serial.Begin(9600) ; initialiser le port série
digitalWrite (14, HIGH) ; ensembles de broche analogique a0 à haute
pinMode (pin5, sortie) ; définit la broche numérique 5 à être une sortie
pinMode (pin6, sortie) ; définit la broche numérique 6 pour une sortie
pinMode (pin7, sortie) ; définit la broche numérique 7 pour une sortie
pinMode (pin8, sortie) ; définit la broche numérique 8 pour une sortie
pinMode (speakerPin, sortie) ; définit le speakerPin être une sortie
}
void loop() / / run maintes et maintes fois
{
sensorValue = analogRead(sensorPin) ; lire la valeur de la sonde
Serial.println(sensorValue) ; Envoyer cette valeur à l’ordinateur
Si (sensorValue < 1000 & & sensorValue > = 970)
{
digitalWrite (pin5, HIGH) ; tourne led connectée à la broche 5
digitalWrite (pin6, HIGH) ; tourne led connectée à la broche 6
digitalWrite (pin7, HIGH) ; tourne led connectée à la broche 7
digitalWrite (pin8, HIGH) ; tourne led connectée à la broche 8
}
ElseIf (sensorValue < = 970 & & sensorValue > 890)
{
digitalWrite (pin5, HIGH) ;
digitalWrite (pin6, faible) ;
digitalWrite (pin7, faible) ;
digitalWrite (pin8, basse) ;
beep(speakerPin,2093,100) ; C: jouez la note C 500ms
}
ElseIf (sensorValue < = 890 & & sensorValue > 810)
{
digitalWrite (pin5, HIGH) ;
digitalWrite (pin6, HIGH) ;
digitalWrite (pin7, faible) ;
digitalWrite (pin8, basse) ;
beep(speakerPin,2349,100) ; D
}
ElseIf (sensorValue < = 810 & & sensorValue > 730)
{
digitalWrite (pin5, HIGH) ;
digitalWrite (pin6, HIGH) ;
digitalWrite (pin7, HIGH) ;
digitalWrite (pin8, basse) ;
beep(speakerPin,2637,100) ; E
}
ElseIf (sensorValue < = 730 & & sensorValue > 660)
{
digitalWrite (pin5, HIGH) ;
digitalWrite (pin6, HIGH) ;
digitalWrite (pin7, HIGH) ;
digitalWrite (pin8, HIGH) ;
beep(speakerPin,2793,100) ; F
}
ElseIf (sensorValue < = 660 & & sensorValue > 590)
{
digitalWrite (pin5, HIGH) ;
digitalWrite (pin6, HIGH) ;
digitalWrite (pin7, HIGH) ;
digitalWrite (pin8, HIGH) ;
beep(speakerPin,3136,100) ; G
}
ElseIf (sensorValue < = 590 & & sensorValue > 520)
{
digitalWrite (pin5, HIGH) ;
digitalWrite (pin6, HIGH) ;
digitalWrite (pin7, HIGH) ;
digitalWrite (pin8, basse) ;
beep(speakerPin,3520,100) ; A
}
ElseIf (sensorValue < = 520 & & sensorValue > 460)
{
digitalWrite (pin5, HIGH) ;
digitalWrite (pin6, HIGH) ;
digitalWrite (pin7, faible) ;
digitalWrite (pin8, basse) ;
beep(speakerPin,3951,100) ; B
}
ElseIf (sensorValue < = 460)
{
digitalWrite (pin5, HIGH) ;
digitalWrite (pin6, faible) ;
digitalWrite (pin7, faible) ;
digitalWrite (pin8, basse) ;
beep(speakerPin,4186,100) ; Contre-ut
}
d’autre
{
digitalWrite (pin5, faible) ;
digitalWrite (pin6, faible) ;
digitalWrite (pin7, faible) ;
digitalWrite (pin8, basse) ;
}
}
Sub bip (unsigned char speakerPin, int frequencyInHertz, des timeInMilliseconds longs) / / le son fonction de production
{
int x ;
long delayAmount = (long)(1000000/frequencyInHertz) ;
long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2)) ;
pour (x = 0; x < loopTime; x ++)
{
digitalWrite(speakerPin,HIGH) ;
delayMicroseconds(delayAmount) ;
digitalWrite(speakerPin,LOW) ;
delayMicroseconds(delayAmount) ;
}
}
Autres possibilités (changer seulement la rubrique "Sub loop()") :
Vous pouvez modifier la section sous la « void loop() » (veillez à conserver le crochet ouvrant à la tranche de début et étroite à la fin) à quelque chose comme :
sensorValue = analogRead(sensorPin) ; lire la valeur de la sonde
Si (sensorValue < 1000)
bip (speakerPin, sensorValue * 3, 100) ;
Cela permettra une réaction plus directe entre comment vous touchez le tissu conducteur et la sortie de ce que votre haut-parleur. Le plus du tissu vous touchez, la note sera plus faible. C’est le comportement montré dans la vidéo.
Si vous souhaitez la note deviennent plus élevés lorsque vous touchez plus du tissu, vous pouvez faire quelque chose comme :
sensorValue = analogRead(sensorPin) ; lire la valeur de la sonde
Si (sensorValue < 1000)
bip (speakerPin, 3072 - sensorValue * 3, 100) ;
Bien sûr, vous pouvez encore ajouter dans le code d’affecter les LEDs - ne modifie le comportement de l’enceinte.
Le programme de votre veste.
Pour programmer votre veste, collez le code ci-dessus (ou écrire votre propre code) dans la fenêtre de l’Arduino et le charger dans le LilyPad. Si vous ne savez pas comment programmer le LilyPad ou si le code n’a aucun sens, Leah Buechley a quelques grandes instructions ici.
Brancher la batterie, et avoir votre vêtement faire de la musique!