Étape 7: Arduino complet Beetbox Code
#include < CapacitiveSensor.h >#include < WaveHC.h >
#include < WaveUtil.h >
/*
* Utilise une résistance de valeur élevée par exemple 10M entre envoyer broche et recevoir des broches
* Résistance effets sensibilité, expérience avec les valeurs, 50K - 50M. Plus grandes valeurs de la résistance donnent des valeurs plus grandes de capteur.
* Recevez pin est l’axe du capteur.
*/
Carte de SdReader ; Cet objet conserve les informations de la carte char nom [13] ;
Vol FatVolume ; Il conserve les informations pour la partition sur la carte
FatReader racine ; Il conserve les informations pour le répertoire racine de volumes
Fichier FatReader ; Cet objet représente le fichier WAV pour une période ou de chiffres de pi
WaveHC vague ; C’est le seul objet (audio) de la vague, puisque nous allons jouer seulement un à la fois
Décommentez la ligne suivante pour activer le débogage Serial.print() déclarations
#define DEBUG
#define error(msg) error_P(PSTR(msg)) CapacitiveSensor cs_9_6 = CapacitiveSensor(9,6) ; 10 M résistance entre les bornes 9 & 6, broche 6 est la broche du capteur, ajouter un fil ou une feuille si vous le souhaitez float calVal1 = 0.0 ; void setup() PgmPrintln ("fichiers trouvés:") ; pinMode (sortie 14) ; void loop()
CapacitiveSensor cs_9_7 = CapacitiveSensor(9,7) ;
CapacitiveSensor cs_9_8 = CapacitiveSensor(9,8) ;
float calVal2 = 0.0 ;
float calVal3 = 0.0 ;
flotteur total1 = 0.0 ;
flotteur total2 = 0.0 ;
flotteur total3 = 0.0 ;
int i = 0 ;
{
Serial.Begin(9600) ;
Si (! card.init()) {}
erreur ("carte init. a échoué!") ;
}
Si (! vol.init(card)) {}
erreur ("aucune partition!") ;
}
Si (! root.openRoot(vol)) {}
erreur ("Impossible d’ouvrir dir") ;
}
root.ls() ;
cs_9_6.reset_CS_AutoCal() ; autocalibrate canal 1
cs_9_7.reset_CS_AutoCal() ; autocalibrate canal 2
cs_9_8.reset_CS_AutoCal() ; autocalibrate canal 3
cs_9_6.set_CS_AutocaL_Millis(0x00001000) ; intervalle d’autocalibrate sur le canal 1
cs_9_7.set_CS_AutocaL_Millis(0x00001000) ; intervalle d’autocalibrate sur le canal 2
cs_9_8.set_CS_AutocaL_Millis(0x00001000) ; intervalle d’autocalibrate sur le canal 3
}
{
total1 = cs_9_6.capacitiveSensor(30) ;
Total2 = cs_9_7.capacitiveSensor(30) ;
Total 3 = cs_9_8.capacitiveSensor(30) ;
Si (j’ai < 60) {/ / base de calibrer capteur
digitalWrite (14, HIGH) ;
calVal1 = 0.1*float(total1) + 0,9 * calVal1 ;
i ++ ;
}
ElseIf (j’ai < 120) { / / base de calibrer capteur
digitalWrite (14, faible) ;
calVal2 = 0.1*float(total2) + 0,9 * calVal2 ;
i ++ ;
}
ElseIf (j’ai < 180) { / / base de calibrer capteur
digitalWrite (14, HIGH) ;
calVal3 = 0.1*float(total3) + 0,9 * calVal3 ;
i ++ ;
}
else {}
digitalWrite(14,LOW) ;
}
#ifdef DEBUG
Serial.Print(Total1) ;
Serial.print("\t") ;
Serial.Print(Total2) ; / / print de sortie du capteur 2
Serial.print("\t") ;
Serial.println(Total3) ; / / print de sortie du capteur 3
Serial.Print ("CAL: \t") ;
Serial.Print(calVal1) ; / / print de sortie du capteur 1
Serial.print("\t") ;
Serial.Print(calVal2) ; / / print de sortie du capteur 2
Serial.print("\t") ;
Serial.println(calVal3) ; / / print de sortie du capteur 3
#endif
Si (total1 > 0,8 * calVal1 & & total2 > 0,8 * calVal2) {}
strcpy_P (filename, PSTR (» BUFF1. "WAV")) ;
Serial.println(fileName) ;
playfile(fileName) ;
}
ElseIf (total2 > 0,8 * calVal2 & & total3 > 0,8 * calVal3) {}
strcpy_P (filename, PSTR "(HAT. "WAV")) ;
Serial.println(fileName) ;
playfile(fileName) ;
}
ElseIf (total1 > 0,8 * calVal1) {}
strcpy_P (filename, PSTR (» CLICK1. "WAV")) ;
Serial.println(fileName) ;
playfile(fileName) ;
}
ElseIf (total2 > 0,8 * calVal2) {}
strcpy_P (filename, PSTR (» BOOM1. "WAV")) ;
Serial.println(fileName) ;
playfile(fileName) ;
}
ElseIf (total 3 > 0,8 * calVal3) {}
strcpy_P (filename, PSTR (» BOOMHAA1. "WAV")) ;
Serial.println(fileName) ;
playfile(fileName) ;
}
Delay(10) ; délai arbitraire pour filtrer les données au port série
}
/////////////////////////////////// HELPERS
/*
imprimer des message d’erreur et arrêter
*/
void error_P (const char * str) {}
PgmPrint ("erreur:") ;
SerialPrint_P(str) ;
sdErrorCheck() ;
while(1) ;
}
/*
imprimer des message d’erreur et en cas d’erreur d’e/s SD
*/
sdErrorCheck(void) Sub {}
Si (! card.errorCode()) retourner ;
PgmPrint ("\r\nSD I/O erreur:") ;
Serial.Print(Card.ErrorCode(), HEX) ;
PgmPrint (",") ;
Serial.println(Card.ErrorData(), HEX) ;
while(1) ;
}
/*
* Lire un fichier et attendre qu’il se terminer
*/
void playcomplete(char *name) {}
playfile(Name) ;
tandis que (wave.isplaying) ;
voir si une erreur est survenue lors de la lecture
sdErrorCheck() ;
}
/*
* Ouvrir et commencer à jouer un fichier WAV
*/
void playfile(char *name) {}
Si (wave.isplaying) {/ / déjà jouer quelque chose, alors arrêtez d’elle !
Wave.Stop() ; Arrête
}
Si (! file.open (racine, nom)) {}
PgmPrint ("Impossible d’ouvrir le fichier") ;
Serial.Print(Name) ;
retour ;
}
Si (! wave.create(file)) {}
PgmPrintln ("pas un valide" WAV") ;
retour ;
}
OK le temps de jouer !
Wave.Play() ;
}