[英]Raspberry Node-js GPIO control
我想在按鈕打開的情況下打開 GPIO4 上的 LED。 但什么也沒有發生。 日志不會顯示任何內容。 我想我沒有打開 function 或寫 function。
var http = require('http');
var Gpio = require('onoff').Gpio;
var LED = new Gpio(4, 'out');
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<button onclick="LEDon()">ON</button>');
res.write('<button onclick="LEDoff()">OFF</button>');
function LEDon(){
LED.writeSync(1);
console.log('1');
}
function LEDoff(){
LED.writeSync(0);
console.log('2');
}
res.end();
}).listen(8080);
您好,歡迎來到 SO,
嘗試這個:
var http = require('http');
var HttpDispatcher = require('httpdispatcher');
var Gpio = require('onoff').Gpio;
var dispatcher = new HttpDispatcher();
var LED = new Gpio(4, 'out');
function handleRequest(request, response){
try {
// log the request on console
console.log(request.url);
// Dispatch
dispatcher.dispatch(request, response);
} catch(err) {
console.log(err);
}
}
dispatcher.onGet('/', function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(`
<form action="/on" method="post">
<input type="submit" value="On" />
</form>
`);
res.write(`
<form action="/off" method="post">
<input type="submit" value="Off" />
</form>
`);
});
dispatcher.onPost('/on', function(req, res) {
LED.writeSync(1);
console.log('1');
});
dispatcher.onPost('/off', function(req, res) {
LED.writeSync(0);
console.log('2');
});
http.createServer(handleRequest).listen(8080);
您還需要通過運行npm i httpdispatcher --save
來安裝httpdispatcher
package
您的代碼無法正常工作的原因是因為您試圖通過瀏覽器調用節點中的函數,而這無法直接調用,所以在這里我們通過一些 forms 執行此操作,並將調用發送到 HTTP 服務器,然后觸發您的 GPIO 功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.