Ga naar hoofdinhoud

Lijnsensoren

Eliobot line sensor


Les capteurs de ligne d'Eliobot sont des capteurs infrarouges qui permettent de détecter les lignes.

Gebruik met Elioblocs

Om Eliobot-lijnsensoren op Elioblocs te gebruiken, gebruiken we blokken uit de categorie catégorie ligne.

Gebruik met Python

Met Python moet u elke lijnsensor als een object definiëren. Op de lijnsensor hebben we 5 sensoren, deze zijn aangesloten op de volgende pinnen:

Capteur 1Capteur 2Capteur 3Capteur 4Capteur 5
PinIO10IO11IO12IO13IO14

We gebruiken het gereflecteerde licht om de lijn te detecteren, we meten het omgevingslicht en het gereflecteerde licht om de waarde te berekenen.

De sensoren retourneren analoge waarden.

Gerelateerde voorbeelden

Elioblocs voorbeeld

exemple suivi de ligne elioblocs

Als we hier een lijn onder sensor 3 (de middelste sensor) detecteren, gaan we vooruit.


Python-voorbeeld

Met de bibliotheek elio.py

import board
import pwmio
import analogio
import digitalio
from elio import Motors, LineSensor

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)
motors = Motors(AIN1, AIN2, BIN1, BIN2, vBatt_pin)

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

lineInput = [
analogio.AnalogIn(board.IO10), # Capteur 0
analogio.AnalogIn(board.IO11), # Capteur 1
analogio.AnalogIn(board.IO12), # Capteur 2 (centre)
analogio.AnalogIn(board.IO13), # Capteur 3
analogio.AnalogIn(board.IO14), # Capteur 4
]

line_sensor = LineSensor(lineInput, lineCmd, motors)

threshold = 5000 # Seuil de détection (à calibrer)

while True:
if line_sensor.get_line(2) > threshold: # Capteur central détecte une ligne
motors.move_forward(100)

Als we hier een lijn onder de centrale sensor detecteren (index 2), gaan we vooruit. De drempel is een schatting. Gebruik line_sensor.calibrate_line_sensors() om deze automatisch te berekenen.


Zonder de bibliotheek elio.py

import board
import analogio
import digitalio
import time

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

capteur_centre = analogio.AnalogIn(board.IO12) # Capteur 2 (centre)

def get_line_value():
lineCmd.value = True
time.sleep(0.02)
lit = capteur_centre.value

lineCmd.value = False
time.sleep(0.02)
ambient = capteur_centre.value

return ambient - lit

threshold = 5000

while True:
if get_line_value() > threshold:
print("Ligne détectée !")

De geretourneerde waarde is het verschil tussen omgevingslicht en gereflecteerd licht: hoe hoger deze is, hoe contrastrijker de lijn.