Hallo zusammen,
ich muss für ein Schulprojekt ein Auto programmieren. Wir versuchen im Moment herauszufinden, wie man unseren Code für den Ultraschallsensor mit dem Code für die Motoren verbinden kann, denn unsere aktuelle Version funktioniert nicht wie erwartet. Findet jemand vielleicht den Fehler , den wir im angehängten Code machen, und kann uns weiterhelfen? Das wäre super nett.
#include <IRremote.h>
IRrecv IR(3) ;
int motor1Pin1 = 10; // Pin für Motor 1 Richtung 1
int motor1Pin2 = 11; // Pin für Motor 1 Richtung 2
int motor2Pin1 = 6; // Pin für Motor 2 Richtung 1
int motor2Pin2 = 5; // Pin für Motor 2 Richtung 2
int motorSpeed1 = 150;
int motorSpeed2 = 150;
int trigger = 7;
int echo = 9;
long dauer = 0;
long entfernung = 0;
void setup() {
Serial.begin(9600) ;
pinMode (trigger, OUTPUT) ;
pinMode (echo, INPUT) ;
pinMode (A1, OUTPUT) ;
IR.enablelRIn();
pinMode (motor1Pin1, OUTPUT);
pinMode (motor1Pin2, OUTPUT) ;
pinMode(motor2Pin1, OUTPUT) ;
pinMode (motor2Pin2, OUTPUT) ;
}
void loop() {
if (IR. decode()){
switch (IR.decodedIRData.decodedRawData) {
case 0xE916FF00: // Power 0
// Beide Motoren stoppen
digitalWrite(motor1Pin1, LOW) ;
digitalWrite(motor1Pin2, LOW) ;
digitalWrite(motor2Pin1, LOW) ;
digitalWrite(motor2Pin2, LOW) ;
break;
case 0xBF40FF00: // Vorwärts
// Beide Motoren vorwärts mit maximaler Geschwindigkeit
digitalWrite(motor1Pin1, HIGH) ;
digitalWrite(motor1Pin2, LOW) ;
digitalWrite(motor2Pin1, HIGH) ;
digitalWrite(motor2Pin2, LOW) ;
break;
case 0xBB44FF00: // Rückwärts
// Beide Motoren rückwärts mit maximaler Geschwindigkeit
digitalWrite(motor1Pin1, LOW) ;
digitalWrite(motor1Pin2, HIGH) ;
digitalWrite(motor2Pin1, LOW) ;
digitalWrite(motor2Pin2, HIGH) ;
break ;
case 0xEA15FF00: // Motor Schneller
analogWrite(motor1Pin1, motorSpeed1);
analogWrite(motor2Pin1, motorSpeed1) ;
break;
case 0xF807FF00: //Motor Langsamer
motorspeed1= constrain(motorspeed1 - 10, 0, 255);
motorspeed2= constrain(motorspeed2 - 10, 0, 255);
analogWrite(motor1Pin1, motorSpeed1) ;
analogWrite(motor2Pin1, motorSpeed1) ;
break;
case 0xF30CFF00 : // Auto Dreht sich in die eine richtung
digitalWrite(motor1Pin1, LOW) ;
digitalWrite(motor1Pin2, HIGH) ;
digitalWrite(motor2Pin1, LOW) ;
digitalWrite(motor2Pin2, LOW) ;
break;
case 0xA15EFF00 :// Auto dreht sich in die andere Richtung
digitalWrite(motor1Pin1, LOW) ;
digitalWrite(motor1Pin2, LOW) ;
digitalWrite(motor2Pin1, HIGH) ;
digitalWrite(motor2Pin2, LOW) ;
break;
}
IR.resume () ;
}
digitalWrite(trigger, LOW) ;
delay(5) ;
digitalWrite(trigger, HIGH) ;
delay (10) ;
digitalWrite(trigger, LOW) ;
dauer = pulseIn(echo, HIGH) ;
entfernung = (dauer / 2) * 0.03432;
if (entfernung >= 500 entfernung <= 0) {
Serial.println( "Kein Messwert") ;
} else
Serial. print (entfernung) ;
Serial.println(" cm");
delay (1000) ;
}
if (entfernung==5)// Wenn der Ultraschallsensor eine Entfernung von 5 cm misst
tone (A1,440) ; // gibt der Lautsprecher einen Ton mit 440 Herz
if (entfernung==4)// wenn der Abstand geringer wird wird der Ton höher
tone (A1, 493) ;
if (entfernung==3)
tone (A1,523) ;
if (entfernung==2)
tone (A1,587) ;
if (entfernung==1)
tone (A1,659) ;
if (entfernung==0)// Wenn Entfernung 0cm Motoren stoppen
tone (A1, 698) ;
digitalWrite(motor1Pin1, LOW) ;
digitalWrite(motor1Pin2, LOW) ;
digitalWrite(motor2Pin1, LOW) ;
digitalWrite(motor2Pin2, LOW) ;
if (entfernung>5)
noTone (10) ;
}