WORKSHOP ORANGE PI & PYTHON v september 2017

Vergelijkbare documenten
Programmeren van de Raspberry Pi.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

BEGINNER JAVA Inhoudsopgave

DE ASTRO PI KLAARMAKEN VOOR GEBRUIK

Seven segments of Pi

Module 1: Wat is een Raspberry Pi?

De Sense HAT programmeren Je eerste computerprogramma

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

Het hele scherm besturen

Handleiding ISaGRAF. Wil men het programma bewaren, dan is het verstandig een back-up te maken: C9 Back-up / Restore

Raspberry Pi The ultimate hobby computer. Bert Mengerink HCC Haaglanden Zoetermeer

Raspberry Pi The ultieme hobby computer. Wim Hendrikse 2 januari 2017, Leiderdorp

Workshop Arduino voor beginners deel 2

Programmeren met Arduino-software

[8] De ene 1 is de andere niet

consolewd op de raspberrypi installeren en gebruiken (versie )

Arduino Zuid-Limburg Workshop 2

Raspberry Pi Interfacing.

HET BESTURINGSSYSTEEM

MAKERKLAS WORKSHOP ARDUINO. Maandag 7 december 2015

Raspberry Pi HCC- Haaglanden Tim Woldring

Bij dit hoofdstukken horen geen opgaven.

Vaststellen van de authenticiteit van de OSV software

Module 2: Wat is Scratch?

TELEPORTEREN MET VARIABELEN

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp

Inhoudsopgave Voorwoord 5 Voordat je begint 6 Wat heb je nodig? 7 De website bij het boek 7 Voor ouders, verzorgers en leraren

[13] Rondjes draaien (loops)

1. Sluit de LED aan zoals afgebeeld 2. Sluit de USB-kabel aan op de Arduino 3. Klik op de knop uploaden 4. De LED begint te knipperen

Scratch voor mobiel: AppInventor

DE INTERACTIEVE SHELL

RCL Arduino Workshop 1

Om een ander voorbeeld aan te halen waar er wel een opsplitsing van toepassing is:

User accounts maken in een Wandy Hotspot, d.m.v. een batch.

DOBBELSTEEN 2.0. Stap-voor-stap instructie

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Een database gebruiken

Hallo. Ik snap het Ik kan uitleggen via welke stappen ik een programma maak en dit op de micro:bit zet.

Java Les 3 Theorie Herhaal structuren

Een spoedcursus python

Opmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen?

Configureren en installeren OPENOB op Raspberry PI

Android apps met App Inventor 2 antwoorden

Gebruik van command-line operating systems

Android Development CCSS2011

ONSCREENKEYS 5. Windows XP / Windows Vista / Windows 7 / Windows 8

SOFTLOK 12.5x. Update met behoudt van gegevens en het instellen van het EMS geheugen bereik

Derde Delphi Programma verkenning

Programmeren met de Raspberry Pi

PROS1E1 Handleiding ( ) Kf/Dd/Bd

Installatie van Raspberry PI 9 november 2017 HCC Linux GG Zevenaar

Raspberry Pi Plex server installeren

Variabelen en statements in ActionScript

Numerieke benadering van vierkantwortels

HANDLEIDING. Aan de slag met je Retropie. SOS Solutions

DE DEBUGGER GEBRUIKEN

PYTHON REEKS 1: BASICS. Mathias Polfliet

Remote Powercontrol for TCP/IP networks

Functioneel programmeren

Aansluiten en installeren sprongmat

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Programmeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014

1. Introductie tot SPSS

PRO CAMERASYSTEEM HANDLEIDING BSM-DVRNL V2.0

Rodin installatiehandleiding (vanaf versie 2.1.xxx.x)

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27

Voeler ingang van de ilog recorder. Stop de temperatuurvoeler

Beckhoff BC9050 met Twincat

Arduino Workshop 1 Zuid-Limburg

Workshop Arduino - deel 2

ES1 Project 1: Microcontrollers

EmSE presentatie. Raspberry Pi: Mijn eerste hapjes

Korte installatiehandleiding voor de datakabel DKU-5

Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1

draaimolen programmeren PC

Netwerkprinter Dell 1320C installeren op Ubuntu LTS - Lucid Lynx

Programmeerstructuren met App Inventor

Arduino. Arduino UNO. Sam Decoster. CoderDojo Roeselare. Sam Decoster

