Stap 8: Stap 8: het circuit sterren naaien
Ik de sterren geprogrammeerd op mijn quilt te spelen van de noten aan Twinkle Twinkle Little Star, zodat mijn dochter leren kon om te spelen met haar vrienden. Er zijn zes notities in het lied, dus slechts zes van de sterren op het dekbed worden geprogrammeerd. De anderen zijn voor decoratie.
Met behulp van geleidende draad:
• Sluit de positieve kant van de zoemer geluid aan een genummerde pin op de LilyPad. Ik gebruikte de 5.
• Sluit de negatieve kant van de zoemer geluid aan de negatieve pin op de LilyPad.
• Sluit één punt van elke ster aan een genummerde pin van de LilyPad. Ik gebruikte 6, 9, 10, A2, A3 en A5. Ik wikkelde gewoon de draad rond een hoek van elke ster dus ik hoefde niet te porren gaten door de folie. (pic)
• Programma de Arduino.
Hier is mijn CODE, die was geremixt van programmacode die is geschreven door Kanjun Qiu: http://hlt.media.mit.edu/?p=1558.
Voer het aantal piano toetsen. Is het 5, 6, 7, 8?
Const int numberOfKeys = 6;
lijst de sleutels hier in zodat u wilt.
int toetsen [numberOfKeys] = {6, 9, 10, A2, A3, A5};
lijst van de tonen van de sleutels hier. Vergeet niet, de Toon die u lijst zal worden gerelateerd
aan de sleutel in de volgorde die je zeggen (hier key6 == 1046).
int merkt [numberOfKeys] = {392, 349.23, 293.66, 440, 329.63, 261.63};
int spreker = 5;
int sensorValue;
VOID Setup {}
pinMode (spreker, OUTPUT);
int i = 0;
terwijl (ik < numberOfKeys) //set de piano toetsen als ingangen
{
pinMode (toetsen [i], INPUT);
i = i + 1;
}
Serial.begin(9600); initialiseren van de mededeling
}
void loop {}
int i = 0;
terwijl (ik < numberOfKeys)
{
checkPianoKey (toetsen [i], notes[i]);
i = i + 1;
}
Serial.println();
delay(100);
}
VOID checkPianoKey (int sleutel, int opmerking) {}
sensorValue = readCapacitivePin(key); lezen van de touch sensor waarde
Serial.Print(sensorValue); waarde naar de computer verzenden
Serial.Print (""); een char ruimte naar de computer verzenden
Als (sensorValue > 1) //if de toets wordt ingedrukt
{
Toon (spreker, opmerking, 100); een noot speelt voor 100ms
}
}
readCapacitivePin
Ingang: Arduino pin-nummer
Uitgang: Een nummer, van 0 tot de uiting van de 17
hoeveel capaciteit is op de pin
Wanneer u contact met de pin, of wat je hebt
gekoppeld aan het, krijgt het nummer hogere
#include "pins_arduino.h" / / Arduino pre-1.0 moet dit
uint8_t readCapacitivePin (int pinToMeasure) {}
Variabelen die worden gebruikt om te vertalen van Arduino naamgeving van AVR-pin
vluchtige uint8_t * haven;
vluchtige uint8_t * ddr;
vluchtige uint8_t * pin;
Hier vertalen wij de invoer pin-nummer van
Arduino pin nummer AVR poort, PIN, DDR,
en welke bits van deze registers die we schelen.
byte bitmasker;
poort = portOutputRegister(digitalPinToPort(pinToMeasure));
DDR = portModeRegister(digitalPinToPort(pinToMeasure));
bitmasker = digitalPinToBitMask(pinToMeasure);
PIN = portInputRegister(digitalPinToPort(pinToMeasure));
Kwijting van de pin eerst door het lage- en output
* poort & = ~ (bitmasker);
* ddr | = bitmasker;
delay(1);
Maak de pin een ingang met de interne pull-up op
* ddr & = ~ (bitmasker);
* haven | = bitmasker;
Nu zien hoe lang de pin te krijgen trok. Deze handmatige afrollen van de lus
vermindert het aantal hardware cycli tussen elke lezen van de pin,
waardoor de gevoeligheid.
uint8_t cycli = 17;
Als (* pin & bitmasker) {cycli = 0;}
anders als (* pin & bitmasker) {cycli = 1;}
anders als (* pin & bitmasker) {cycli = 2;}
anders als (* pin & bitmasker) {cycli = 3;}
anders als (* pin & bitmasker) {cycli = 4;}
anders als (* pin & bitmasker) {cycli = 5;}
anders als (* pin & bitmasker) {cycli = 6;}
anders als (* pin & bitmasker) {cycli = 7;}
anders als (* pin & bitmasker) {cycli = 8;}
anders als (* pin & bitmasker) {cycli = 9;}
anders als (* pin & bitmasker) {cycli = 10;}
anders als (* pin & bitmasker) {cycli = 11;}
anders als (* pin & bitmasker) {cycli = 12;}
anders als (* pin & bitmasker) {cycli = 13;}
anders als (* pin & bitmasker) {cycli = 14;}
anders als (* pin & bitmasker) {cycli = 15;}
anders als (* pin & bitmasker) {cycli = 16;}
Kwijting van de pin opnieuw door het lage- en output
Het is belangrijk om te laten de pinnen laag als u wilt
mogelijk te raken meer dan 1 sensor tegelijk - als
de sensor wordt overgelaten getrokken hoog, wanneer je aanraken
twee sensoren, je lichaam zal de overdracht van de kosten tussen
sensoren.
* poort & = ~ (bitmasker);
* ddr | = bitmasker;
retourneren van cycli;
}