Saltar al contenido principal

Motores

Eliobot motors topEliobot motors bottom

nota

Los motores de Eliobot funcionan directamente con la batería, por lo que solo funcionan cuando el botón de encendido está en la posición ON.

Uso con Elioblocs

Para usar los motores de Eliobot en Elioblocs, usamos bloques de la categoría Movimientos, ya que son los que permiten que Eliobot se desplace.

Usar con Python

Para utilizar motores Eliobot en Python, puede utilizar las funciones disponibles en la biblioteca elio.py.

Los motores están conectados a los siguientes pines:

Motor izquierdoMotor derecho
EN1IO35IO36
IN2IO37IO38

Los motores se pueden controlar de dos formas: digital o PWM.

En funcionamiento digital sólo tendremos la posibilidad de girar el motor en un sentido u otro, y detenerlo.

En PWM también será posible modificar la velocidad del motor y hacer que pase del 0% al 100% de su velocidad máxima.

Para obtener más información sobre pwm: Wikipedia PWM

Ejemplos relacionados

Ejemplo de Elioblocs

ejemplo movimiento elioblocs

Aquí usamos los bloques categoría movimiento para hacer que Eliobot avance si no detecta un obstáculo frente a él; de lo contrario gira a la derecha.


Ejemplo de Python

Con la librería 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)

En este ejemplo, Eliobot avanza si no detecta ningún obstáculo delante de él, en caso contrario gira a la derecha.

Sin la librería elio.py

import elio
import time
import board
import pwmio

# Configuración de pines
moteurDroit1 = pwmio.PWMOut(board.IO36)
moteurDroit2 = pwmio.PWMOut(board.IO38)
moteurGauche1 = pwmio.PWMOut(board.IO35)
moteurGauche2 = pwmio.PWMOut(board.IO37)

# Velocidad de los motores
vitesse = 65535 # velocidades entre 0 y 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

El mismo ejemplo que antes, pero sin usar la biblioteca elio.py.