Die H-Brücke hat die Aufgabe, den Motor in seinen zwei Drehrichtungen anzusteuern. Je nachdem welches Signal an den zwei Pins für die Drehrichtung anliegt, wird die Drehrichtung des Motors bestimmt. 


Belegung der Pins eines Motors
      Pin 1      
      Pin 2     
      Drehung Motor      
LOW LOW Keine Drehung 
HIGH LOW Drehrichtung rechts 
LOW HIGH Drehrichtung links 
HIGH HIGH Keine Drehung 


Damit die Drehung des Motors ausgeführt wird, muss gleichzeitig auch eine Ansteuerung des Freigabepins erfolgen. Diese Ansteuerung kann entweder mit einem permanenten HIGH-Signal erfolgen oder durch ein PWM- Signal. Zusätzlich wird für das Betreiben des Motors eine Spannungsquelle in Form einer 9V- Batterie benötigt. Diese liefert den benötigten Strom zum Betreiben des Motors, da die Stromquelle in Form des Mikrokontrollers nicht die benötigte Strommenge erbringen kann.


Hier (Datei "Vorlage_L298N.ino") befindet sich ein Beispiel für die Ansteuerung des Motortreibers:


// Motortreiber L298N
#define MotV 27
#define MotR 26
#define MotEna 12

//PWM Motortreiber
int Freq = 30000;
int Res = 8;
int PwmChannelMotEna = 2;
int DutyCycleMotEna = 0;                                                                  // MaximalWert: 250; Minimalwet 160;
int DutyCycleNull = 0;

void setup() {
//L298N
pinMode (MotV     , OUTPUT);                                                              // festlegen des Pins am L298N als Ausgang
pinMode (MotR     , OUTPUT);                                                              // festlegen des Pins am L298N als Ausgang
pinMode (MotEna   , OUTPUT);                                                              // festlegen des Pins am L298N als Ausgang

//PWM
ledcSetup (PwmChannelMotEna, Freq, Res);                                                  // PWM-Kanal Einstellung
ledcAttachPin (MotEna, PwmChannelMotEna);                                                 // Definition des PWM-Kanals auf den Pin
}

void loop() {
    digitalWrite (MotV , LOW);                                                            // Schreiben der Drehrichtung des Motors
    digitalWrite (MotR , LOW);                                                            // Schreiben der Drehrichtung des Motors
    DutyCycleMotEna = 200;                                                                //
    digitalWrite (MotV , HIGH);                                                           // Schreiben der Drehrichtung des Motors
    digitalWrite (MotR , LOW );
    ledcWrite (PwmChannelMotEna, DutyCycleMotEna);                                        // Schreiben des Wertes für die Pwm Ausgabe in den Ausgang
    delay (200);
    ledcWrite (PwmChannelMotEna, DutyCycleNull);                                          // Schreiben des Wertes für die Pwm Ausgabe in den Ausgang
    delay(100);
    digitalWrite (MotV , LOW);                                                            // Schreiben der Drehrichtung des Motors
    digitalWrite (MotR , HIGH );
    ledcWrite (PwmChannelMotEna, DutyCycleMotEna);                                        // Schreiben des Wertes für die Pwm Ausgabe in den Ausgang
    delay(200);
    ledcWrite (PwmChannelMotEna, DutyCycleNull);                                          // Schreiben des Wertes für die Pwm Ausgabe in den Ausgang
    digitalWrite (MotV , LOW);                                                            // Schreiben der Drehrichtung des Motors
    digitalWrite (MotR , LOW);                                                            // Schreiben der Drehrichtung des Motors

}