Bonjour à tous
content d'être parmi vous et découvrir le mode de l'arduino.
pour tenter d'apprendre un peu seul dans mon coin j'ai tenté un test de feu de départ de course avec des leds rgb et un capteur ultrason
mon idée était de déclencher une séquence led si un véhicule était détecté dans les 20 cm du capteur ultrason cependant cela fonctionne sur tinkercad mais en réel sur mon nano la séquence tourne en boucle comme si le capteur détecter constamment quelque chose.
je suppose donc que le code pour le capteur ultrason HC-SR04 doit avoir un soucis mais je comprends vraiment pas tout seul la depuis plusieurs semaines
quelqu'un saurait il m'aider et pourrais jeter une coup d'oeil à ce code
peut être un truc évident pour un expert ![]()
// C++ code
//
int test = 0;
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // Clear the trigger
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
// Reads the echo pin, and returns the sound wave travel time in microseconds
return pulseIn(echoPin, HIGH);
}
void setup()
{
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(5, OUTPUT);
}
void loop()
{
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(5, HIGH);
if (0.01723 * readUltrasonicDistance(2, 3) <= 20) {
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(5000); // Wait for 5000 millisecond(s)
digitalWrite(11, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(8, LOW);
digitalWrite(7, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(7, LOW);
digitalWrite(4, HIGH);
delay(5000); // Wait for 5000 millisecond(s)
digitalWrite(4, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
} else {
digitalWrite(5, HIGH);
}
}
