Lego Mindstorms EV3 mit python

Seit heute bin ich Besitzer eine Lego Mindstorms EV3 Sets. Das erste Modell war nach der Anleitung leicht gebaut und lies sich per IR auch schon steuern. Das Programmieren mit der von Lego mitgelieferten Software mit Click und Bunt ist jedoch nicht mein Fall.

Wer mich kennt weiß das ich inzwischen am liebsten in Python programmiere, und so wollte ich es beim EV3 auch haben. Glücklicherweise gibt es bei GitHub bereits ein Projekt was sich damit befasst. Alles was man braucht ist eine Micro SD Karte von mindestens 2GB. In der GitHub Readme findet sich der Link zu einem Image file, welches man nur noch mit dd if=python-ev3.img of=/dev/<sdcard device> bs=2M auf die SD Karte bannen muss.

Die SD Karte steckt man dann noch in den Brick und startet ihn. Was mich anfangs sehr irritiert hatte, auf dem LCD steht auch nach dem Booten noch der Start Bildschirm, trozdem kann man sich schon mit ssh root@10.0.1.1 und passwort: password verbinden.

Nach etwas suche im Internet habe ich sogar auch ein kleines Beispiel  Script gefunden und nach etwas Anpassung war mein erster Roboter fertig, der immerhin fahren kann, bei einem Hindernis dreht und das solange bis die Batterien leer sind, oder man den Taster betätigt.

Hier dann das Script dazu:

#!/usr/bin/python
import time
from ev3.rawdevice import motordevice
from ev3.rawdevice import analogdevice
from ev3.rawdevice import uartdevice
from ev3 import lego
print "import done"
motordevice.open_device()
analogdevice.open_device()
uartdevice.open_device()

A = 0x01
B = 0x02
C = 0x04
D = 0x08

right = A
left = D
both = A+D

touch = lego.EV3TouchSensor(0)
ir = lego.EV3IRSensor(3)
ir.set_prox_mode()

motordevice.speed(both, 30)

while True:
    time.sleep(1)
    if touch.is_pressed() == 1:
        motordevice.stop(both, brake=1)
        print "stopping\n"
        break

     cur_distance = ir.get_distance()
    if cur_distance < 20:
        motordevice.stop(both, brake=1)
        motordevice.speed(A, 50)
        time.sleep(3)
        motordevice.stop(A, brake=1)
        motordevice.speed(both,30)

motordevice.stop(both, brake=1)

 

 

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .

Ein Gedanke zu “Lego Mindstorms EV3 mit python”