Das ich auf Fragen nciht antworte, ist dem geschuldet, dass es mit einmal echt viel wurde und dann schnell zur Überforderung führt. Das sind dann die Momente wo ich dann erstmal zu was anderem wechsel. Normalerweise.
Ich bin immernoch an meiner Taschenlampen-Kontrolle.
#include <AFMotor.h>
#include <Arduino.h>
int star = 0;
constexpr uint8_t l_ldr = A2;
constexpr uint8_t r_ldr = A3;
AF_DCMotor motor1(1); // Create motor #1 using M1 connector
AF_DCMotor motor2(2); // Create motor #2 using M2 connector
AF_DCMotor motor3(3); // Create motor #3 using M3 connector
AF_DCMotor motor4(4); // Create motor #4 using M4 connector
int links = 0;
int rechts = 0;
char command;
void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud rate
motor1.setSpeed(150); // Set initial motor speeds
motor2.setSpeed(150);
motor3.setSpeed(150);
motor4.setSpeed(150);
}
void loop() {
connection();
taschenlampe_data();
}
void connection() {
if (Serial.available() > 0) {
command = Serial.read();
Serial.println(command); // Read the incoming command
switch (command) {
case 'F': forward(); break;
case 'B': backward(); break;
case 'L': turnLeft(); break;
case 'R': turnRight(); break;
case 'S': stop(); break;
case 'X': taschenlampe(); break;
}
}
}
void taschenlampe_data() {
links = analogRead(l_ldr);
Serial.println(l_ldr);
rechts = analogRead(r_ldr);
Serial.println(r_ldr);
}
void taschenlampe() {
if (links < 300 && rechts > 300) {
star = 1;
}
if (links > 300 && rechts > 300) {
star = 2;
}
if (rechts < 300 && links > 300) {
star = 3;
}
if (rechts < 300 && links < 300) {
star = 4;
}
forward();
switch (star) {
case 1:
turnLeft();
star = 0;
break;
case 2:
forward();
star = 0;
break;
case 3:
turnRight();
star = 0;
break;
case 4:
stop();
star = 0;
break;
default:
stop();
star = 0;
break;
}
return;
}
void forward() {
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
}
void backward() {
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
}
void turnLeft() {
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
}
void turnRight() {
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
}
void stop() {
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
}
Das fahren funktioniert einwandfrei. Garkeine Probleme, aber dennoch bekomme ich von den 2 LDR folgendes im Monitor angezeigt
13:26:54.179 -> 16
13:26:54.179 -> 17
13:26:54.179 -> 16
13:26:54.179 -> 17
13:26:54.179 -> 16
13:26:54.179 -> 17
13:26:54.179 -> 16
13:26:54.179 -> 17
13:26:54.212 -> 16
13:26:54.212 -> 17
13:26:54.212 -> 16
13:26:54.212 -> 17
13:26:54.212 -> 16
13:26:54.212 -> 17
13:26:54.212 -> 16
13:26:54.212 -> 17
13:26:54.245 -> 16
13:26:54.245 -> 17
13:26:54.245 -> 16
13:26:54.245 -> 17
13:26:54.245 -> 16
13:26:54.245 -> 17
13:26:54.245 -> 16
13:26:54.245 -> 17
13:26:54.279 -> 16
13:26:54.279 -> 17
13:26:54.279 -> 16
13:26:54.279 -> 17
13:26:54.279 -> 16
13:26:54.279 -> 17
13:26:54.279 -> 16
13:26:54.279 -> 17
13:26:54.312 -> 16
13:26:54.312 -> 17
13:26:54.312 -> 16
13:26:54.312 -> 17
13:26:54.312 -> 16
13:26:54.312 -> 17
13:26:54.312 -> 16
13:26:54.312 -> 17
13:26:54.346 -> 16
Die beiden sind funktionstüchtig, habe ich NOCHMAL beim debugging herausgefunden.
Sieht zufällig jemand GROBE Fehler, die die Sensoren daran hindern die richtigen Daten auszugeben?