LBotics.at

Der Abstandssensor wird mit einer Spannung von 5V versorgt und der Ausgangspin an einen der analogen Eingänge des Arduino UNO Boards angeschlossen.

Anschluss eines Sharp Abstandssensors an den analogen Eingang Pin A0

Programmierbeispiel

Mit dem folgenden Programmcode bewegt sich der Roboter so lange vorwärts, bis der Wert des Abstandssensors eine vorgegebene Grenze überschreitet. Dann bleibt der Roboter 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()
{
int AnalogWert = analogRead(A0);
Motor_Port1->setSpeed(100);
Motor_Port1->run(FORWARD);
Motor_Port2->setSpeed(100);
Motor_Port2->run(FORWARD);
if (AnalogWert>800)
{
Motor_Port1->run(RELEASE);
Motor_Port2->run(RELEASE);
}
}
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.

14: analogRead(pin)

Diese Funktion dient zum Auslesen des Werts eines analogen Eingangs.

pin: A0, …, A5

return: 0, …, 1023

15: Motor_Port1->setSpeed(100);

Mit der Funktion setSpeed(speed) wird die Geschwindigkeit bzw. die Pulsbreite des PWM-Signals festgelegt.

speed: 0 … 255

16: Motor_Port1->run(FORWARD);

Die Funktion run(mode) steuert die Drehbewegung des Motors.

mode: FORWARD, BACKWARD, RELEASE