argh
ça y est j'ai tout construit
j'ai choisi l'arduino bt en fin de compte
je fais des essais depuis hier mais les piezos capteurs de chocs me donnent du fil à retordre.
schéma :

la vitesse de communication serial ne permet pas une analyse externe du signal, je loupe 3 knocks sur 4
j'ai trouvé deux sortes de codes pour gérer les piezo knock sensors
const int threshold = 100; // threshold value to decide when the detected sound is a knock or not
// these variables will change:
int sensorReading = 0; // variable to store the value read from the sensor pin
int ledState = LOW; // variable used to store the last LED status, to toggle the light
void setup() {
pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT
Serial.begin(9600); // use the serial port
}
void loop() {
// read the sensor and store it in the variable sensorReading:
sensorReading = analogRead(knockSensor);
// if the sensor reading is greater than the threshold:
if (sensorReading >= threshold) {
// toggle the status of the ledPin:
ledState = !ledState;
// update the LED pin itself:
digitalWrite(ledPin, ledState);
// send the string "Knock!" back to the computer, followed by newline
Serial.println("Knock!");
}
delay(100); // delay to avoid overloading the serial port buffer
}
celui ci ne gère pas la vélocité
et
// deal with first piezo, this is kind of a hack
val = analogRead(piezoAPin);
if( val >= PIEZOTHRESHOLD ) {
t=0;
while(analogRead(piezoAPin) >= PIEZOTHRESHOLD/2) {
t++;
}
noteOn(drumchan,note_hihatopen, t*2);
delay(t);
noteOff(drumchan,note_hihatopen,0);
}
http://todbot.com/blog/2006/10/29/spooky-arduino-projects-4-and-musical-arduino/
là il s'agit d'estimer la force de frappe en fonction du temps (t) que met l'onde à redescendre

ce que je trouve peu logique car on aura plutôt une notion de la fréquence que de la vélocité
d'ailleurs dans mes tests c'est vraiment pas convainquant
du coup je suis pour l'instant sur le premier système :
sensorReading_0 = analogRead(piezo_0);
if(sensorReading_0 >= threshold) {
Serial.print("/piezo_0/");
Serial.println(sensorReading_0);
delay(60);
}
mais je crois que mon problème vient surtout d'un manque de sensibilité
sur le duemilanove en ne branchant qu'un piezo avec sa résistance les chocs électriques que j'envoie oscillent généralement entre 1 et 20 (sur 1024) et ça fonctionne (c'est léger parce que je ne tape pas directement le buzzer mais la partie en bois sur laquelle il est collée)
mais sur le bluetooth j'ai un gros buzz (même en débranchant les capteurs de positions) et continuellement des valeurs entre 0 et 10 ce qui m'empêche de réduire le threshold en dessous de 10, du coup très peu de sensibilité
(pourtant en branchant en même temps le piezo à l'entrée de ma table de mix le buzz n'est pas si énorme, à moins qu'il ne soit pas dans les fréquences audibles)
je me demande si il y aurait un méthode pour réduire ce buzz que je n'ai pas sur le duemilanove
(par ex relier la masse qui alimente l'arduino avec celle que sort l'arduino serait une très mauvaise idée ? je m'y connais pas tant en électricité)
merci