Aktuell baue ich ein Carrera Auto was autonom fahren soll. Dafür benutze ich einen DC Motor und einen Lichtsensor der bei reflektierenden Klebestreifen reagieren soll. Mit nur einem Lichtsensor hat das auch geklappt. Das Auto ist so lange top speed gefahren bis der Lichtsensor einen Klebestreifen erfasst hat, wodurch das Auto dann gebremst hat. Um das ganze zu erweitern habe ich einen zweiten Lichtsensor drangebaut. Der Plan ist, dass das Auto ohne Klebestreifen eine Geschwindigkeit hält, mit der es durch die Kurven kommt. Wenn der zweite Lichtsensor einen Klebestreifen erfasst, soll das Auto auf Höchstgeschwindigkeit kommen, wobei der erste Sensor immernoch das Auto zum bremsen bringt.
Aktuell funktioniert jedoch garnichts. Mit dem Code wo der erste Sensor funktioniert hat, reagiert das Auto nicht mehr so wie es soll. Wenn ich den Code so umänder, dass auch der zweite Sensor erfasst werden sollte, ändert sich nichts. Das Auto macht einfach was es will.
Hier einmal der Code wo der erste Sensor funktioniert hat:
//Motor
const int motorPin1 = 10;
const int motorPin2 = 9;
const int LichtsensorPin = A0;
int VMax = 255;
//Werte vom Sensor
int ReferenzWert = 0;
void setup() {
Serial.begin(9600);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(LichtsensorPin, INPUT);
ReferenzWert = analogRead(LichtsensorPin);
Serial.println(ReferenzWert);
}
void loop() {
analogWrite(motorPin1, VMax);
ReferenzWert = analogRead(LichtsensorPin);
if(ReferenzWert < 300) {
VMax = 169;
}
else {
VMax = 0;
}
delay(100);
}
Hier der Code mit beiden Sensoren:
//Anschlüsse
const int motorPin1 = 10;
const int motorPin2 = 9;
const int LichtsensorPin1 = A0;
const int LichtsensorPin2= A1;
//Motor
int VMax = 255;
//Lichtsensor
int LichtWert1;
int LichtWert2;
void setup() {
Serial.begin(9600);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(LichtsensorPin1, INPUT);
pinMode(LichtsensorPin2, INPUT);
}
void loop() {
LichtWert1 = analogRead(LichtsensorPin1);
LichtWert2 = analogRead(LichtsensorPin2);
if(LichtWert1 < 300) {
analogWrite(motorPin1, VMax);
VMax = 169;
}
else {
analogWrite(motorPin1, VMax);
VMax = 0;
}
do {
analogWrite(motorPin1, VMax);
VMax = 255;
} while (LichtWert2 > 300);
delay(100);
}