text processing utilities

Lua-Modul für den Pi

Pi and More RPi.GPIO.Lua-Workshop am 28. Juni 2014!

Lua-Modul für Raspberry Pi

Dieses Paket enthält ein Lua-Modul um die GPIOs auf dem Raspberry Pi anzusteuern.

Die Hauptfunktion wird vom RPi.GPIO Python Modul von Ben Croston bereitgestellt.
Folgende Funktionen sind implementiert:

Pin-Funktionen:

Interrupts und Events:

PWM:

Installation (manuell)

Lade die beiden GPIO Quellpakete (siehe Links unten) herunter und folge den enthaltenen Anweisungen.

Installation (luarocks-Paket, beschrieben für Raspbian)

sudo apt-get install lua5.1 liblua5.1-0-dev
sudo apt-get install luarocks

sudo luarocks install rpi-gpio

# für PWM und Events:
sudo luarocks install copas
sudo luarocks install darksidesync

# für das Modul GPIO.lcd-hd44780:
sudo luarocks install bit32

Beispiel: Simon-Spiel

Simon ist ein elektronisches Merkspiel: Vier LEDs leuchten zufällig auf, bei jeder LED wird ein kurzes Tonsignal ausgegeben. Der Spieler drückt anschließend für jede LED einen Button. Hat er die Sequenz richtig eingegeben, leuchtet in der nächsten Runde eine LED mehr auf.

Vorbereitung:

01 GPIO=require "GPIO"
02 
03 btnExit = 21
04 buttons = {7, 15, 13, 11, btnExit}
05 leds={12, 16, 18, 26}
06 
07 GPIO.setmode(GPIO.BOARD)
08 GPIO.setwarnings(False)
09 math.randomseed(os.time())
10 
11 for k,v in pairs(buttons) do
12   GPIO.setup(v, GPIO.IN,  GPIO.PUD_DOWN)
13 end
14 
15 for k,v in pairs(leds) do
16   GPIO.setup(v, GPIO.OUT)
17 end
18 
19 flashLED = function (cycles) 
20   for x=1, cycles*2 do
21     for k,v in pairs(leds) do 
22       GPIO.output(v, x%2); 
23     end
24     os.execute("sleep 0.2")
25   end
26 end
27 
28 beep = function(num, wait)
29   GPIO.output(leds[num], 1)
30   os.execute("ogg123 --quiet -K1 beep"..num..".ogg")
31   GPIO.output(leds[num], 0)
32   if wait==true then os.execute("sleep 0.1") end
33 end
34 
35 quit=function()
36   GPIO.cleanup()
37   os.exit()
38 end
39 
40 flashLED(3)
41 
42 playlist = {}
43 
44 while true do
45   
46   playlist[#playlist+1] = math.random(4)
47   
48   for k,v in pairs (playlist) do
49     beep(v, true)
50   end
51   
52   for k,v in pairs (playlist) do
53     waitForUser=true
54     while waitForUser do
55       
56       for kb,vb in pairs(buttons) do 
57         if GPIO.input(vb) == true then
58           if (vb~=buttons[v]) then 
59 	    if vb~=btnExit then os.execute("ogg123 --quiet gameover.ogg") end
60 	    quit()
61           else 
62  	    beep(v, false)
63           end
64           waitForUser=false
65         end
66       end
67     end
68   end
69   
70   flashLED(1) 
71 end

Download (0.1)

RPi.GPIO.Lua Modul (5 KB)

RPi.GPIO Modul

Download (Fork mit PWM und Events, 0.2.x)

  1. http://sourceforge.net/projects/raspberry-gpio-python/
  2. https://github.com/Tieske/rpi-gpio/tree/master/lua/scripts
  3. https://github.com/Tieske/rpi-gpio/
  4. https://github.com/Tieske/DarkSideSync
  5. https://github.com/Tieske/rpi-gpio/blob/master/lua/scripts/test6_callbacks.lua
  6. https://github.com/Tieske/rpi-gpio/blob/master/lua/README.md

Pi&More 5 Präsentation

Foliensatz und Beispielcode (1.1 MB)

Hochwald IT Xenianer.de