Werkbladen voor Arduino workshop 1

Project 1 Een discolamp

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Raspberry pi snel start handleiding

Enkele voorbeelden volstaan. Zie verder de Help-file van Matlab.

Een website maken met Joomla!

Hoofdstuk 7: Werken met arrays

Een simpel lichtorgel met Lightning.

MICRO:BIT. Uitdaging 5 Magic8. Origineel: Micro:bit Educational Foundation 2016 Vertaling: CoderDojo Kennemerwaard 2017

Voeler ingang van de ilog recorder. Stop de temperatuurvoeler

Cursus Programmeren en Dataverwerking.

Direct aansluiten op het interne netwerk middels DHCP instelling.

Movicon 11. Visualisatie op VIPA Touch Screens Van de VIPA PLC: CPU315 & CPU313. F. Rubben Movicon 11 op VIPA Touch Screens 1

DE ASTRO PI PROGRAMMEREN

Raspberry Pi de eerste stappen.

Gebruik onderstaande stappen in combinatie met tabel 1 en fig 1. Aansluiting Functie A

Opencockpits FMC V3 Handleiding Prosim737

Transcriptie:

WORKSHOP ORANGE PI & PYTHON v1.1 21 september 2017 In deze workshop maak je kennis met een zogenaamde bord-computer ter grootte van een bankpas. Een bord-computer kan gebruikt worden als een normale computer maar is zeer klein. Er bestaan veel verschillende soorten. De Raspberry Pi is de meest bekende, maar er zijn er meer! Wij gaan aan de slag met de Orange Pi. Op deze bord-computers draait een volledig besturingssysteem. Een bekend besturingssysteem is Windows. Om de kosten laag te houden wordt gebruik gemaakt van een Linux besturingssysteem. Linux is de basis van bijvoorbeeld Android (smartphones). Hier gebruiken we Armbian. Met de bord-computer kun je E-mailen, internet browsen, tekst verwerken etc. In deze workshop gaan we aan de slag met programmeren. Programmeren kan in verschillende talen. Misschien heb je wel eens gehoord van Scratch. Hier gaan we aan de slag met Python. Python is een Open-source programmeertaal. Je mag hem dus gratis gebruiken.

De Orange Pi heeft naast de gebruikelijke computerpoorten, zoals USB, ethernet en video, ook een speciale poort: de GPIO-poort. GPIO staat voor General Purpose Input Output, oftwel besturingspoort voor algemeen gebruik. Deze poort kan gebruikt worden als ingang en als uitgang. De poort bestaat uit een aantal pennen, elke aansluitpen kan individueel geprogrammeerd worden. De pennen kunnen gebruikt worden voor digitale signalen. Een digitaal signaal kent twee logische toestanden, een toestand wordt een niveau genoemd. Niveau Codering Spanning op de pen Aangesloten LED Hoog niveau Logische 1 +3,3 Volt op de pen LED staat aan Laag niveau Logische 0 0 Volt op de pen LED saat uit Deze pennen (hardware) kunnen bestuurd worden vanuit een programma, de software. De software bestaat uit commando's. Deze commando's kunnen ingevoerd worden met behulp van een Editor. De editor is een tekst-verwerker, net zoiets als Word, maar dan speciaal voor het invoeren van programma's. Voor Python heet deze editor Idle. Idle kan gestart worden vanuit het Start-menu (Applications>Development>Idle). In Idle kan nu het programma geschreven worden, het programma wordt vervolgens opgeslagen. Om het programma uit te voeren wordt een zogenaamde terminal geopend. Dit kan vanuit het start-menu. Als je een programma wilt starten type je bij de Command-prompt: sudo python <programmanaam>.py (LET OP, dit hoef je nu nog niet te proberen!) Het commando sudo wordt gebruikt om een programma uit te voeren als root. De root is de gebruiker met alle rechten op een systeem. sudo is een afkorting voor Super User DO. Het password is scout. Programma's die geschreven worden in Python kunnen gebruik maken van het beeldscherm van het

