Skip to main content

Infrarotsteuerung

Ein Infrarotsensor kann zum Erkennen von Hindernissen oder der Verfolgung einer schwarzen Linie genutzt werden. Die folgende Klasse steuert den Sensor.

from machine import Pin,Timer
import micropythonmicropython, utime
micropython.alloc_emergency_exception_buf(100)

class IR:
    '''This class manages the IR-sensor. Write your code in Robot.ir_detected()'''
    def __init__(self, pinNo):
        self.out = pinNo
        self.ir = Pin(pinNo, Pin.IN, Pin.PULL_UP)
        self.ir.irq(trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING, handler=self.obstacle)
        self.detected=False
        self.timer = Timer()
        
    def reset_detected(self,t):
        self.detected = False
        
    def obstacle(self, pin):
        '''This is called on any change in the IR-sensor. '''
        if not self.detected:
            print(f" Pin value: {pin.value()},Pin number: {self.out}.")
            self.detected = True
            self.timer.init(mode=Timer.ONE_SHOT, period=100, callback=self.reset_detected)

def main():
  ir = IR(18)
  while True:
    utime.sleep_ms(500)

if __name__ == "__main__":
    # execute only if run as a script
    main()

Der Code muss unter dem Dateinamen „infrared.py“ auf dem Pico gespeichert werden.

Zum Testen kann man die Datei, so wie sie ist, in Thonny starten. Darauf achten, dass der Pin richtig bezeichnet ist.