Stap 7: Volledige Arduino Beetbox Code
#include < CapacitiveSensor.h >#include < WaveHC.h >
#include < WaveUtil.h >
/*
-De gebruikmaakt van een hoogwaardige weerstand BV 10M tussen pin verzenden en ontvangen van pin
* Weerstand effecten gevoeligheid, experiment met waarden, 50K - 50M. Grotere weerstand waarden opleveren grotere sensor-waardes.
* Ontvangen pin is de pin van de sensor.
*/
Kaart van de SdReader; Dit object bevat de gegevens voor de kaart char bestandsnaam [13];
FatVolume vol; Dit houdt de informatie voor de partitie op de kaart
FatReader wortel; Dit bevat de informatie voor de hoofdmap van volume
FatReader bestand; Dit object vertegenwoordigt het WAV-bestand voor een pi cijfer of periode
WaveHC Golf; Dit is de enige Golf (audio) object, omdat we zullen slechts één filter tegelijk spelen
Uncomment de volgende regel om te schakelen van de verklaringen van de Debug Serial.print()
#define DEBUG
#define error(msg) error_P(PSTR(msg)) CapacitiveSensor cs_9_6 = CapacitiveSensor(9,6); 10 M weerstand tussen pin 9 & 6, pin 6 is pin van de sensor, het toevoegen van een draad en/of folie indien gewenst zweven calVal1 = 0,0; VOID Setup PgmPrintln ("bestanden gevonden:"); pinMode (14, OUTPUT); void loop
CapacitiveSensor cs_9_7 = CapacitiveSensor(9,7);
CapacitiveSensor cs_9_8 = CapacitiveSensor(9,8);
zweven calVal2 = 0,0;
zweven calVal3 = 0,0;
zweven total1 = 0,0;
zweven total2 = 0,0;
zweven total3 = 0,0;
int i = 0;
{
Serial.begin(9600);
Als (! card.init()) {}
fout ("Card init. mislukt!");
}
Als (! vol.init(card)) {}
fout ("geen partitie!");
}
Als (! root.openRoot(vol)) {}
fout kon niet ("open dir");
}
root.ls();
cs_9_6.reset_CS_AutoCal(); autocalibrate kanaal 1
cs_9_7.reset_CS_AutoCal(); autocalibrate kanaal 2
cs_9_8.reset_CS_AutoCal(); autocalibrate kanaal 3
cs_9_6.set_CS_AutocaL_Millis(0x00001000); autocalibrate interval op kanaal 1
cs_9_7.set_CS_AutocaL_Millis(0x00001000); autocalibrate interval op kanaal 2
cs_9_8.set_CS_AutocaL_Millis(0x00001000); autocalibrate interval op kanaal 3
}
{
total1 = cs_9_6.capacitiveSensor(30);
total2 = cs_9_7.capacitiveSensor(30);
total3 = cs_9_8.capacitiveSensor(30);
Als (ik < 60) {/ / Sensor kalibreren volgens basislijn
digitalWrite (14, hoge);
calVal1 = 0.1*float(total1) + 0,9 * calVal1;
i ++;
}
anders als (ik < 120) { / / Sensor kalibreren volgens basislijn
digitalWrite (14, laag);
calVal2 = 0.1*float(total2) + 0,9 * calVal2;
i ++;
}
anders als (ik < 180) { / / Sensor kalibreren volgens basislijn
digitalWrite (14, hoge);
calVal3 = 0.1*float(total3) + 0,9 * calVal3;
i ++;
}
else {}
digitalWrite(14,LOW);
}
#ifdef DEBUG
Serial.Print(total1);
Serial.print("\t");
Serial.Print(total2); / / sensor printuitvoer 2
Serial.print("\t");
Serial.println(total3); / / sensor printuitvoer 3
Serial.Print ("CAL: \t");
Serial.Print(calVal1); / / sensor printuitvoer 1
Serial.print("\t");
Serial.Print(calVal2); / / sensor printuitvoer 2
Serial.print("\t");
Serial.println(calVal3); / / sensor printuitvoer 3
#endif
Als (total1 > 0,8 * calVal1 & & total2 > 0,8 * calVal2) {}
strcpy_P (filename, PSTR ("BUFF1. WAV"));
Serial.println(filename);
playfile(filename);
}
anders als (total2 > 0,8 * calVal2 & & total3 > 0,8 * calVal3) {}
strcpy_P (filename, PSTR ('HAT. WAV"));
Serial.println(filename);
playfile(filename);
}
anders als (total1 > 0,8 * calVal1) {}
strcpy_P (filename, PSTR ("CLICK1. WAV"));
Serial.println(filename);
playfile(filename);
}
anders als (total2 > 0,8 * calVal2) {}
strcpy_P (filename, PSTR ("BOOM1. WAV"));
Serial.println(filename);
playfile(filename);
}
anders als (total3 > 0,8 * calVal3) {}
strcpy_P (filename, PSTR ("BOOMHAA1. WAV"));
Serial.println(filename);
playfile(filename);
}
delay(10); willekeurige vertraging te beperken gegevens naar seriële poort
}
/////////////////////////////////// HELPERS
/*
* afdrukken foutbericht en stoppen
*/
nietig error_P (const char * str) {}
PgmPrint ("fout:");
SerialPrint_P(str);
sdErrorCheck();
while(1);
}
/*
* afdrukken foutbericht en stoppen als SD i/o-fout
*/
nietig sdErrorCheck(void) {}
Als (! card.errorCode()) keren;
PgmPrint ("\r\nSD I/O fout:");
Serial.Print(Card.ErrorCode(), HEX);
PgmPrint (",");
Serial.println(Card.errorData(), HEX);
while(1);
}
/*
* Het afspelen van een bestand en wachten tot het te voltooien
*/
leegte playcomplete(char *name) {}
playfile(name);
terwijl (wave.isplaying);
controleren of een fout tijdens het spelen opgetreden
sdErrorCheck();
}
/*
* Open en start het afspelen van een WAV-bestand
*/
leegte playfile(char *name) {}
Als (wave.isplaying) {/ / al het spelen van iets, dus stoppen met het!
Wave.stop(); Stop ermee
}
Als (! file.open (root, naam)) {}
PgmPrint kon niet ("open bestand");
Serial.Print(name);
terugkeer;
}
Als (! wave.create(file)) {}
PgmPrintln ("niet een geldig WAV");
terugkeer;
}
OK tijd om te spelen!
Wave.Play();
}