Aller au contenu principal

Capteurs de sol

OLEM possède 6 capteurs qui détectent le sol en permanence. Ils renvoient un signal qui dépend de la couleur de la zone située juste sous le capteur : une surface blanche donne le signal le plus fort, une surface noire ou l'absence de surface le signal le plus faible.

Leur numéro est indiqué sur l'image ci-dessous :

Numéro de chaque capteur de sol

Par commodité, le signal est déjà traité et l'API permet de :

  • vérifier si le sol est détecté (c'est-à-dire qu'OLEM est sur le plateau et pas au bord), voir ir_floor_is_floor_present()
  • compter les capteurs qui ne voient pas le sol, voir ir_floor_get_void_count()
  • obtenir le signal de chaque capteur, voir ir_floor_get_sensor_value()
  • vérifier si une carte a été détectée [API Python bientôt disponible]
  • vérifier si un bord de tuile est détecté [API Python bientôt disponible]

Les côtés d'OLEM sont donnés par les constantes FRONT, RIGHT, BACK et LEFT, listées avec les capteurs latéraux.

Exemple​

Soulevez les côtés d'OLEM un par un : les côtés sans sol sont affichés.

import olem

print("Lift the sides of OLEM one at a time")

start = olem.get_time_ms()
while olem.get_time_ms() - start < 20000:
sides = ""
if not olem.ir_floor_is_floor_present(olem.FRONT):
sides += "F"
if not olem.ir_floor_is_floor_present(olem.RIGHT):
sides += "R"
if not olem.ir_floor_is_floor_present(olem.BACK):
sides += "B"
if not olem.ir_floor_is_floor_present(olem.LEFT):
sides += "L"

if sides:
print("No floor: " + sides + ", " + str(olem.ir_floor_get_void_count()) + " sensors see the void")
olem.delay_ms(200)

Fonctions​

ir_floor_get_sensor_value(sensor)​

Get the signal of a floor sensor. The signal is the strongest on a white surface and the weakest on a black surface or when there is no floor.

OLEM has 6 floor sensors, numbered clockwise: 0 front left, 1 front right, 2 right, 3 back right, 4 back left, 5 left.

ParameterDescription
sensorindex of the sensor, from 0 to 5

Returns: signal in ADC units (LSB), or 0 if sensor is not valid

ir_floor_is_floor_present(side)​

Check if there is floor under a side of OLEM, to detect the edge of the board or table.

ParameterDescription
sideFRONT, RIGHT, BACK or LEFT

Returns: True if the floor is detected, False otherwise or if side is not valid

ir_floor_get_void_count()​

Returns: number of floor sensors that do not see the floor