v20140402
02 < index > 04
opl. oef.

GPIO aansturen onder RISC OS

Deel 03, GPIO als uitgang voor een LED

Eigenschappen van de GPIO pinnen
Een LED aansluiten op GPIO pin 4
Checken met !GPIOConfig
Stap voor stap aansturen
Alles in een bestand
Enkele aanvullingen
De structuur van een echt programma
Samenvatting
Extra oefeningen
Bronnen

top

Eigenschappen van de GPIO pinnen
GPIO
+5V
-
GND
14
15
18
-
23
24
-
25
8
7
header
2
4
6
8
10
12
14
16
18
20
22
24
26
header
1
3
5
7
9
11
13
15
17
19
21
23
25
GPIO
+3.3V
2
3
4
-
17
27
22
-
10
19
11
-
Een duidelijk schema, incl. een printversie in pdf bij http://wiringpi.com/pins/ of hier enkel de pdf met overzicht van de pinnen.
Nog meer informatie op deze Wiki pagina en in de BCM2835 ARM Peripherals, vanaf pagina 89.

top

Een LED aansluiten op GPIO pin 4
Een goed doordachte hardware zal het programmeren eenvoudiger maken. Tijdens onze eerste stappen hebben we nog een ruime keuze welke pinnen we gaan gebruiken.

top

Checken met !GPIOConfig
Het programma "!GPIOConfig" kan gebruikt worden om de toestand van de GPIO pinnen te lezen, te veranderen en om een bepaalde configuratie te bewaren. Wij gaan het nu even gebruiken om te testen of ons ledje goed is aangesloten. Later zullen we "!GPIOConfig" nog gebruiken, al was het maar om tijdens het runnen van ons eigen programma, de toestand van de GPIO pinnen weer te geven/ te kunnen volgen. Erg handig en gemakkelijk tijdens het zoeken naar foutjes.

top

Stap voor stap aansturen
Proficiat !

We verlaten BASIC met "QUIT".

top

Alles in een bestand
Stap voor stap is natuurlijk al iets, maar we willen dat de computer het ledje laat knipperen !

top

Enkele aanvullingen
Ons BASIC programma werkt eigenlijk alleen maar omdat we reeds handmatig de GPIO pin 4 als uitgang hebben ingesteld.
Een grote proficiat !!!

top

De basis-structuur van een echt programma
Ons BASIC programma werkt, maar Eerst even kijken: met ingedrukte shift-toets klikken op !PiLed.
We gaan even vergelijken: met ingedrukte shift-toets klikken op "!GPIOConfig", het 2de programma in de GPIO.zip
We herkennen direct de basis-structuur, niet ?

Op een vrij eenvoudige manier kunnen we ons progamma aanvullen/aanpassen

top

Samenvatting
RISC OS TaskWindow/BASIC Raspian Python
*Help GPIO
*GPIOMachine

>SYS "GPIO_GetBoard" TO variable

>SYS "GPIO_ReadMode",gpio-nr% TO variable%
>SYS "GPIO_WriteMode",gpio-nr,1 (output)

>SYS "GPIO_WriteData",gpio-nr,1
>SYS "GPIO_WriteData",gpio-nr,0

bash, some basic commando's

gpio -g mode gpio-nr out
gpio -g write gpio-nr 1
gpio -g write gpio-nr 0

 

gpio export gpio-nr out
gpio unexport gpio-nr
gpio exports = check

knipperled

REM is dit een Raspberry Pi ?
SYS "GPIO_GetBoard" TO board%

IF board% = 11 OR board% = 12 THEN
   PRINT "Dit is een Raspberry Pi ";
   IF board%=11 THEN PRINT "A"
   IF board%=12 THEN PRINT "B"

   REM de waarde achter pin% is het GPIO pin nummer
   pin%=17 : PRINT "GPIO pin nummer is "+STR$(pin%)

   REM is GPIO pin reeds een uitgang ?
   SYS "GPIO_ReadMode",pin% TO mode%
   IF mode% <> 1 THEN
       SYS "GPIO_WriteMode",pin%,1
       PRINT "GPIO pin is nu een uitgang."
   ELSE
       PRINT "GPIO pin was al een uitgang."
   ENDIF

   REM do this forever
   REPEAT
       SYS "GPIO_WriteData",pin%,1
       t%=TIME:REPEAT UNTIL TIME-t%>100
       SYS "GPIO_WriteData",pin%,0
       t%=TIME:REPEAT UNTIL TIME-t%>100
   UNTIL FALSE

ENDIF
END

Dubbel-klikken om programma te starten.

flashled.sh

gpio -g mode 4 out
while true
do
   gpio -g write 4 1
   sleep 0.5
   gpio -g write 4 0
   sleep 0.5
done

execute in terminal window as
bash flashled.sh

flashled.py

# start
import os
import wiringpi
from time import sleep

os.system( 'gpio export 4 out' )
sleep (0.5)

io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_SYS)
io.pinMode(4,io.OUTPUT)

while True:
   io.digitalWrite(4,1)
   sleep(1)
   io.digitalWrite(4,0)
   sleep(1)
# end

execute in terminal window as
python flashled.py

top

Extra oefeningen
Enkele variaties en uitbreidingen om een ledje aan te sturen
Klik hier voor een mogelijk oplossing, met korte beschrijving.

top

Bronnen

top

Wordt vervolgd.
Frank RISCOS.be