Eine vereinfachte Darstellung der H-Brücke findest du hier.

Eine H-Brücke fungiert als Steuerung von Gleichstrom Motoren. Durch die Ansteuerung von bestimmten Schaltern/Transistoren, kann ein DC-Motor umgepolt und somit die Drehrichtung bestimmt werden. Die Verschaltung ist in Form eines H´s realisiert, woher auch der Name stammt. Zusätzlich kann der Motor mit dieser Brücke ebenfalls gebremst und die Geschwindigkeit mittels PWM (=Pulsweitenmodulation) bestimmt werden. Die H-Brücke besteht aus vier Schaltern, die je nach Schalterstellung den Motor in Rechts- oder Linkslauf versetzen.

//Pinbelegung für die H-Brücke

int inc1 = 18;

int inc2 = 19;

int motor = 17;

//Pulsweitenmodulation

const int freq = 30000;

const int resolution = 8;

// Funktion zur Antriebssteuerung ---> mit geringer werdendem Abstand soll der Motor langsamer laufen

void antrieb(int entfernung)

{

  if ((entfernung <= 50) && (entfernung >= 25))

  {

    digitalWrite(inc1, LOW);                                //Laufrichtung einstellen

    digitalWrite(inc2, HIGH);                                //

    ledcWrite(2, 230);                                         // Sendet ein Signal an den Channel 2 mit einem Duty Cyle(Auslastungsgrad) von 230

  }

 

  else if ((entfernung <= 24) && (entfernung >= 5))

  {

    digitalWrite(inc1, LOW);                                //Laufrichtung einstellen

    digitalWrite(inc2, HIGH);                                //

    ledcWrite(2, 200);                                         //Sendet ein Signal an den Channel 2 mit einem Duty Cyle(Auslastungsgrad) von 200

  }

 

  else if (entfernung < 5)

  {

    digitalWrite(inc1, LOW);                                //Laufrichtung einstellen

    digitalWrite(inc2, HIGH);                                //

    ledcWrite(2, 0);                                             // Motor steht

  }

 

  else

  {

    digitalWrite(inc1, LOW);                                //Laufrichtung einstellen

    digitalWrite(inc2, HIGH);

    ledcWrite(2, 255);                                         //Sendet ein Signal an den Channel 2 mit einem Duty Cyle(Auslastungsgrad) von 255

  }

}

void setup()

{

  pinMode(motor, OUTPUT);                  //Legt den Eingangstyp des angegebenen PINs fest

  pinMode(inc1, OUTPUT);                     //Legt den Eingangstyp des angegebenen PINs fest

  pinMode(inc2, OUTPUT);                     //Legt den Eingangstyp des angegebenen PINs fest

  ledcSetup(1, freq, resolution);              // Konfigurieren der Pulsweitenmodulation für Channel Sound

  ledcAttachPin(passiver_buzzer, 1);      //passiver Buzzer mit PWM-Channel verbinden

 

  ledcSetup(2, freq, resolution);              //Konfigurieren der Pulsweitenmodulation für Channel Antrieb

  ledcAttachPin(motor, 2);                      //Motor mit dem PWM-Channel verbinden

}

void loop()

{

    antrieb(entfernung);                            //Aufruf der Funktion zum Antrieb des Motors

  }

}