Hi guys!<div><br></div><div><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)">I wanted to show you <a href="https://pypi.python.org/pypi/RPIO">RPIO</a></span><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)">, an extension of </span><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252);text-decoration:underline"><a href="http://pypi.python.org/pypi/RPi.GPIO" class="postlink" style="color:rgb(68,68,68);text-decoration:initial">RPi.GPIO</a></span><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)"> with interrupt handling, which I've just uploaded to pypi. This is an example which handles events on 3 gpio pins, each with different edge detection:</span><dl class="codebox" style="margin-bottom:1.5em;padding:3px;background-color:rgb(255,255,255);border:1px solid rgb(216,216,216);color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px">
<dd style="line-height:2em;margin:0px auto"><code style="padding:5px 4px 3px;font-family:Monaco,'Andale Mono','Courier New',Courier,mono;font-size:0.9em;color:rgb(139,139,139);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;background-color:rgb(247,247,249);border:1px solid rgb(225,225,232);overflow:auto;display:block;height:auto;max-height:200px;line-height:1.3em;margin:2px 0px"><span style="font-size:0.9em;line-height:1.3em">import RPIO</span><br>
<br>def do_something(gpio_id, value):<br>    print("New value for GPIO %s: %s" % (gpio_id, value))<br><br>RPIO.add_interrupt_callback(17, do_something, edge='rising')<br>RPIO.add_interrupt_callback(18, do_something, edge='falling')<br>
RPIO.add_interrupt_callback(19, do_something, edge='both', threaded_callback=True)<br>RPIO.wait_for_interrupts()</code></dd></dl><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)">Besides the new interrupt methods, you can use RPIO just as RPi.GPIO. Note that RPIO uses the BCM gpio numbering scheme by default.</span><dl class="codebox" style="margin-bottom:1.5em;padding:3px;background-color:rgb(255,255,255);border:1px solid rgb(216,216,216);color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px">
<dd style="line-height:2em;margin:0px auto"><code style="padding:5px 4px 3px;font-family:Monaco,'Andale Mono','Courier New',Courier,mono;font-size:0.9em;color:rgb(139,139,139);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;background-color:rgb(247,247,249);border:1px solid rgb(225,225,232);overflow:auto;display:block;height:auto;max-height:200px;line-height:1.3em;margin:2px 0px"><span style="font-size:0.9em;line-height:1.3em">import RPIO</span><br>
<br># set up GPIO output channel<br>RPIO.setup(17, RPIO.OUT)<br><br># set gpio 17 to high<br>RPIO.output(17, RPIO.HIGH)<br><br># set up output channel with an initial state<br>RPIO.setup(18, RPIO.OUT, initial=RPIO.LOW)<br>
<br># set up input channel with pull-up control<br>#   (pull_up_down be PUD_OFF, PUD_UP or PUD_DOWN, default PUD_OFF)<br>RPIO.setup(19, <a href="http://RPIO.IN">RPIO.IN</a>, pull_up_down=RPIO.PUD_UP)<br><br># read input from gpio 19<br>
input_value = RPIO.input(19)<br><br># to change to BOARD GPIO numbering<br>RPIO.setmode(RPIO.BOARD)<br><br># to reset every channel that has been set up by this program to INPUT with no pullup/pulldown and no event detection<br>
RPIO.cleanup()</code></dd></dl><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)">The </span><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252);text-decoration:underline"><a href="https://github.com/metachris/raspberrypi-utils/blob/master/RPIO/RPIO.py" class="postlink" style="color:rgb(68,68,68);text-decoration:initial">source code</a></span><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)"> is quite compact and works with Python 2.x and 3.x. Easiest way to get RPIO is with pip or easy_install:</span><dl class="codebox" style="margin-bottom:1.5em;padding:3px;background-color:rgb(255,255,255);border:1px solid rgb(216,216,216);color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px">
<dd style="line-height:2em;margin:0px auto"><code style="padding:5px 4px 3px;font-family:Monaco,'Andale Mono','Courier New',Courier,mono;font-size:0.9em;color:rgb(139,139,139);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;background-color:rgb(247,247,249);border:1px solid rgb(225,225,232);overflow:auto;display:block;height:auto;max-height:200px;line-height:1.3em;margin:2px 0px"><span style="font-size:0.9em;line-height:1.3em">sudo pip install RPIO</span></code></dd>
</dl><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)">The source code is published under the MIT license.</span></div>
<div><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)"><br></span></div><div><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)">Any feedback is appreciated!</span></div>
<div><font color="#333333" face="Helvetica Neue, Helvetica, Arial, sans-serif"><span style="line-height:19.234375px">- Chris</span></font></div><div><span style="color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:19.234375px;background-color:rgb(252,252,252)"><br>
</span></div><div><ul><li><font color="#333333" face="Helvetica Neue, Helvetica, Arial, sans-serif"><span style="line-height:19.234375px"><a href="https://pypi.python.org/pypi/RPIO">https://pypi.python.org/pypi/RPIO</a></span></font></li>
<li><font color="#333333" face="Helvetica Neue, Helvetica, Arial, sans-serif"><span style="line-height:19.234375px"><a href="https://github.com/metachris/raspberrypi-utils">https://github.com/metachris/raspberrypi-utils</a></span></font></li>
<li><font color="#333333" face="Helvetica Neue, Helvetica, Arial, sans-serif"><span style="line-height:19.234375px"><a href="http://pypi.python.org/pypi/RPi.GPIO">http://pypi.python.org/pypi/RPi.GPIO</a></span></font></li>
</ul></div>