Giter VIP home page Giter VIP logo

ev3tekenrobot's Introduction

Python met de EV3 Lego Robot

Tekenen met een Lego EV3 MindStorms Robot.

compilatie

Installeer Python

Ja echt, je kan best Python installeren op je computer als je wil programmeren in Python. Je kan programmeren zonder maar dan kan je je code niet uitvoeren en dat is toch net wat minder leuk.

Verbinden met de robot

Als de robot verbonden is met hetzelfde wifi-netwerk als je computer kan je verbinden met ssh:

Het juiste ip-adres kan je aflezen op het scherm van de robot.

Het wachtwoord voor de gebruiker robot is maker.

ssh

Visual Studio Code

Hoe je VSCode klaarmaakt om te werken met ev3dev staat hier beschreven.

VSCode Extension

Installeer de ev3dev-browser extensie voor Visual Studio Code:

ev3dev-browser-extensie

Na de installatie komt er een EV3DEV DEVICE BROWSER optie links onderaan in VSCode.

device browser

Als je op Click here to connect a device klikt krijg je bovenaan een drop down waar je je robot kan selecteren. Mijn robot heet ADA dus ik klik daar op.

selecteer robot

De robot verschijnt in de Device Browser.

robot in device browser

Meer mogelijkheden van de Device Browser vind je op de GitHubpagina.

Voorbeeldproject

We volgen dit voorbeeld. Als dat goed gaat weten we dat onze omgeving goed is opgezet en zijn we klaar voor het echte werk.

Van de voorgestelde plugins hebben we ev3dev-browser al maar je kan ook nog de Python extension for Visual Studio Code installeren:

python extension

Als je de stappen in het voorbeeldproject goed hebt gevolgd staat het script hello.py op de robot en zie je in de console van VSCode de boodschap Hello VS Code! verschijnen.

hello VSCode

Code Completion

Om code completion te laten werken in VSCode moet je de Python packagep python-ev3dev2 installeren. Dit kan je doen in een virtuele omgeving maar ik doe het nu system wide, typ in een terminalvenster:

pip install python-ev3dev2

pip install python-ev3dev2

installatie klaar

De robot laten rijden

De getting started gids voor Python met Lego EV3 vind je hier.

We richten onze aandacht nu op het aansturen van de twee motoren op poorten B en C. Om deze te kunnen bedienen met Pythoncode moeten we LargeMotor importeren in ons script.

De functie SpeedPercent laat ons toe de snelheid van de motor te specifiëren als een percentage van de maximumsnelheid. SpeedPercent(100) is de maximumsnelheid, SpeedPercent(50) is de helft daarvan.

Een enkele motor

from ev3dev2.motor import OUTPUT_B
from ev3dev2.motor import LargeMotor, SpeedPercent

motor_links = LargeMotor(OUTPUT_B)
motor_links.on_for_rotations(SpeedPercent(75), 5) #5 rotaties aan 75% snelheid

Twee motors

Je hebt misschien gemerkt dat je met de vorige manier geen twee motoren tegelijk kan laten werken. Hiervoor gebruiken we de class MoveTank. Experimenteer ook eens met on_for_rotations, on_for_seconds en on_for_degrees.

from ev3dev2.motor import OUTPUT_B, OUTPUT_C
from ev3dev2.motor import LargeMotor, MoveTank, SpeedPercent

tank_drive = MoveTank(OUTPUT_B, OUTPUT_C)

# laat de robot ter plaatse draaien
# door de motors in tegengestelde richting te laten draaien
tank_drive.on_for_seconds(SpeedPercent(50), SpeedPercent(-50), 3)

De robot laten tekenen

Nu je weet hoe je de robot kan laten bewegen kan je hem ook laten tekenen. Steek er een stift in en zet hem op een blad papier.

Maak in je code gebruik van loops en functies.

Een functie gebruik je om een stukje code dat bij elkaar hoort netjes onder te brengen en een naam te geven. Die functie kan je dan gebruiken in je code, hierdoor wordt je code leesbaarder. Je kan functies ook andere functies laten aanroepen, zo structureer je je code en blijft deze overzichtelijk en herbruikbaar.

In Python maak je een functie door het keyword def te gebruiken:

from ev3dev2.motor import OUTPUT_B, OUTPUT_C
from ev3dev2.motor import LargeMotor, MoveTank, SpeedPercent

tank_drive = MoveTank(OUTPUT_B, OUTPUT_C)

def draai_links():
    tank_drive.on_for_degrees(SpeedPercent(50), SpeedPercent(-50), 233.5)

def rijd_10_cm():
    tank_drive.on_for_degrees(SpeedPercent(50), SpeedPercent(50), 360)

def teken_vierkant():
    for i in range(4):
        rijd_10_cm()
        draai_links()

teken_vierkant()

ev3tekenrobot's People

Contributors

rthijs avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.