Die Steuerung der vier Motor-Ports erfolgt über ein Objekt aus der Adafruit-Motor-Shield-V2-Library.
Programmierbeispiel
Mit diesem Programm fährt der Roboter abwechselnd zwei Sekunden vorwärts und bleibt dann für zwei Sekunden stehen.
#include <Adafruit_RGBLCDShield.h>
#include <Adafruit_MotorShield.h>
Adafruit_MotorShield MotorShield = Adafruit_MotorShield();
Adafruit_DCMotor *Motor_Port1 = MotorShield.getMotor(1);
Adafruit_DCMotor *Motor_Port2 = MotorShield.getMotor(2);
void setup()
{
MotorShield.begin();
}
void loop()
{
Motor_Port1->setSpeed(150);
Motor_Port1->run(FORWARD);
Motor_Port2->setSpeed(150);
Motor_Port2->run(FORWARD);
delay(2000);
Motor_Port1->run(RELEASE);
Motor_Port2->run(RELEASE);
delay(2000);
}
Erklärungen zu diesem Programmierbeispiel
1: #include <Adafruit_MotorShield.h>
2: #include <Adafruit_RGBLCDShield.h>
Einbinden der benötigten Header-Dateien.
4: Adafruit_MotorShield MotorShield = Adafruit_MotorShield();
Zunächst wird das Objekt MotorShield vom Typ Adafruit_MotorShield erzeugt.
5: Adafruit_DCMotor *Motor_Port1 = MotorShield.getMotor(1);
Über den Pointer Motor_Port1 wird in der Folge der Motor, der an Port 1 angeschlossen ist, angesteuert.
9: MotorShield.begin();
Zu Beginn des Programms muss das Objekt MotorShield initialisiert werden.
13: Motor_Port1->setSpeed(150);
Mit der Funktion setSpeed(speed) wird die Geschwindigkeit bzw. die Pulsbreite des PWM-Signals festgelegt.
speed: 0 … 255
14: Motor_Port1->run(FORWARD);
Die Funktion run(mode) steuert die Drehbewegung des Motors.
mode: FORWARD, BACKWARD, RELEASE