systeem en het toetsenbord, maar ook van de GPIO-pinnen. Zo kan een progamma dus ook externe componenten aansturen (LEDs) en uitlezen (bijvoorbeeld drukschakelaars). VARIABELEN Er is eigenlijk geen programma wat geen gebruik maakt van variabelen. Een variabele is een plaats in het geheugen van de computer. De variabele heeft een naam en een waarde (getal). Bijvoorbeeld: Naam a 2 b 4 resultaat 0 Waarde De variabelen kunnen vervolgens gebruikt worden in het programma, bijvoorbeeld: resultaat = a x b resultaat = 2 x 4 = 8 resultaat heeft nu waarde 8 gekregen of: resultaat = a + b resultaat = 2 + 4 = 6 resultaat heeft nu waarde 6 gekregen Probeer zelf eens: resultaat = b a =... resultaat = 2 x a = Deze berekeningen kun je ook op de Orange Pi uitvoeren, direkt in Idle. Start Idle via Applications>Development>Idle. Type: b = 4 <enter> Type: a = 2 <enter> Type: b a <enter> Type: 2*a <enter> Een programma communiceert met de gebruiker via het scherm en het toetsenbord. Resultaten kunnen weergegeven worden via het scherm. Hiervoor maken we gebruik van het commando print. Achter commando print geef je aan wat er op het scherm gezet moet worden. Zet je dit tussen aanhalingstekens, dan komt op het scherm te staan wat tussen de aanhalingstekens staat. print resultaat geeft op het scherm: resultaat Op het moment dat je geen aanhalingstekens gebruikt, dan geeft het commando print de waarde van de variabele: print resultaat geeft op het scherm 4

In de voorbeelden hierboven zijn alle getallen van het type integer, dit betekend dat het een geheel getal is. Bijvoorbeeld het aantal scouts in een patrouille. Je kunt ook gebroken getallen invoeren, dit wordt een real genoemd. Voorbeeld hiervan is bijvoorbeeld het aantal gelopen kilometers in een hike, bijvoorbeeld 6,75 km. Maar let op, geven we dit aan in meters, dan is het weer een integer (geheel getal): 6750 meter. Of een getal een real of een integer is, bepaald Python zelf, door te kijken hoe de getallen aangegeven zijn; staat er een komma in, dan wordt het een real, anders een integer. We gaan dit proberen door een eenvoudig programma te schrijven (typ het programma over in Idle). Om het programma in te kunnen voeren, ga je in Idle naar File en kies je New file. In het nieuwe window type je dit programma: # doosjes is het aantal doosjes met Camilla's eieren # inhoud is het aantal eieren in een doosje # in totaal komt het totale aantal eieren te staan doosjes = 4 inhoud = 6 totaal = 0 print aantal doosjes eieren:, doosjes # in een computerprogramma betekend een * hetzelfde als keer (vermenigvuldigen) totaal = doosjes * inhoud print het totaal aantal eieren is:, totaal Sla het programma op (File > Save Desktop Camilla). Ga vervolgens naar het Terminal venster (Applications > Terminal Emulator) en start het programma (typ: cd Desktop <enter> en vervolgens sudo python Camilla.py <enter>). Voer als password scout in. Wat komt er uit? Zijn doosjes en inhoud nu integers of reals? Een programma, zoals je dat net geprobeerd hebt, heeft nog niet heel veel nut. Het wordt nuttiger als de gebruiker zelf de getallen in kan voeren. Om getallen in te kunnen voeren gebruiken we het commando raw_input. Pas het programma als volgt aan: # doosjes is het aantal doosjes met Camilla's eieren # inhoud is het aantal eieren in een doosje # in totaal komt het totale aantal eieren te staan doosjes = 1.0 inhoud = 1 totaal = 0 print We gaan het totale aantal eieren berekenen. inhoud = raw_input ( Het aantal eieren in een doosje is: ) inhoud = int(inhoud) doosjes = raw_input ( Hoeveel doosjes zijn er? ) doosjes = int(doosjes) # in een computerprogramma betekend een * hetzelfde als keer (vermenigvuldigen) totaal = doosjes * inhoud print het totaal aantal eieren is:, totaal

