So,
anhand des Sketches vermute ich mal daß das auf einem Due oder Mega 2560 läuft.
Auf einem Uno oder Nano funktioniert das nicht mit PWM und diesen PIN's.
Code:
PWM Pins
Nano: 3; 5; 6; 9; 10; 11
Uno: 3; 5; 6; 9; 10; 11
Due: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13
Mega 2560: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13
Code:
int IN1 = 9;
int IN2 = 8;
int IN3 = 7;
int IN4 = 6;
- - - Aktualisiert - - -
Dann kann der Motor nur mit 100% laufen,
Code:
void Forward() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
Serial.print("Motor 1 Forward");
Serial.println();
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
Serial.println("Motor 2 Forward");
Serial.println();
}
Für PWM sollte es aber ein
Code:
analogWrite(pin, value)
sein.
https://www.arduino.cc/en/Tutorial/PWM
https://www.arduino.cc/reference/en/...o/analogwrite/
- - - Aktualisiert - - -
So, das ist jetzt mit der heißen Nadel gestrickt.
Habe hier keine Hardware auf dem ich es laufen lassen kann.
Lässt sich aber fehlerfrei comilieren.
Code:
/*
PWM Pins
Nano: 3; 5; 6; 9; 10; 11
Uno: 3; 5; 6; 9; 10; 11
Due: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13
Mega 2560: 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13
*/
int IN1 = 9;
int IN2 = 8;
int IN3 = 7;
int IN4 = 6;
int speed;
void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600);
Serial.println("Enter number for control option:");
Serial.println("1. FORWARD");
Serial.println("2. REVERSE");
Serial.println("3. STOP");
Serial.println();
}
void loop()
{
for (int speed=0; speed <=255; speed++){
Forward(speed);
delay(10);
}
for (int speed=255; speed >=0; speed--){
Forward(speed);
delay(10);
}
for (int speed=0; speed <=255; speed++){
Backward(speed);
delay(10);
}
for (int speed=255; speed >=0; speed--){
Backward(speed);
delay(10);
}
for (int speed=0; speed <=255; speed++){
Rotateleft(speed);
delay(10);
}
for (int speed=255; speed >=0; speed--){
Rotateleft(speed);
delay(10);
}
for (int speed=0; speed <=255; speed++){
Rotateright(speed);
delay(10);
}
for (int speed=255; speed >=0; speed--){
Rotateright(speed);
delay(10);
}
}
void Forward(int speed){
analogWrite(IN1, speed);
digitalWrite(IN2, LOW);
Serial.print("Motor 1 Forward");
Serial.println();
analogWrite(IN3, speed);
digitalWrite(IN4, LOW);
Serial.println("Motor 2 Forward");
Serial.println();
}
void Backward(int speed){
digitalWrite(IN1, LOW);
analogWrite(IN2, speed);
Serial.print("Motor 1 Backward");
Serial.println();
digitalWrite(IN3, LOW);
analogWrite(IN4, speed);
Serial.println("Motor 2 Backward");
Serial.println();
}
void Rotateleft(int speed){
digitalWrite(IN1, LOW);
analogWrite(IN2, speed);
Serial.print("Motor 1 Backward");
Serial.println();
analogWrite(IN3, speed);
digitalWrite(IN4, LOW);
Serial.println("Motor 2 Forward");
Serial.println();
}
void Rotateright(int speed){
analogWrite(IN1, speed);
digitalWrite(IN2, LOW);
Serial.print("Motor 1 Forward");
Serial.println();
digitalWrite(IN3, LOW);
analogWrite(IN4, speed);
Serial.println("Motor 2 Backward");
Serial.println();
}
void Stop(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
Serial.print("Motor 1 Stop");
Serial.println();
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
Serial.println("Motor 2 Stop");
Serial.println();
}
Wenn ich keinen Fehler drin habe, müssten sich die Räder einmal vorwärts drehen.
Und zwar von Stillstand bis zur Maximaldrehzahl und wieder bis zum Stillstand.
Dann einmal rückwärts.
Einmal Gegenläufig für drehen auf der Stelle, linksrum und einmal rechtsrum.
Lesezeichen