12. Übung: Motor ansteuern#

../_images/12-motor-ansteuern.png
 1// Definiere Pin-Verbindungen
 2const int ENA = 9; // Enable-Pin fUEr Motor A (PWM)
 3const int IN1 = 8; // Steuer-Pin 1 fUEr Motor A
 4const int IN2 = 7; // Steuer-Pin 2 fUEr Motor A
 5
 6// Definiere Konstanten fUEr die Motordrehrichtung
 7const int VORWAERTS = 1;
 8const int RUECKWAERTS = -1;
 9const int STOPP = 0;
10
11void setup() {
12    // Setze alle Motorsteuerungs-Pins auf Ausgang
13    pinMode(ENA, OUTPUT);
14    pinMode(IN1, OUTPUT);
15    pinMode(IN2, OUTPUT);
16}
17
18void loop() {
19    // Drehe den Motor im Uhrzeigersinn mit halber Geschwindigkeit
20    setMotor(VORWAERTS, 128); // Richtung VORWAERTS, Geschwindigkeit 128 von 255
21    delay(2000);             // Laufen fUEr 2 Sekunden
22
23    // Stoppe den Motor
24    setMotor(STOPP, 0);
25    delay(1000);             // Stoppe fUEr 1 Sekunde
26
27    // Drehe den Motor gegen den Uhrzeigersinn mit viertel Geschwindigkeit
28    setMotor(RUECKWAERTS, 64); // Richtung RUECKWAERTS, Geschwindigkeit 64 von 255
29    delay(2000);             // Laufen fUEr 2 Sekunden
30
31    // Stoppe den Motor
32    setMotor(STOPP, 0);
33    delay(1000);             // Stoppe fUEr 1 Sekunde
34
35    // Drehe den Motor im Uhrzeigersinn mit voller Geschwindigkeit
36    setMotor(VORWAERTS, 255); // Richtung VORWAERTS, Geschwindigkeit 255 von 255
37    delay(2000);             // Laufen fUEr 2 Sekunden
38
39    // Stoppe den Motor
40    setMotor(STOPP, 0);
41    delay(1000);             // Stoppe fUEr 1 Sekunde
42}
43
44// Funktion zur Einstellung der Motordrehrichtung und -geschwindigkeit
45void setMotor(int richtung, int geschwindigkeit) {
46    if (richtung == VORWAERTS) {
47        digitalWrite(IN2, LOW);
48        digitalWrite(IN1, HIGH);
49    } else if (richtung == RUECKWAERTS) {
50        digitalWrite(IN1, LOW);
51        digitalWrite(IN2, HIGH);
52    } else { // STOPP oder anderer Wert
53        digitalWrite(IN1, LOW);
54        digitalWrite(IN2, LOW);
55    }
56    analogWrite(ENA, geschwindigkeit);
57}