Arduino Projekte mit Tinkerbots bauen - Motor Bibliothek

Motor

Mit dem Motormodul lässt du deinen Roboter fahren. Das Modul kann mit variablen Geschwindigkeiten betrieben werden. Eine automatische Stromabschaltung beschützt den Motor vor zu hohen Belastungen. Es ist möglich, dieses Feature abzuschalten (nicht empfohlen), um sehr komplexe und fordernde Kreationen umzusetzen.

 

TBMotor()

 

Instanziiert ein Modul des Typs TBMotor. Es wird ein Header-File („TBMotor.h“) benötigt, um auf die Funktionen vonTBMotor zuzugreifen.

Syntax

#include "TBMotor.h"
TBMotor myMotor(GREEN);
TBMotor myMotorInverted(RED, invert);
Parameter Werte Beschreibung
color RED, GREEN, BLUE, MINT, PURPLE, YELLOW, WHITE LED-Farbe des Moduls
invert true, false Flag zum Invertieren der Drehrichtung

 

start()

Startet den Motor mit einer definierten Richtung.

Syntax

myMotor.start(direction, speed);
myMotor.start(direction, speed, duration);
Parameter Werte Beschreibung
direction CLOCKWISE (CW, true), COUNTER_CLOCKWISE (CCW, false)

Drehrichtung des Motors bei Blick auf LED-Seite (im Uhrzeigersinn, oder gegen den Uhrzeigersinn)

speed 0 – 100 Geschwindigkeit der Bewegung
duration 0 – 65535 Motorlaufzeit in Millisekunden (wenn dieser Parameter verwendet wird, wird nachfolgender Code bis zum Ende der Laufzeit geblockt)

Beispiel

#include "TBMotor.h"
TBMotor myMotor(GREEN);

void setup() {
}

void loop() {
//Start motor clockwise with 50% speed for 5 seconds
myMotor.start(CLOCKWISE, 50, 5000);
//Halt the motor
myMotor.stop();
//Start motor counter-clockwise with 75% speed for 1 second
myMotor.start(CCW, 75, 1000);
//Start motor clockwise with full speed
myMotor.start(true, 100);
}

 

stop()

Stoppt den Motor.

Syntax

myMotor.stop();

Beispiel

#include "TBMotor.h"
TBMotor myMotor(GREEN);

void setup() {
}

void loop() {
//Start motor clockwise with 50% speed for 5 seconds
myMotor.start(CLOCKWISE, 50, 5000);
//Halt the motor
myMotor.stop();
//Start motor counter-clockwise with 75% speed for 1 second
myMotor.start(CCW, 75, 1000);
//Start motor clockwise with full speed
myMotor.start(true, 100);
}

 

driveDistance()

Lässt den Motor eine bestimmte Distanz abfahren. Als Referenz werden hierfür die standardmäßigen Tinkerbots-Räder benutzt. Die Distanz wird hierbei von der Zeit und der Akkuspannung des Powerbrains abgeleitet.

Syntax

myMotor.driveDistance(direction, speed, distance);
Parameter Werte Beschreibung
direction CLOCKWISE (CW, true), COUNTER_CLOCKWISE (CCW, false)

Drehrichtung des Motors bei Blick auf LED-Seite (im Uhrzeigersinn, oder gegen den Uhrzeigersinn)

speed 0 – 100 Geschwindigkeit der Bewegung
distance 0 – 65535 Motorlaufzeit in Zentimetern (wenn dieser Parameter verwendet wird, wird nachfolgender Code bis zum Ende der Laufzeit geblockt)

Beispiel

#include "TBMotor.h"
TBMotor myMotor(GREEN);

void setup() {
}

void loop() {
//Start motor clockwise with 50% speed for 5 seconds
myMotor.start(CLOCKWISE, 50, 5000);
//Halt the motor
myMotor.stop();
//Start motor counter-clockwise with 75% speed for 1 second
myMotor.start(CCW, 75, 1000);
//Start motor clockwise with full speed
myMotor.start(true, 100);
}

 

disablePowerCut(), enablePowerCut()

Schaltet die Stromabschaltungstechnologie des Moduls ein, bzw. aus. Die Stromabschaltung beschützt den Motor vor zu hohen Belastungen. In manchen Fällen schränkt dies die Benutzbarkeit des Moduls ein. Wenn du dir sicher bist, was du tust, kannst du dieses Feature deaktivieren (disablePowerCut) um etwas mehr Leistung aus deinem Motormodul herauszuholen. Bitte vergiss nicht, die Stromabschaltung wieder zu reaktivieren (enablePowerCut), wenn du sie nicht mehr benötigst!

Achtung: Das Betreiben des Motors mit ausgeschalteter Stromabschaltung kann die Lebensdauer reduzieren!

Syntax

myMotor.disablePowerCut();
myMotor.enablePowerCut();

Beispiel

#include "TBMotor.h"
TBMotor myMotor(GREEN);

void setup() {
}

void loop() {
//Try to start motor with heavy load
myMotor.start(CW, 100);

/*
Observation: Motor deactivates (LED blinks purple)
Solution: Deactivate current limiter (disablePowerCut)
*/

//Deactivate current limiter
myMotor.disablePowerCut();
//Try to start motor again
myMotor.start(CW, 100);
//Reactivate current limiter if desired
myMotor.enablePowerCut();
}