1
0
mirror of https://github.com/node-red/node-red-nodes.git synced 2023-10-10 13:36:58 +02:00

more node-red-nodes hardware section info updates

and update Pibrella to use latest nrgpio debounce thinking
This commit is contained in:
Dave Conway-Jones 2016-02-12 21:27:02 +00:00
parent c60d62f27b
commit b0c8b1e83f
9 changed files with 66 additions and 31 deletions

View File

@ -39,8 +39,8 @@
</script>
<script type="text/x-red" data-help-name="rpi-pibrella in">
<p>Raspberry Pi Pibrella input node. Generates a <b>msg.payload</b> with either a 0 or 1 depending on the state of the input pin.</p>
<p>The <b>msg.topic</b> is set to <i>pibrella/{the pin id}</i>, A, B, C, D or R</p>
<p>Raspberry Pi Pibrella input node. Generates a <code>msg.payload</code> with either a 0 or 1 depending on the state of the input pin.</p>
<p>The <code>msg.topic</code> is set to <i>pibrella/{the pin id}</i>, A, B, C, D or R</p>
<p>Requires the RPi.GPIO python library version 0.5.8 (or better) in order to work.</p>
</script>
@ -110,9 +110,10 @@
<script type="text/x-red" data-help-name="rpi-pibrella out">
<p>Raspberry Pi Pibrella output node. The Pibrella board must be fitted.</p>
<p>Will set the selected output high (on) or low (off) depending on the value passed in. Expects a <b>msg.payload</b> with either a 0 or 1 (or true or false).</p>
<p>Will set the selected output high (on) or low (off) depending on the value passed in. Expects a
<code>msg.payload</code> with either a 0 or 1 (or true or false).</p>
<p>In PWM mode you can dim the onboard LEDs - expects a number from 0 - 100 (%).</p>
<p>The Buzzer takes a number in Hz (up to about 4000), or 0 for off, and 1 is a shortcut for 262.</div></p>
<p>The Buzzer takes a number in Hz (up to about 4000), or 0 for off, and 1 is a shortcut for a buzz at about 262Hz.</p>
<p>Requires the RPi.GPIO python library version 0.5.8 (or better) in order to work.</p>
</script>

View File

