Jag vill bara hålla din hand (2 / 5 steg)
Steg 2: Programmera och konfigurera Arduino krets
1) ta Zener dioden och resistorn och koppla dem upp på bakbord enligt diagrammet. För nu, bara använda Blank tråd för att representera händerna. Inledningsvis använde vi 25 k potentiometrar i stället för enkelvärdes-motståndet. Detta gjorde det möjligt för oss att "ringa in" vår signalnivå.
2) schematiskt visar endast 1 par händer. För att göra två, helt enkelt kopiera kretsen, men har R1 & D1 kopplat till A1 på Arduino.
dessa två steg är valfria, men hjälp med felsökning. SÅ GÖRA DU BÄTTRE DEM.
3) krok upp en LED till stift 13 (Glöm inte att observera polariteten... anod till arduino, katod till marken)
4) Hook-up PC talaren att stift 12 (den andra ändan till marken)
5) Ladda ner vår kod med filen campingtomter. https://www.Dropbox.com/sh/46k9dfd1oh0s4v1/8ceVhL8zjN
GitHub alltför (inkluderar bearbetning kod alltför): https://github.com/ijwhyr/ijwhyr
6) öppna koden (hands_sound_integrate2b.ino) i kompilator och kontrollera att raden "analogReference" matchar din Arduino. Vi sätta den till 1 volt. Kontrollera att pitches.h finns med i samma mapp också.
7) nu öppna den seriella monitorn i kompilatorn. Varje gång de blank trådarna touch, du bör höra ett pipljud, och led bör lysa upp! Om du håller trådarna, bör du också få noll avläsningar. Förhoppningsvis desto hårdare du håller trådarna, ju högre nummer!
tillval
8) ändra en projektet ruta för att hålla arduino och bakbord. Detta gör set-up på ett kick!
inklistrade koden:
/***************************
av Ellen Keith, Yael Braha, Marc Roth, Tosh Chiang och Nanna Garcha
för SF upp festival 2012
***********************/
#include "pitches.h"
ljud
int melodi [] = {
NOTE_E5, NOTE_B6};
int melody2 [] = {
NOTE_F5, NOTE_C6};
int noteDurations [] = {
8, 8, 2};
provtagning och io
int pairOne = A0;
int pairTwo = A1;
int ledde = 13.
int aOut = 12.
resten
int triggerThresh = 50; Anger den utlösande foroutput
booleska stopMusic = sant;
int countOut = 0;
void setup() {//configures in- och utgångar
Serial.BEGIN(9600);
pinMode (pairOne, ingång);
pinMode (pairTwo, ingång);
pinMode ledde (, OUTPUT); på arduino
pinMode (aOut, produktionen);
}
void loop() {
int handShakeReadFinal1; //for slutliga
int handShakeReadFinal2;
analogReference(INTERNAL1V1); kommandot varierar mellan arduinos
analogReference(INTERNAL);
Läs input på analoga stift 0 och 1:
int handShakeRead1 = analogRead(pairOne);
Delay(10); resample pin 0!
int handShakeRead1b = analogRead(pairOne);
int handShakeRead2 = analogRead(pairTwo);
Delay(10); resample stift 1!
int handShakeRead2b = analogRead(pairTwo);
produktionsvärde endast om båda proven är större än tröskelvärdet och noll
om (handShakeRead1 > triggerThresh och handShakeRead1b > triggerThresh) {
handShakeReadFinal1 = handShakeRead1;
}
annat
{
handShakeReadFinal1 = 0;
}
om (handShakeRead2 > triggerThresh och handShakeRead2b > triggerThresh) {
handShakeReadFinal2 = handShakeRead2;
}
annat
{
handShakeReadFinal2 = 0;
}
skriva ut värden till seriell port
Serial.Print('A');
Serial.println(handShakeReadFinal1);
Serial.Print('B');
Serial.println(handShakeReadFinal2);
Delay(50);
ljud
om (handShakeReadFinal1 > triggerThresh || handShakeReadFinal2 > triggerThresh)
{
digitalWrite (ledde, högt);
om (stopMusic) {
Tune();
}
}
annat
{
countOut = 0;
stopMusic = sant;
digitalWrite (ledde, låg);
Delay(1000);
}
}
void tune() {
för (int thisNote = 0; thisNote < 2; thisNote ++) {
int noteDuration = 1000/noteDurations [thisNote];
tonar (Aut, melodi [thisNote], noteDuration);
fördröjning (noteDuration + 30);
}
stopMusic = false;
}