Zum Hauptinhalt springen

Motoren

Eliobot motors topEliobot motors bottom

hinweis

Die Motoren von Eliobot werden direkt von der Batterie angetrieben und funktionieren daher nur, wenn sich der Zündknopf in der Position ON befindet.

Zur Verwendung mit Elioblocs

Um die Motoren von Eliobot auf Elioblocs zu verwenden, verwenden wir Blöcke aus der Kategorie Mouvement, da es sich dabei um die Motoren handelt, die es Eliobot ermöglichen, sich zu bewegen.

Verwendung mit Python

Um Eliobot-Engines in Python zu verwenden, können Sie die in der elio.py-Bibliothek verfügbaren Funktionen verwenden.

Die Motoren werden an folgende Pins angeschlossen:

Moteur gaucheMoteur droit
IN1IO35IO36
IN2IO37IO38

Motoren können auf zwei Arten gesteuert werden: Digital oder PWM

Im digitalen Betrieb haben wir nur die Möglichkeit, den Motor in die eine oder andere Richtung zu drehen und anzuhalten.

Bei der PWM wird es auch möglich sein, die Geschwindigkeit des Motors zu ändern und ihn von 0 % auf 100 % seiner maximalen Geschwindigkeit zu bringen.

Um mehr über pwm zu erfahren: Wikipedia PWM

Verwandte Beispiele

Elioblocs-Beispiel

exemple mouvement elioblocs

Hier verwenden wir die Catégorie mouvement-Blöcke, um Eliobot dazu zu bringen, sich vorwärts zu bewegen, wenn er kein Hindernis vor sich erkennt, andernfalls wendet er sich nach rechts.


Python-Beispiel

Mit der Bibliothek elio.py

import board
import pwmio
import analogio
from elio import Motors, ObstacleSensor

AIN1 = pwmio.PWMOut(board.IO36)
AIN2 = pwmio.PWMOut(board.IO38)
BIN1 = pwmio.PWMOut(board.IO35)
BIN2 = pwmio.PWMOut(board.IO37)
vBatt_pin = analogio.AnalogIn(board.BATTERY)

obstacle_pins = [
analogio.AnalogIn(board.IO4), # Gauche
analogio.AnalogIn(board.IO5), # Avant
analogio.AnalogIn(board.IO6), # Droite
analogio.AnalogIn(board.IO7), # Arrière
]

motors = Motors(AIN1, AIN2, BIN1, BIN2, vBatt_pin)
obstacle_sensor = ObstacleSensor(obstacle_pins)

speed = 100

while True:
if obstacle_sensor.get_obstacle(1): # Obstacle devant
motors.turn_right(speed)
else:
motors.move_forward(speed)

In diesem Beispiel bewegt sich Eliobot vorwärts, wenn er kein Hindernis vor sich erkennt, andernfalls dreht er sich nach rechts.


Ohne die Bibliothek elio.py

import board
import pwmio
import analogio

AIN1 = pwmio.PWMOut(board.IO36)
AIN2 = pwmio.PWMOut(board.IO38)
BIN1 = pwmio.PWMOut(board.IO35)
BIN2 = pwmio.PWMOut(board.IO37)

obstacle_avant = analogio.AnalogIn(board.IO5)

vitesse = 65535 # valeur PWM max (0–65535)

while True:
if obstacle_avant.value < 10000: # Obstacle devant
# Tourner à droite
AIN1.duty_cycle = vitesse
AIN2.duty_cycle = 0
BIN1.duty_cycle = 0
BIN2.duty_cycle = vitesse
else:
# Avancer
AIN1.duty_cycle = 0
AIN2.duty_cycle = vitesse
BIN1.duty_cycle = 0
BIN2.duty_cycle = vitesse

Gleiches Beispiel wie zuvor, jedoch ohne Verwendung der elio.py-Bibliothek.