@ -20,7 +20,7 @@ module.exports = function(RED) {
var spawn = require('child_process').spawn;
var fs = require('fs');
var gpioCommand = __dirname+'/nrgpio.py';
var gpioCommand = __dirname+'/nrgpio';
if (!fs.existsSync("/dev/ttyAMA0")) { // unlikely if not on a Pi
//util.log("Info : Ignoring Raspberry Pibrella specific node.");
@ -90,7 +90,7 @@ module.exports = function(RED) {
}
if (node.pin !== undefined) {
node.child = spawn(gpioCommand, ["in",node.pin]);
node.child = spawn(gpioCommand, ["in",node.pin,"down",35]);
node.running = true;
node.status({fill:"green",shape:"dot",text:"OK"});

View File

@ -1,3 +1,4 @@
#!/bin/bash
#
# Copyright 2014 IBM Corp.
#

View File

@ -1,6 +1,6 @@
#!/usr/bin/python
#
# Copyright 2014 IBM Corp.
# Copyright 2014,2016 IBM Corp.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@ -15,15 +15,19 @@
# Import library functions we need
import RPi.GPIO as GPIO
import struct
import sys
import os
import subprocess
from time import sleep
bounce = 20 # bounce time in mS to apply
bounce = 25;
if sys.version_info >= (3,0):
print("Sorry - currently only configured to work with python 2.x")
sys.exit(1)
if len(sys.argv) > 1:
if len(sys.argv) > 2:
cmd = sys.argv[1].lower()
pin = int(sys.argv[2])
GPIO.setmode(GPIO.BOARD)
@ -92,18 +96,18 @@ if len(sys.argv) > 1:
elif cmd == "in":
#print "Initialised pin "+str(pin)+" to IN"
bounce = int(sys.argv[4])
def handle_callback(chan):
sleep(bounce/1000)
print GPIO.input(chan)
if len(sys.argv) == 4:
if sys.argv[3].lower() == "up":
GPIO.setup(pin,GPIO.IN,GPIO.PUD_UP)
elif sys.argv[3].lower() == "down":
GPIO.setup(pin,GPIO.IN,GPIO.PUD_DOWN)
else:
GPIO.setup(pin,GPIO.IN)
if sys.argv[3].lower() == "up":
GPIO.setup(pin,GPIO.IN,GPIO.PUD_UP)
elif sys.argv[3].lower() == "down":
GPIO.setup(pin,GPIO.IN,GPIO.PUD_DOWN)
else:
GPIO.setup(pin,GPIO.IN)
print GPIO.input(pin)
GPIO.add_event_detect(pin, GPIO.BOTH, callback=handle_callback, bouncetime=bounce)
@ -166,12 +170,6 @@ if len(sys.argv) > 1:
except:
data = 0
elif cmd == "rev":
print GPIO.RPI_REVISION
elif cmd == "ver":
print GPIO.VERSION
elif cmd == "mouse": # catch mice button events
file = open( "/dev/input/mice", "rb" )
oldbutt = 0
@ -193,5 +191,40 @@ if len(sys.argv) > 1:
file.close()
sys.exit(0)
elif cmd == "kbd": # catch keyboard button events
try:
while not os.path.isdir("/dev/input/by-path"):
time.sleep(10)
infile = subprocess.check_output("ls /dev/input/by-path/ | grep -m 1 'kbd'", shell=True).strip()
infile_path = "/dev/input/by-path/" + infile
EVENT_SIZE = struct.calcsize('llHHI')
file = open(infile_path, "rb")
event = file.read(EVENT_SIZE)
while event:
(tv_sec, tv_usec, type, code, value) = struct.unpack('llHHI', event)
#if type != 0 or code != 0 or value != 0:
if type == 1:
# type,code,value
print("%u,%u" % (code, value))
event = file.read(EVENT_SIZE)
print "0,0"
file.close()
sys.exit(0)
except:
file.close()
sys.exit(0)
elif len(sys.argv) > 1:
cmd = sys.argv[1].lower()
if cmd == "rev":
print GPIO.RPI_REVISION
elif cmd == "ver":
print GPIO.VERSION
elif cmd == "info":
print GPIO.RPI_INFO
else:
print "Bad parameters - in|out|pwm|buzz|byte|borg|mouse|kbd|ver|info {pin} {value|up|down}"
print " only ver (gpio version) and info (board information) accept no pin parameter."
else:
print "Bad parameters - in|out|pwm|buzz|byte|borg|mouse|ver pin {value|up|down}"
print "Bad parameters - in|out|pwm|buzz|byte|borg|mouse|kbd|ver|info {pin} {value|up|down}"

View File

@ -1,6 +1,6 @@
{
"name" : "node-red-node-pibrella",
"version" : "0.0.9",
"version" : "0.0.10",
"description" : "A Node-RED node to read from and write to a Pibrella Raspberry Pi add-on board",
"dependencies" : {
},

View File

@ -32,7 +32,7 @@
<script type="text/x-red" data-help-name="blink1">
<p>ThingM Blink1 output node.</p>
<p>Expects a <b>msg.payload</b> with either a three part csv string of
<p>Expects a <code>msg.payload</code> with either a three part csv string of
<i>r,g,b</i> or a hex colour <i>#rrggbb</i></p>
<p>You can also use the <a href="http://www.cheerlights.com/control-cheerlights" target="_new">@cheerlights</a>
colour names - red, green, blue, cyan, magenta, yellow, orange, pink,

View File

@ -1,6 +1,6 @@
{
"name" : "node-red-node-blink1",
"version" : "0.0.12",
"version" : "0.0.13",
"description" : "A Node-RED node to control a Thingm Blink(1)",
"dependencies" : {
"node-blink1" : "0.2.3"

View File

@ -57,16 +57,16 @@
<p>Raspberry Pi node to drive a string of neopixel or ws2812 LEDs.</p>
<p>Defaults to a bar chart style mode using configured foreground and background colours.
It can also display a needle (single pixel) type gauge.</p>
<p>It can accept a number in <b>msg.payload</b> that can be either the
<p>It can accept a number in <code>msg.payload</code> that can be either the
number of pixels, or a percentage of the total length.</p>
<p>If you want to change the foregound colour, you can send a CSV of <i>html colour,length</i>.</p>
<p>To set the background just send an <i>html colour</i> name.
<a href="http://html-color-codes.info/color-names/" target="_top">Here
is a list</a> of html colour names.<p>
<p>You can also select shift modes where a single colour pixel is added to either the start or the end of the strip.</p>
<p>The <i>nth</i> pixel is set by <b>msg.payload</b> with a CSV string <i>n,r,g,b</i>
<!-- <p>The whole strip is set by <b>msg.payload</b> with a CSV string <i>r,g,b</i> -->
<p>A range of pixels from <i>x</i> to <i>y</i> can be set by <b>msg.payload</b>
<p>The <i>nth</i> pixel is set by <code>msg.payload</code> with a CSV string <i>n,r,g,b</i>
<!-- <p>The whole strip is set by <code>msg.payload</code> with a CSV string <i>r,g,b</i> -->
<p>A range of pixels from <i>x</i> to <i>y</i> can be set by <code>msg.payload</code>
with a CSV string <i>x,y,r,g,b</i>
<p>The pixels data line should be connected to Pi physical pin 12 - GPIO 18. <i>Note:</i>
this may conflict with audio playback.</p>

View File

@ -1,6 +1,6 @@
{
"name" : "node-red-node-pi-neopixel",
"version" : "0.0.7",
"version" : "0.0.8",
"description" : "A Node-RED node to output to a neopixel (ws2812) string of LEDS from a Raspberry Pi.",
"dependencies" : {
},