Hallo Leute,
ich bin derzeit an einem Code um mit einem esp32 und einem Motordriver 2 DC Motoren zu steuern.
Folgend mein Code:
#include <Servo.h>
// Motor 1 Links
int motor1Pin1 = 27;
int motor1Pin2 = 26;
int enable1Pin = 14;
// Motor 2 Rechts
int motor2Pin1 = 17;
int motor2Pin2 = 16;
int enable2Pin = 19;
// Schnelligkeits Grundeinstellungen Motor 1
const int freq1 = 30000;
const int pwmChannel1 = 0;
const int resolution1 = 8;
int dutyCycle1 = 200; //is für geschwindigkeit Grundeinstellung darf zwischen 0 und 255 sein aber unter 200 brummt es
// Schnelligkeits Grundeinstellungen Motor 1
const int freq2 = 30000;
const int pwmChannel2 = 0;
const int resolution2 = 8;
int dutyCycle2 = 200; //is für geschwindigkeit Grundeinstellung darf zwischen 0 und 255 sein aber unter 200 brummt es
void setup() {
// PINS als OUTPUT definieren
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enable2Pin, OUTPUT);
// Grundlegende Geschwindigkeitseinstellungen
ledcSetup1(pwmChannel1, freq1, resolution1);
ledcSetup2(pwmChannel2, freq2, resolution2);
// Kanal wird zugewiesen an GPIO um diesen zu kontrollieren
ledcAttachPin1(enable1Pin, pwmChannel1);
ledcAttachPin2(enable2Pin, pwmChannel2);
Serial.begin(115200);
// testing
Serial.print("Motor Test...");
}
void loop() {
// Vorwärts Bewegung
Serial.println("Vorwärts");
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
delay(2000);
// Motor Stoppen
Serial.println("Motor stopped");
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
delay(1000);
// Move DC motor backwards at maximum speed
Serial.println("Moving Backwards");
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
delay(2000);
// Motor Stoppen
Serial.println("Motor stopped");
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
delay(1000);
// Move DC motor forward with increasing speed
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
while (dutyCycle1 <= 255){
ledcWrite1(pwmChannel1, dutyCycle1);
Serial.print("Forward with duty cycle: ");
Serial.println(dutyCycle1);
dutyCycle1 = dutyCycle1 + 5;
delay(500);
}
while (dutyCycle2 <= 255){
ledcWrite1(pwmChannel2, dutyCycle2);
Serial.print("Forward with duty cycle: ");
Serial.println(dutyCycle2);
dutyCycle2 = dutyCycle2 + 5;
delay(500);
}
dutyCycle1 = 200;
dutyCycle2 = 200;
}
Aber der Code funktioniert nicht.
Was habe ich falsch gemacht? die 2 und 1 einzugeben war falsch oder?
Aber wie weise ich den Motoren dann die einzelnen Geschwindigkeiten zu?
Dies will ich um links und rechts zu steuern.
Ich danke euch vielmals für eure Hilfe.
Viele Grüße
Julian