Ga naar hoofdinhoud

Lijnsensoren

Eliobot line sensor


Eliobot's lijnsensoren zijn infraroodsensoren die lijnen detecteren.

Gebruik met Elioblocs

Om Eliobot-lijnsensoren op Elioblocs te gebruiken, gebruiken we blokken uit de categorie categorie lijn.

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:

Sensor 1Sensor 2Sensor 3Sensor 4Sensor 5
PijnboomIO10IO11IO12IO13IO14

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

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 = None

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)

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

# Fonction pour récupérer la valeur d'un capteur de ligne
def getLine(line_pos):
ambient = 0
lit = 0
value = 0

# Mesure de la lumière réfléchie
obstacleCmd.value = True
time.sleep(0.02)
lit = lineInput[line_pos].value

# Mesure de la lumière ambiante
obstacleCmd.value = False
time.sleep(0.02)
ambient = lineInput[line_pos].value

# Calcul de la valeur
value = ambient - lit

return value

while True:
if getLine(2) > 30000: # Si le capteur 3 détecte une ligne
elio.move_forward(100) # On avance

Als we hier een lijn onder sensor 3 (de middelste sensor) detecteren, gaan we vooruit. De detectiedrempel is 30.000, dit is een geschatte waarde en moet worden gekalibreerd voor een optimale werking.