1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00
node-red/nodes/core/hardware/36-rpi-gpio.html

184 lines
8.9 KiB
HTML

<!--
Copyright 2013,2014 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<script type="text/x-red" data-template-name="rpi-gpio in">
<div class="form-row">
<label for="node-input-pin"><i class="fa fa-circle"></i> GPIO Pin</label>
<select type="text" id="node-input-pin" style="width: 200px;">
<option value="-" disabled>select pin </option>
<option value="3">3 - SDA1 </option>
<option value="5">5 - SCL1 </option>
<option value="7">7 - GPIO7</option>
<option value="8">8 - TxD </option>
<option value="10">10 - RxD </option>
<option value="11">11 - GPIO0</option>
<option value="12">12 - GPIO1</option>
<option value="13">13 - GPIO2</option>
<option value="15">15 - GPIO3</option>
<option value="16">16 - GPIO4</option>
<option value="18">18 - GPIO5</option>
<option value="19">19 - MOSI </option>
<option value="21">21 - MISO </option>
<option value="22">22 - GPIO6</option>
<option value="23">23 - SCLK </option>
<option value="24">24 - CE0 </option>
<option value="26">26 - CE1 </option>
</select>
&nbsp;<span id="pitype"></span>
</div>
<div class="form-row">
<label for="node-input-intype"><i class="fa fa-long-arrow-up"></i> Resistor?</label>
<select type="text" id="node-input-intype" style="width: 150px;">
<option value="tri">none</option>
<option value="up">pullup</option>
<option value="down">pulldown</option>
<!--<option value="tri">tristate</option>-->
</select>
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-tips">Tip: Only Digital I/O is supported - input must be 0 or 1.</div>
</script>
<script type="text/x-red" data-help-name="rpi-gpio in">
<p>Raspberry Pi input node. Generates a <b>msg.payload</b> with either a 0 or 1 depending on the state of the input pin. Requires the gpio command to work.</p>
<p>You may also enable the input pullup resitor or the pulldown resistor.</p>
<p>The <b>msg.topic</b> is set to <i>pi/{the pin number}</i></p>
<p><b>Note:</b> we are using the actual physical pin numbers on connector P1 as they are easier to locate.</p>
<p><b>Note:</b> This node currently polls the pin every 250mS. This is not ideal as it loads the cpu, and will be rewritten shortly to try to use interrupts.</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('rpi-gpio in',{
category: 'advanced-input',
color:"#c6dbef",
defaults: {
name: { value:"" },
intype: { value: "in" },
pin: { value:"",required:true,validate:RED.validators.number() },
},
inputs:0,
outputs:1,
icon: "rpi.png",
label: function() {
return this.name||"Pin: "+this.pin ;
},
labelStyle: function() {
return this.name?"node_label_italic":"";
},
oneditprepare: function() {
$.getJSON('rpi-gpio/'+this.id,function(data) {
$('#pitype').text(data.type);
if (data.type === "Model B+") {
$('#node-input-pin').append($("<option></option>").attr("value",27).text("27 - SDA0"));
$('#node-input-pin').append($("<option></option>").attr("value",28).text("28 - SCL0"));
$('#node-input-pin').append($("<option></option>").attr("value",29).text("29 - GPIO21"));
$('#node-input-pin').append($("<option></option>").attr("value",31).text("31 - GPIO22"));
$('#node-input-pin').append($("<option></option>").attr("value",32).text("32 - GPIO26"));
$('#node-input-pin').append($("<option></option>").attr("value",33).text("33 - GPIO23"));
$('#node-input-pin').append($("<option></option>").attr("value",35).text("35 - GPIO24"));
$('#node-input-pin').append($("<option></option>").attr("value",36).text("36 - GPIO27"));
$('#node-input-pin').append($("<option></option>").attr("value",37).text("37 - GPIO25"));
$('#node-input-pin').append($("<option></option>").attr("value",38).text("38 - GPIO28"));
$('#node-input-pin').append($("<option></option>").attr("value",40).text("40 - GPIO29"));
}
});
}
});
</script>
<script type="text/x-red" data-template-name="rpi-gpio out">
<div class="form-row">
<label for="node-input-pin"><i class="fa fa-circle"></i> GPIO Pin</label>
<select type="text" id="node-input-pin" style="width: 200px;">
<option value="-">select pin </option>
<option value="3">3 - SDA1 </option>
<option value="5">5 - SCL1 </option>
<option value="7">7 - GPIO7</option>
<option value="8">8 - TxD </option>
<option value="10">10 - RxD </option>
<option value="11">11 - GPIO0</option>
<option value="12">12 - GPIO1</option>
<option value="13">13 - GPIO2</option>
<option value="15">15 - GPIO3</option>
<option value="16">16 - GPIO4</option>
<option value="18">18 - GPIO5</option>
<option value="19">19 - MOSI </option>
<option value="21">21 - MISO </option>
<option value="22">22 - GPIO6</option>
<option value="23">23 - SCLK </option>
<option value="24">24 - CE0 </option>
<option value="26">26 - CE1 </option>
</select>
&nbsp;<span id="pitype"></span>
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-tips">Tip: Only Digital I/O is supported - input must be 0 or 1.</div>
</script>
<script type="text/x-red" data-help-name="rpi-gpio out">
<p>Raspberry Pi output node. Expects a <b>msg.payload</b> with either a 0 or 1 (or true or false). Requires the gpio command to work.</p>
<p>Will set the selected physical pin high or low depending on the value passed in.</p>
<p><b>Note:</b> we are using the actual physical pin numbers on connector P1 as they are easier to locate.</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('rpi-gpio out',{
category: 'advanced-output',
color:"#c6dbef",
defaults: {
name: { value:"" },
pin: { value:"",required:true,validate:RED.validators.number() },
},
inputs:1,
outputs:0,
icon: "rpi.png",
align: "right",
label: function() {
return this.name||"Pin: "+this.pin;
},
labelStyle: function() {
return this.name?"node_label_italic":"";
},
oneditprepare: function() {
$.getJSON('rpi-gpio/'+this.id,function(data) {
$('#pitype').text(data.type);
if (data.type === "Model B+") {
$('#node-input-pin').append($("<option></option>").attr("value",27).text("27 - SDA0"));
$('#node-input-pin').append($("<option></option>").attr("value",28).text("28 - SCL0"));
$('#node-input-pin').append($("<option></option>").attr("value",29).text("29 - GPIO21"));
$('#node-input-pin').append($("<option></option>").attr("value",31).text("31 - GPIO22"));
$('#node-input-pin').append($("<option></option>").attr("value",32).text("32 - GPIO26"));
$('#node-input-pin').append($("<option></option>").attr("value",33).text("33 - GPIO23"));
$('#node-input-pin').append($("<option></option>").attr("value",35).text("35 - GPIO24"));
$('#node-input-pin').append($("<option></option>").attr("value",36).text("36 - GPIO27"));
$('#node-input-pin').append($("<option></option>").attr("value",37).text("37 - GPIO25"));
$('#node-input-pin').append($("<option></option>").attr("value",38).text("38 - GPIO28"));
$('#node-input-pin').append($("<option></option>").attr("value",40).text("40 - GPIO29"));
}
});
$
}
});
</script>