Piano TouchSense handske (2 / 4 steg)
Steg 2: Steg 2: Arduino kod
Bifogat är koden, det finns också en version av den nedan. Saker att notera: jag bara använt anteckningar C genom G, dessa kan ändras. ADCTouch biblioteket måste vara hämtade ( http://playground.arduino.cc/Code/ADCTouch ), det är enkelt att använda, du behöver bara innehålla referensvärden för varje analog pin, liksom korrigeringen av offset, enligt min kod nedan. Det är viktigt att du testa känsligheten av din kondensator sensorer, det kan vara lite ostadig ibland på grund av crudeness av sensorn. Du kan behöva ändra värdena jag använde för touch tröskeln (jag hade 50 / 60 + vilket innebär att det har berörts), fann jag att beroende på hur jag använde handsken, och vilket finger jag använt, den tröskel som krävs för att ändras (en olycklig bieffekt att avsaknaden av stabilitet i denna sensor).
Följande kod är vad jag använde för Arduino:
#include < ADCTouch.h >
#define NOTE_C 262
#define NOTE_D 294
#define NOTE_E 330
#define NOTE_F 349
#define NOTE_G 392
int ref0, ref1, ref2, ref3, ref4; referensvärden för att ta bort offset
int speakerPin = 9; Beror på vilka stift används för talaren
void setup()
{
Inga stift till setup, stift kan fortfarande användas regelbundet, även om det kommer att påverka avläsningar
Serial.BEGIN(9600);
ref0 = ADCTouch.read (A0, 500); skapa referensvärden
Ref1 = ADCTouch.read (A1, 500);
ref2 = ADCTouch.read (A2, 500);
ref3 = ADCTouch.read (A3, 500);
REF4 = ADCTouch.read (A4, 500);
pinMode (speakerPin, produktionen);
}
void loop()
{
int tumme = ADCTouch.read(A0);
heltal index = ADCTouch.read(A1);
int mitten = ADCTouch.read(A2);
int ring = ADCTouch.read(A3);
int pinky = ADCTouch.read(A4);
tumme-= ref0; ta bort offset
index-= ref1;
mellersta-= ref2;
Ring-= ref3;
Pinky-= ref4;
om (tumme > 50) {
om (index > 60)
{Serial.print("A"); //TI (tummen och pek)
tonen (9, NOTE_C + NOTE_D).
}
annars om (de mellersta > 60)
{Serial.print("B"); //TM (tumme och mitten)
tonen (9, NOTE_C + NOTE_E).
}
annars om (ring > 60)
{Serial.print("C"); //TR (tumme och ring)
tonen (9, NOTE_C + NOTE_F).
}
annars om (pinky > 50)
{Serial.print("D"); //TP (tumme och pinky)
tonen (9, NOTE_C + NOTE_G).
}
annat
{Serial.print("T");
tonen (9, NOTE_C);
}
}
annars om (index > 60) {
om (de mellersta > 60)
{Serial.print("E"); //IM (index och mitten)
tonen (9, NOTE_D + NOTE_E).
}
annars om (ring > 60)
{Serial.print "F". //IR (index och ring)
tonen (9, NOTE_D + NOTE_F).
}
annars om (pinky > 50)
{Serial.print("G"); //IP (index och pinky)
tonen (9, NOTE_D + NOTE_G).
}
annat
{Serial.print("I");
tonen (9, NOTE_D);
}
}
annars om (mellersta > 60) {
om (ring > 60)
{Serial.print("H"); //MR (mitten och ring)
tonen (9, NOTE_E + NOTE_F).
}
annars om (pinky > 50)
{Serial.print("J"); //MP (mitten och pinky)
tonen (9, NOTE_E + NOTE_G).
}
annat
{Serial.print("M");
tonen (9, NOTE_E);
}
}
annars om (ring > 60) {
om (pinky > 50)
{Serial.print("K"); //RP (ring och pinky)
tonen (9, NOTE_F + NOTE_G).
}
annat
{Serial.print("R");
tonen (9, NOTE_F);
}
}
annars om (pinky > 50)
{Serial.print("P");
tonen (9, NOTE_G);
}
annat
{Serial.print("N");
noTone(9);
}
Delay(10);
}