Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save jjros/892c67d1d686f26253a2 to your computer and use it in GitHub Desktop.

Select an option

Save jjros/892c67d1d686f26253a2 to your computer and use it in GitHub Desktop.
/*
Requires:
- pi-gpio
- gpio-admin
This snippet is intended to be the hello world equivalent for working
with the raspberry pi gpio with node.js. This simply flashes an LED
connected to pin 7 based on the duration.
*/
var gpio = require("pi-gpio");
function flashLED(pin, duration) {
return setInterval(function() {
gpio.open(pin, "output", function(err) {
gpio.write(pin, 1, function() {
setTimeout(function() {
gpio.write(pin, 0, function(err) {
gpio.close(pin);
});
}, duration/2);
});
});
}, duration);
}
var intervalID = flashLED(7, 500);
setTimeout(function() {
clearInterval(intervalID);
}, 60000);
# Requires: RPi.GPIO
import RPi.GPIO as GPIO
from threading import Event, Thread, Timer
class ImprovedThread(Thread):
def __init__(self, *args, **kwargs):
super(ImprovedThread, self).__init__(*args, **kwargs)
self._stopEvent = Event()
def stop(self):
self._stopEvent.set()
def is_stopped(self):
return self._stopEvent.isSet()
def wait(self, duration):
self._stopEvent.wait(duration);
class LEDFlasher(ImprovedThread):
def __init__(self, pin, duration):
super(LEDFlasher, self).__init__(target=self._flashLED)
self.setDaemon(True)
self._pin = pin
self._duration = duration
self._state = False
GPIO.setmode(GPIO.BOARD)
GPIO.setup(self._pin, GPIO.OUT)
self.start()
def _flashLED(self):
while not self.is_stopped():
GPIO.output(self._pin, self._state)
self._state = not self._state
self.wait(self._duration/2)
flasher = LEDFlasher(7, 0.5)
Timer(60, flasher.stop).start()
flasher.join()
GPIO.cleanup()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment