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.