Om programma's beslissingen te laten nemen zijn er ook bepaalde instrukties. Hier gaan we twee soorten beslissingen bekijken: if-then-else while if-then-else komt, net als andere instructies, uit het Engels. If betekent als, then betekent dan en else betekent anders. Bijvoorbeeld: if (als) geluid = tok then (dan) de vogel=kip else (anders) vogel=geen kip Je ziet hier een voorbeeld van if-then-else. Als de bewering na if waar is, dan gaat het programma het deel uitvoeren na then. Als de bewering na if niet waar is, dan gaat het programma verder met wat na else staat. Voor waar wordt vaak de Engelse benaming true gebruikt, voor niet-waar wordt false gebruikt. While kan het beste vertaald worden met zolang. Als er wachter while een bewering staat die waar is, dan wordt het stuk programma dat hierachter staat uitgevoerd. Bijvoorbeeld: while totaal=12 print twee dozen eieren while wordt heel vaak gebruikt bij programma-stukken die veel herhaald moeten worden, GPIO-CONTROL We gaan het commando while gebruiken in een programma dat een LED aanstuurd. Ga hiervoor in Idle naar het menu File en kies New File. Type het onderstaande programma in: #import library from pya20.gpio import gpio from pya20.gpio import port from time import sleep #initialize the gpio module gpio.init() #setup the port gpio.setcfg(port.pg7, gpio.output) while True: gpio.output(port.pg7, gpio.high) sleep(1.5) gpio.output(port.pg7, gpio.low) sleep(1.5) done Ga naar File>Save, sla het programma op op de Desktop, gebruik bijvoorbeeld de naam test1.

Open via het menu Applications (links boven) een Terminal Emulator. Type in de Terminal: cd Desktop Type vervolgens: sudo python test1.py Vervolgens vraagt de Orange Pi om het password, dat is scout. Kijk nu wat er gebeurt met de LED. Stop het programma met <CTRL> C. Je kan nu proberen het programma wat je net hebt gemaakt zo aan te passen dat de LED bijvoorbeeld sneller gaat knipperen. Of breid het programma uit zodat de LED een morse boodschap uitzendt. SIGNALEN INLEZEN REACTIE-SNELHEIDSTESTER Je hebt nu een voorbeeld gezien van een programma dat een signaal opwekt om (bijvoorbeeld) een LED aan te sturen. Je kunt ook signalen van buitenaf inlezen, in dit geval gaan we een drukschakelaar (druktoets) uitlezen en gebruiken voor een reaktie-snelheidstester. #import the library from pya20.gpio import gpio from pya20.gpio import port from time import sleep from datetime import datetime import random #initialize the gpio module gpio.init() #setup the port gpio.setcfg(port.pg7, gpio.output) gpio.setcfg(port.pc4, gpio.input) #main programma gpio.output(port.pg7, gpio.low) print ( Reactie snelheidstester gestart ) sleep(2.0) while True: random.seed() sleep(random.random()*10) start = datetime.now() gpio.output(port.pg7, gpio.high) while gpio.input(port.pc4): pass print ( Je reactive tijd is:, (datetime.now() start).total_seconds()) sleep(2.5) done

Sla het programma op, bijvoorbeeld als reactietester. Start het programma via de terminal en kijk eens hoe het werkt! Er lijkt iets nog niet te kloppen met het programma.. Als je door het programma leest (hierboven) kun je dan begrijpen wat er gebeurt? Heb je een idee hoe je dit kunt oplossen? Tip: Gaat de LED uit nadat de reactie-tijd is gemeten? Het programma kan nog verder uitgebreid worden. Bijvoorbeeld met de vraag of je verder wilt gaan, of met een valsspeel-detector. Iemand kan makkelijk vals spelen door de knop ingedrukt te houden. Kun je het programma zelf zo aanpassen dat het programma deze situatie herkend? (Mocht je er niet uitkomen, op de volgende bladzijde staat een voorbeeld).

#import the library from pya20.gpio import gpio from pya20.gpio import port from time import sleep from datetime import datetime import random #initialize the gpio module gpio.init() #setup the port gpio.setcfg(port.pg7, gpio.output) gpio.setcfg(port.pc4, gpio.input) #main programma doorgaan = 0 gpio.output(port.pg7, gpio.low) print ( Reactie snelheidstester gestart ) sleep(2.0) while True: random.seed() sleep(random.random()*10) while not gpio.input(port.pc4): print ( Niet vals spelen! ) start = datetime.now() gpio.output(port.pg7, gpio.high) while gpio.input(port.pc4): pass print ( Your reaction time:, (datetime.now() start).total_seconds()) sleep(2.5) doorgaan = raw_input ( Druk op Enter om door te gaan. ) done =====##### END #####=====