Stap 10: program je jas
Er is voldoende flexibiliteit met deze spreker en LED en geleidende stof design. Het programma leest de analoge ingang (dat wil zeggen, uw geleidbaarheid) als een getal tussen 0 en 1023; u kunt het gedrag van de jas afhankelijk van het bereik dat het nummer in. Bijvoorbeeld, wanneer u meer geleidende bent, is de analoge ingang lager. Meer informatie over het gebruik van analoge sensoren is beschikbaar hier.
Ik mijn hoodie te vervagen de sets voor LEDs van de ene naar de andere wanneer de geleidbaarheid laag is geprogrammeerd. Dan, met elk gegevensbereik geleidendheid, ik had de spreker uitstoten een hoger geluid, en had een andere set van LEDs oplichten.
Hier is de code die ik gebruikt om dit probleem:
int sensorPin = 0; sensor stof is aangesloten op de analoge pin 0
int sensorValue; variabele de waarde afkomstig van de sensor opslaan
int pin5 = 5; Aangesloten op digital pin 5 LED
int pin6 = 6; Aangesloten op digital pin 5 LED
int pin7 = 7; Aangesloten op digital pin 5 LED
int pin8 = 8; Aangesloten op digital pin 5 LED
int speakerPin = 9; speaker verbonden met digitale pin 9
void setup / / run eenmaal in, wanneer de schets wordt gestart
{
Serial.begin(9600); initialiseren van de seriële poort
digitalWrite (14, hoge); analoge pin a0 ingesteld op hoog
pinMode (pin5, OUTPUT); sets digitale pin 5 als een uitgang
pinMode (pin6, OUTPUT); digitale pin 6 tot en met een output worden ingesteld
pinMode (pin7, OUTPUT); sets digitale pin 7 te worden een vermogen
pinMode (pin8, OUTPUT); sets digitale pin 8 als een uitgang
pinMode (speakerPin, OUTPUT); Hiermee stelt u de speakerPin als een uitgang
}
void loop / / run over en weer
{
sensorValue = analogRead(sensorPin); luiden naar de waarde van de sensor
Serial.println(sensorValue); die waarde naar de computer verzenden
Als (sensorValue < 1000 & & sensorValue > = 970)
{
digitalWrite (pin5, hoge); Hiermee schakelt u led aangesloten op pin 5
digitalWrite (pin6, hoge); Hiermee schakelt u led verbonden met pin 6
digitalWrite (pin7, hoge); Hiermee schakelt u led aangesloten op pin 7
digitalWrite (pin8, hoge); Hiermee schakelt u led aangesloten op pin 8
}
else if (sensorValue < = 970 & & sensorValue > 890)
{
digitalWrite (pin5, hoge);
digitalWrite (pin6, laag);
digitalWrite (pin7, laag);
digitalWrite (pin8, laag);
Beep(speakerPin,2093,100); C: de noot C 500ms speelt
}
else if (sensorValue < = 890 & & sensorValue > 810)
{
digitalWrite (pin5, hoge);
digitalWrite (pin6, hoge);
digitalWrite (pin7, laag);
digitalWrite (pin8, laag);
Beep(speakerPin,2349,100); D
}
else if (sensorValue < = 810 & & sensorValue > 730)
{
digitalWrite (pin5, hoge);
digitalWrite (pin6, hoge);
digitalWrite (pin7, hoge);
digitalWrite (pin8, laag);
Beep(speakerPin,2637,100); E
}
else if (sensorValue < = 730 & & sensorValue > 660)
{
digitalWrite (pin5, hoge);
digitalWrite (pin6, hoge);
digitalWrite (pin7, hoge);
digitalWrite (pin8, hoge);
Beep(speakerPin,2793,100); F
}
else if (sensorValue < = 660 & & sensorValue > 590)
{
digitalWrite (pin5, hoge);
digitalWrite (pin6, hoge);
digitalWrite (pin7, hoge);
digitalWrite (pin8, hoge);
Beep(speakerPin,3136,100); G
}
else if (sensorValue < = 590 & & sensorValue > 520)
{
digitalWrite (pin5, hoge);
digitalWrite (pin6, hoge);
digitalWrite (pin7, hoge);
digitalWrite (pin8, laag);
Beep(speakerPin,3520,100); A
}
else if (sensorValue < = 520 & & sensorValue > 460)
{
digitalWrite (pin5, hoge);
digitalWrite (pin6, hoge);
digitalWrite (pin7, laag);
digitalWrite (pin8, laag);
Beep(speakerPin,3951,100); B
}
else if (sensorValue < = 460)
{
digitalWrite (pin5, hoge);
digitalWrite (pin6, laag);
digitalWrite (pin7, laag);
digitalWrite (pin8, laag);
Beep(speakerPin,4186,100); hoge C
}
anders
{
digitalWrite (pin5, laag);
digitalWrite (pin6, laag);
digitalWrite (pin7, laag);
digitalWrite (pin8, laag);
}
}
VOID pieptoon (unsigned char speakerPin, int frequencyInHertz, lange timeInMilliseconds) / / het geluid produceren functie
{
int x;
lange delayAmount = (long)(1000000/frequencyInHertz);
lange loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
voor (x = 0; x < loopTime; x ++)
{
digitalWrite(speakerPin,HIGH);
delayMicroseconds(delayAmount);
digitalWrite(speakerPin,LOW);
delayMicroseconds(delayAmount);
}
}
Andere mogelijkheden (verandert alleen het gedeelte onder "void loop()"):
Kunt u het gedeelte onder de "ongeldig loop" (zorg voor het behoud van het open bracket op de begin- en nauwe beugel eind) aan iets als:
sensorValue = analogRead(sensorPin); luiden naar de waarde van de sensor
Als (sensorValue < 1000)
Beep (speakerPin, sensorValue * 3, 100);
Hierdoor zal een meer directe reactie tussen hoe je de geleidende stof aanraken en wat uw luidspreker uitgangen. Hoe meer van de stof u bent raken, hoe lager de notitie zal worden. Dit is het gedrag in de video weergegeven.
Als u wilt dat de notitie worden hoger wanneer je meer van de stof raken, kunt je zoiets als:
sensorValue = analogRead(sensorPin); luiden naar de waarde van de sensor
Als (sensorValue < 1000)
Beep (speakerPin, 3072 - sensorValue * 3, 100);
Natuurlijk, u kunt nog steeds toevoegen in code kan invloed hebben op de LEDs - dit verandert alleen het gedrag van de spreker.
Het programma van je jas.
Om te programmeren uw jas, plak de code hierboven (of schrijf uw eigen code) in het venster van de Arduino en het laden op de LilyPad. Als u niet zeker weet hoe de LilyPad program of als de code geen zin heeft, Leah Buechley sommige grote instructies heeft hier.
Sluit de accu aan en hebben uw kledingstuk sommige muziek maken!