Bonjour,
J'ai réalisé un avertisseur sonore couplé à un capteur à ultrasons de type HC-SR04 à l'aide d'une carte Arduino et d'un buzzer piézoélectrique. Je pense que j'ai un problème dans le programme que j'ai entré dans la carte car le buzzer émet des sons sans prendre en compte le capteur à ultrasons. Je l'ai vérifié de nombreuses fois mais je ne vois pas ce qui cloche. Voici le programme :
Est-ce que vous pourriez me dire ce qui peut être à l'origine du dysfonctionnement ? Merci d'avance.Code:int BUZZERPIN = 11; int ECHOPIN = 8; int TRIGPIN = 7; int distanceMin = 20; // en cm void setup() { Serial.begin(9600); pinMode(BUZZERPIN, OUTPUT); pinMode(ECHOPIN,INPUT); pinMode(TRIGPIN,INPUT); } //Boucle principale : void loop() { int distanceObstacle = Distance(); Serial.println(distanceObstacle); if (distanceObstacle < distanceMin) { playNote('c', 10); } } //Calcul de la distance de l’objet au capteur : float Distance () { digitalWrite(TRIGPIN, LOW); delayMicroseconds(2); digitalWrite(TRIGPIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGPIN, LOW); float distance = pulseIn(ECHOPIN, HIGH); distance= distance/58; return(distance); } //Déclenchement et choix de fréquence du signal sonore du buzzer void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(BUZZERPIN, HIGH); delayMicroseconds(tone); digitalWrite(BUZZERPIN, LOW); delayMicroseconds(tone); } } void playNote(char note, int duration) { char names[ ] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; // Do Ré Mi Fa Sol La Si Do int tones[ ] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // Demi-périodes en ms for (int i = 0; i < 8; i++) { if (names[i] == note) { playTone(tones[i], duration); } } }
-----