Blog chmura tagów
Nie bój się przeszkód (EdPy)
Nie bój się przeszkód (EdPy)

Na początku zmieniamy sposób określania odległości:

Ed.DistanceUnits = Ed.TIME

Dzięki temu będziemy mogli używać jednostek czasowych, czyli sekund i milisekund. Następnie definiujemy prostą muzyczkę, którą odegramy po wykryciu przeszkody.

Program działał będzie w nieskończonej pętli:

while True:

Na początku włączamy diody oraz czujnik wykrywania przeszkód:

    Ed.LeftLed(Ed.ON)
    Ed.RightLed(Ed.ON)
    Ed.ObstacleDetectionBeam(Ed.ON)

Kolejna instrukcja:

    Ed.Drive(Ed.FORWARD, Ed.SPEED_5, Ed.DISTANCE_UNLIMITED)

– rozpoczyna ciągłą jazdę do przodu ze średnią prędkością.

Wykrywanie przeszkód możliwe będzie dzięki instrukcji warunkowej if, sprawdzającej czy zachodzi zdarzenie wykrycia przeszkody z przodu:

    if Ed.ReadObstacleDetection() == Ed.OBSTACLE_AHEAD: 

Metoda ReadObstacleDetection() zwraca rodzaj wykrytej przeszkody. Edison może wykrywać przeszkody z lewej (Ed.OBSTACLE_LEFT) i prawej (Ed.OBSTACLE_RIGHT) strony, a także z przodu (Ed.OBSTACLE_AHEAD). Operator logiczny ==, czyli podwójny znak równości, pozwala sprawdzić, gdzie wykryto przeszkodę. Jeżeli z przodu, całe wyrażenie logiczne jest prawdziwe i wykonany zostanie wcięty blok kodu, tworzący ciało instrukcji warunkowej. Umieszczamy w nim na początku instrukcje wyłączające diody i czujnik wykrywania przeszkód:

        Ed.ObstacleDetectionBeam(Ed.OFF)
        Ed.LeftLed(Ed.OFF)
        Ed.RightLed(Ed.OFF)

Następnie Cofamy robota przez 2 sekundy, zatrzymujemy odgrywamy muzyczkę i czekamy jeszcze sekundę:

        Ed.Drive(Ed.BACKWARD, Ed.SPEED_3, 2000)
        Ed.Drive(Ed.STOP, 0, 0)
        Ed.PlayTune(muzyka)
        Ed.TimeWait(1, Ed.TIME_SECONDS)

W ten sposób obsłużyliśmy zdarzenie, czyli wykrycie przeszkody z przodu. Ponieważ kod umieściliśmy w nieskończonej pętli, Edison będzie dalej jechał przed siebie i wykrywał przeszkody.

do góry
Sklep jest w trybie podglądu
Pokaż pełną wersję strony
Sklep internetowy Shoper.pl