Hi,
ich bastel gerade an einem 2WD-Robot-Car Bausatz rum.
Ich gebe zur Motorsteuerung 2 gleich PWM-Werte per analogWrite auf Pin 10 und Pin 5 aus.
Dabei messe ich an Pin10 die korrekte PWM-Frequenz von 490Hz an Pin5 jedoch eine Frequenz von 975Hz.
Warum kann ich nicht verstehen.
Den Wert für die Pulsbreite stelle ich z.Z. mit einem Poti ein.
Der soll aber noch von der BAtteriespannung abgeleitet werden.
// Test der Smart-Robot-Car Motorplatine: SRC-Test_L298N-motSpeed-LP
// aus PDF: Tutorial - L298N Dual Motor Controller Module 2A and Arduino
//
// ********************************************************
// motor one Kabelfarben
int enA = 10; // bl blau
int in1 = 9; // gn grün
int in2 = 8; // gb gelb
// Setup DC Motor B (front and rear) pins
int in3 = 7;
int in4 = 6;
int enB = 5;
int battPin = 2; // Halbe Batteriespannung
int battVal = 0; // Variable zum Speichern
int motSpeed = 100; // PWM Ausgabe für Geschwindigkeit
void setup()
{
// set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode (in3, OUTPUT);
pinMode (in4, OUTPUT);
pinMode (enB, OUTPUT);
Serial.begin(9600);
}
void loop()
{
// liest und gibt BatterieSpannung aus (Werte 0-1023)
battVal = analogRead(battPin); // lies Spannung
Serial.print(battVal); //Ausgabe auf Monitor
Serial.print(" -> "); //Ausgabe auf Monitor
battVal = battVal/4; //oder battVal = map(battVal, 0, 1023, 0, 255);
Serial.print(battVal); //Ausgabe auf Monitor
Serial.print(" -> "); //Ausgabe auf Monitor
motSpeed = 255-battVal; //Wert invertieren
Serial.print(motSpeed); //Ausgabe auf Monitor
Serial.print(" -> "); //Ausgabe auf Monitor
// turn on motor B
digitalWrite(in4, HIGH);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
//
analogWrite(enA, motSpeed);
Serial.print(motSpeed);
Serial.print(" -> "); //Ausgabe auf Monitor
analogWrite(enB, motSpeed);
Serial.println(motSpeed);
}