Przejdź do głównej zawartości

Czujnik przeszkód

Klasa ObstacleSensor zarządza 4 czujnikami przeszkód na podczerwień Eliobota.

Pozycje czujników

PositionIndexDirectionPin
Gauche0Côté gaucheIO4
Avant1DevantIO5
Droite2Côté droitIO6
Arrière3DerrièreIO7

Inicjalizacja

import board
import analogio
from elio import ObstacleSensor

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

obstacle_sensor = ObstacleSensor(obstacle_pins)

Metody

get_obstacle(obstacle_pos)

Zwraca True, jeśli czujnik wykryje przeszkodę w danej pozycji, False w przeciwnym razie.

ParamètreTypeDescription
obstacle_posintIndex du capteur (0, 1, 2 ou 3)

Detekcja jest wyzwalana, gdy wartość analogowa jest niższa niż 10000.

if obstacle_sensor.get_obstacle(1):  # Capteur avant
print("Obstacle devant !")

Pełny przykład — unikanie przeszkód

import board
import pwmio
import analogio
import time
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),
analogio.AnalogIn(board.IO5),
analogio.AnalogIn(board.IO6),
analogio.AnalogIn(board.IO7),
]

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

while True:
if obstacle_sensor.get_obstacle(1): # Obstacle devant
motors.turn_right(speed=60)
time.sleep(0.3)
else:
motors.move_forward(speed=80)