Ultrasoon sensoren met LEDs samenwerken

Hey iedereen, voor een schoolproject moet ik een autonoom voertuig door een doolhof laten rijden.
Ik gebruik 3 ultrasoon sensoren (HC-SR04) en op dit moment heb ik niet twee DC motoren ter beschikking dus gebruik ik twee LEDs om de motoren na te bootsen.

Ik heb de volgende eisen gesteld
Sensor 1: Linkerhoek
Sensor 2: Voorkant
Sensor 3: Rechterhoek

Als sensor 1 een signaal oppikt: Motor 1 Aan , Motor 2 Uit, zodat de auto naar rechts gaat.
Als sensor 2 een signaal oppikt: Motor 1 Uit, Motor 2 Aan, zodat de auto naar links gaat.
Als sensor 3 een signaal oppikt: Motor 1 Uit, Motor 2 Aan, zodat de auto naar links gaat.

Ik ben geen ster in coderen en kom nu dus tot de conclusie dat de codering de sensoren in de weg zit.

Dit is de codering:

#include <AFMotor.h>
#define trigPin 11
#define echoPin 12
#define trigPin2 7
#define echoPin2 8
#define trigPin3 3
#define echoPin3 4
AF_DCMotor motor3(3,MOTOR12_64KHZ);
AF_DCMotor motor4(4,MOTOR12_64KHZ);
#define ledPin2 13
#define ledPin 2

void setup(){
Serial.begin(9600);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
pinMode(trigPin2,OUTPUT);
pinMode(echoPin2,INPUT);
pinMode(trigPin3,OUTPUT);
pinMode(echoPin3,INPUT);
pinMode(ledPin,OUTPUT);
pinMode(ledPin2,OUTPUT);
motor3.setSpeed(105);
motor4.setSpeed(105);
}
void loop(){
long duration,afstand1;
digitalWrite(trigPin,HIGH);
delayMicroseconds(2);
digitalWrite(trigPin,LOW);
duration = pulseIn (echoPin,HIGH);
afstand1 = (duration/2) / 29.1;
Serial.print("afstand 1 : ");
Serial.print(afstand1);
Serial.print(" cm ");
Serial.println();

long duration2,afstand2;
digitalWrite(trigPin2,HIGH);
delayMicroseconds(2);
digitalWrite(trigPin2,LOW);
duration = pulseIn(echoPin2,HIGH);
afstand2 = (duration/2) / 29.1;
Serial.print("afstand 2 : ");
Serial.print(afstand2);
Serial.print(" cm ");
Serial.println();

long duration3,afstand3;
digitalWrite(trigPin3,HIGH);
delayMicroseconds(2);
digitalWrite(trigPin3,LOW);
duration = pulseIn(echoPin3,HIGH);
afstand3 = (duration/2) / 29.1;
Serial.print("afstand 3 : ");
Serial.print(afstand3);
Serial.print(" cm ");
Serial.println();

if (afstand1 < 5){
digitalWrite(ledPin,HIGH);
digitalWrite(ledPin2,LOW);
}
else{
digitalWrite(ledPin,LOW);
digitalWrite(ledPin2,LOW);

}
if (afstand2 < 5){
digitalWrite(ledPin,HIGH);
digitalWrite(ledPin2,LOW);

}
else{
digitalWrite(ledPin,LOW);
digitalWrite(ledPin2,LOW);

}
if (afstand3 < 5){
digitalWrite(ledPin,LOW);
digitalWrite(ledPin2,HIGH);

}
else{
digitalWrite(ledPin,LOW);
digitalWrite(ledPin2,LOW);
}
}

Het probleem zit bij Sensor 1 en 2, de codering spreekt elkaar volgens mij tegen, want sensor 3 brand fel bij een signaal, maar 1 en 2 knipperen heel snel.

Reacties zijn zeer welkom! Thanks in advance.

Hoi.

Codes dus tussen [code] [/code] tags.

Ben je ook nog niks wijzer geworden van dezelfde vraag in het Engels ?

Heb je wel eens van //commentaar regels gehoord ?
Schrijf eens in de code wat (je denkt dat) er daar gebeurt, of wat jij wil dat er moet gebeuren.
Dat gaat je helpen je eigen code te controleren.
Moet je natuurlijk wel zorgen dat bij wijzigingen in de code, ook dat commentaar word bijgehouden.

Je stuurt waardes naar de serial port, bekijk je die ook ?

Die code die je daar hebt neergezet kijkt een voor een of er aan bepaalde voorwaarden word voldaan.
Als er aan voorwaarde A word, voldaan, dan word meteen handeling a uitgevoerd, en een eventuele gaande uitvoering van andere handelingen word dan gestopt.
Vervolgens word voorwaarde B getoetst met dezelfde gevolgen.

Jij gaat er schijnbaar van uit dat je sensoren altijd perfect werken.
En ook dat er niet aan 2 voorwaarden tegelijk kan worden voldaan.

Wat als je eerst alle sensorwaardes beoordeelt, en pas daarna de motoren (LEDs) gaat aansturen ?
Want das niet wat je nu doet (maar mogelijk wel denkt dat je doet).
Heel toevallig dat LED 3 fel brandt, en de anderen maar zwak, of misschien toch niet ??

Uit de vragen in dit antwoord (en diens antwoorden) kun je nog wel wat verbeterpunten gaan vinden hoor.
En voor het geval je dacht dat dit niet zo was, je code bevat blokkerende code.
Deze blokkerende code veroorzaakt het optisch vastgestelde probleem.
Zou de code niet blokkerend zijn, dan had je een iets ander gedrag gezien.

ik zie geen fout in je programma hoor,
zet er eens even een delay in van 1000 om te testen of het niet aan de snelheid van je programma ligt.
want nu gaat het allemaal wel erg snel, en die serials hebben ook tijd nodig.