Skip to main content

Motoare

Eliobot motors topEliobot motors bottom

note

Motoarele lui Eliobot sunt alimentate direct de la baterie, deci funcționează doar când butonul de aprindere este în poziția ON.

Utilizați cu Elioblocs

Pentru a folosi motoarele Eliobot pe Elioblocs, folosim blocuri din categoria Mișcare deoarece acestea sunt motoarele care permit lui Eliobot să se miște.

Utilizați cu Python

Pentru a utiliza motoarele Eliobot în Python, puteți utiliza funcțiile disponibile în biblioteca elio.py.

Motoarele sunt conectate la următorii pini:

Motor stângaMotor dreapta
IN1IO35IO36
IN2IO37IO38

Motoarele pot fi controlate în două moduri: digital sau PWM

În funcționarea digitală vom avea doar posibilitatea de a roti motorul într-o direcție sau alta și de a-l opri.

În PWM va fi posibil să modificați viteza motorului și să îl faceți să treacă de la 0% la 100% din viteza maximă.

Pentru a afla mai multe despre pwm: Wikipedia PWM

Exemple înrudite

Exemplu Elioblocs

exemplu mișcare elioblocs

Aici, folosim blocurile Categorie mișcare pentru a-l face pe Eliobot să avanseze dacă nu detectează un obstacol în fața lui, în caz contrar el face dreapta.


Exemplu Python

Cu librăria elio.py

from elio import Eliobot
import board
import time
import digitalio
import analogio
import pwmio

vBatt_pin = analogio.AnalogIn(board.BATTERY)

obstacleInput = [analogio.AnalogIn(pin) for pin in
(board.IO4, board.IO5, board.IO6, board.IO7)]

lineCmd = digitalio.DigitalInOut(board.IO33)
lineCmd.direction = digitalio.Direction.OUTPUT

lineInput = [analogio.AnalogIn(pin) for pin in
(board.IO10, board.IO11, board.IO12, board.IO13, board.IO14)]

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

buzzer = pwmio.PWMOut(board.IO17, variable_frequency=True)

elio = Eliobot(AIN1, AIN2, BIN1, BIN2, vBatt_pin, obstacleInput, buzzer, lineInput, lineCmd)

speed = 100


while True:
if elio.get_obstacle(1):
elio.turn_right(speed)

else:
elio.move_forward(speed)

În acest exemplu, Eliobot înaintează dacă nu detectează un obstacol în fața lui, altfel face dreapta.

Fără librărie elio.py

import elio
import time
import board
import pwmio

# Configuration des pins
moteurDroit1 = pwmio.PWMOut(board.IO36)
moteurDroit2 = pwmio.PWMOut(board.IO38)
moteurGauche1 = pwmio.PWMOut(board.IO35)
moteurGauche2 = pwmio.PWMOut(board.IO37)

# Vitesse des moteurs
vitesse = 65535 # vitesses entre 0 et 65535

while True:
if elio.getObstacle(1):
moteurDroit1.duty_cycle = 0
moteurDroit2.duty_cycle = vitesse
moteurGauche1.duty_cycle = vitesse
moteurGauche2.duty_cycle = 0

else:
moteurDroit1.duty_cycle = vitesse
moteurDroit2.duty_cycle = 0
moteurGauche1.duty_cycle = 0
moteurGauche2.duty_cycle = vitesse

Același exemplu ca înainte, dar fără a utiliza biblioteca elio.py.