Skip to main content

Get started

Die Programmierung des Edison erfolgt auf der Seite Edpy. Dort gibt es Beispielprogramme und eine Anleitung für jede einzelne Funktion in Edpy.

Analyse von Beispielcode

Schauen wir uns für den Anfang einmal den Beispielcode für die Hinderniserkennung und -vermeidung an. Die Erklärung die einzelnen Schritte sind in den Kommentaren im Code.

#-------------Setup----------------

import Ed

Ed.EdisonVersion = Ed.V2

Ed.DistanceUnits = Ed.CM
Ed.Tempo = Ed.TEMPO_MEDIUM

#--------Your code below-----------
# Bis hierhin sollte nichts an dem Code verändert werden. 

# Der Edison erkennt Hindernisse mithilfe von Infrarotlicht. Dazu hat der Edison eine Infrarot-LED vorne, die mit diesem Befehl eingeschaltet wird. 
Ed.ObstacleDetectionBeam(Ed.ON)
Diese beiden Variablen werden später verwendet, um zu bestimmen, ob sich der Edison rechts oder links herum drehen soll und ob ein Hindernis erkannt wurde. 
#set up veriables
SideTurn = 0 
obstacle = 0

#Diese Schleife läuft undendlich lange. Bis das Programm mit der Quardrattaste beendet wird. 
while True:
	# Der Edison fährt mit halber Geschwindigkeit. Die drei Parameter bedeuten: 
    # Ed.FORWARD: eigentlich selbsterklärend.
    # Ed.Speed_5: Die Geschwindigkeit, mit dem der Edison fahren soll. Es gibt die Geschwindigkeitsstufen 1-10.
    # Ed.DISTANCE_UNLIMITED: Der Edison fährt solange, bis das Programm etwas anderes sagt. 
	Ed.Drive(Ed.FORWARD, Ed.SPEED_5, Ed.DISTANCE_UNLIMITED)
	# Nachdem der Edison anfing zu fahren, wird jetzt gemessen, ob ein Hindernis im Weg ist. Das Ergebnis wird in einer der folgenden Variablen gespeichert: 
    # Ed.OBSTACLE_NONE: Kein Hindernis erkannt
    # Ed.OBSTACLE_RIGHT: Hindernis an der rechten Seite
    # Ed.OBSTACLE_LEFT: Hindernis an der linken Seite
    # Ed.OBSTACLE_AHEAD: Hindernis voraus
    # Diese Variablen einthalten Zahlen Ed.OBSTACLE_NONE ist die Nummer 0. Daher funktioniert folgende Abfrage: 
	obstacle = Ed.ReadObstacleDetection()
	# Wenn eine Zahl > 0 zurückgegeben wird, ist ein Hindernis erkannt worden. Egal wo. 
	if obstacle>Ed.OBSTACLE_NONE:
		# Beide LED gehen an und der Edison fährt mit halber Geschwindigkeit 3cm zurück. 
		Ed.LeftLed(Ed.ON)
		Ed.RightLed(Ed.ON)
		Ed.PlayBeep()
		Ed.Drive(Ed.BACKWARD, Ed.SPEED_5, 3)
		#look at where the obstacle is and turn away from it (if obstacle ahead turn a random direction)
		if obstacle==Ed.OBSTACLE_LEFT:
			Ed.Drive(Ed.SPIN_RIGHT, Ed.SPEED_5, 90)
		elif obstacle==Ed.OBSTACLE_RIGHT:
			Ed.Drive(Ed.SPIN_LEFT, Ed.SPEED_5, 90)
		elif obstacle==Ed.OBSTACLE_AHEAD:
			if SideTurn ==1:
				Ed.Drive(Ed.SPIN_RIGHT, Ed.SPEED_5, 90)
			else:
				Ed.Drive(Ed.SPIN_LEFT, Ed.SPEED_5, 90)
	#after the obstacle has been avoided turn the LEDs off
	Ed.LeftLed(Ed.OFF)
	Ed.RightLed(Ed.OFF)
	#change the direction varible, when no obstacle is being detected, this value changes rapidly, giving a sudo random direction when used
	if SideTurn==1:
		SideTurn=0
	else:
		SideTurn=1