Go Down

Topic: Problème capteur piezo  (Read 622 times) previous topic - next topic

yadeuz

Salut la compagnie,

J'aimerais faire un drumkit midi comme j'ai vu que ça se faisait beaucoups sur youtube.
Avant de me lancer dans le gros projet je teste juste un piezo ave ce code (voir plus bas) afin de tester un peu le fonctionnement.

Le problème est qu'il ne m'affiche pas 1 seul "knock" quand je touche le piezo mais en déclenche toute une série. J'ai fait afficher (sensorValue) au lieu de ("knock") et les valeurs descendent après "l'impact" jusqu'à atteindre le seuil (treshold) mais très lentement (ca prend facile 30 secondes) comme si le piezo n'envoyait pas tout le courant en même temps.

Au niveau des connections je fais le plus simple possible avec une résistance d'un Mohm.
J'ai fait mes connections avec des cables à plusieurs fils (en attendant des jumpers) et mes soudures ne sont pas parfaites est-ce que ca viendrait de là? Merci d'avance j'espère que c'est clair.

 /* Knock Sensor

   This sketch reads a piezo element to detect a knocking sound.
   It reads an analog pin and compares the result to a set threshold.
   If the result is greater than the threshold, it writes
   "knock" to the serial port, and toggles the LED on pin 13.

   The circuit:
    * + connection of the piezo attached to analog in 0
    * - connection of the piezo attached to ground
    * 1-megohm resistor attached from analog in 0 to ground

   http://www.arduino.cc/en/Tutorial/Knock

   created 25 Mar 2007
   by David Cuartielles <http://www.0j0.org>
   modified 30 Aug 2011
   by Tom Igoe

   This example code is in the public domain.

 */


// these constants won't change:
const int ledPin = 13;      // led connected to digital pin 13
const int knockSensor = A0; // the piezo is connected to analog pin 0
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
}

Artouste

Salut la compagnie,

J'aimerais faire un drumkit midi comme j'ai vu que ça se faisait beaucoups sur youtube.
Avant de me lancer dans le gros projet je teste juste un piezo ave ce code (voir plus bas) afin de tester un peu le fonctionnement.

Le problème est qu'il ne m'affiche pas 1 seul "knock" quand je touche le piezo mais en déclenche toute une série.

bonsoir
quelle valeur de R en // des connections du piezo ?

yadeuz

https://ex0ns.me/images/Arduino/Article2/BuzzerMontage.png

Je ne comprends pas la question je suis novice désolé. J'ai fait comme sur l'image mais sur l'entrée analogique. Avec une résistance d'un Mohm

Artouste

https://ex0ns.me/images/Arduino/Article2/BuzzerMontage.png

Je ne comprends pas la question je suis novice désolé. J'ai fait comme sur l'image mais sur l'entrée analogique. Avec une résistance d'un Mohm
là ta r est en série pas en // :smiley-mr-green:

yadeuz

Ah et du coups ça affecte le résultat final?

yadeuz

Donc j'ai monté tout ça en parallèle et ça a l'air d'avoir marché. Merci! J'ai donc pu tester un de mes "pads" et c'est assez impressionnant la sensibilité et surtout la réactivité qu'il a (j'avais vu plein de projets ou le retard est flagrant et dérangeant).

Go Up