標籤:ati html 切換 jpg 控制 rda htm toggle www
先
前段時間, 花了點時間給女兒做了個數學習題的小程式
首頁
做題介面(題目每次都隨機產生, 加減乘除都有)
做題記錄
現在問題來了, 怎麼才能隨時知道作業有沒有完成呢?
每次開啟做題記錄頁面重新整理太費勁了
於是做了個樹莓派+小LED燈的裝置, 準系統如下:
LED閃爍 - 表示正在檢查作業,且當天作業未完成
LED常亮 - 表示檢測到作業已完成
每天重設一次LED狀態
準備物料:
- 樹莓派
- LED燈珠1個, 電阻一個(220歐姆或1K都可以)
接線:
第36腳(GPIO16) 經過一個電阻(220歐或1K都可以),再接到LED的正級
LED負級接到第34腳(GND)
程式
先準備一個package.json
{ "name": "sl.math.raspi", "version": "0.0.1", "dependencies":{ "rpio2":"0.4.1", "moment":"2.18.1" }}
然後是index.js主程式
/** * 作業檢測儀 * 閃燈 - 正在檢查作業中 * 常亮 - 當天作業已完成 */var server = require("./curl");const Gpio = require(__dirname+‘/node_modules/rpio2/lib/index.js‘).Gpio;var led = new Gpio(36); //建立 P36 引腳led.open(Gpio.OUTPUT, Gpio.LOW); //設定為 OUTPUT、預設低電平console.log("作業系統啟動中...");flashLed(10);var url = "http://116.62.192.119:3001/check";//var url = "http://116.62.192.119:3001/check?cdata=2017-8-10";var delayt = 30000;function checkCurDayHW() { //check current day homework; server.download(url, function (data) { data = JSON.parse(data); flashLed(10); if (data && data.length > 0) { //當天作業已完成 console.log(data.length); led.state = 1; console.log("當天作業已完成"); delayt = 60 * 60 * 1000; //1小時檢測一次 } else { delayt = 30 * 1000; //30秒檢測一次 console.log("未檢測到作業..."+delayt+"秒後再檢查"); } setTimeout(function(){checkCurDayHW()}, delayt); });}checkCurDayHW();/** * 閃燈功能 * @param times 閃爍次數 */function flashLed(times){ for(var i = 0; i < times; i++){ led.toggle(); //切換 led 的電平狀態 led.sleep(300); //等待 500ms } led.state = 0;}//led.close();//process.exit(); //退出程式
還有一個組件cur.js
var http = require("http");// Utility function that downloads a URL and invokes// callback with the data.function download(url, callback) { http.get(url, function(res) { var data = ""; res.on(‘data‘, function (chunk) { data += chunk; }); res.on("end", function() { callback(data); }); }).on("error", function() { callback(null); });}exports.download = download;
把3個檔案複製到樹莓派上自建的目錄
目錄結構:
然後在目錄裡先執行
npm install
完成後啟動運行
node index.js
如果環境沒搭好, 請先瀏覽前面2篇文章:
樹莓派.安裝系統+Node.js+MongoDB系列環境
樹莓派.安裝Samba環境
樹莓派.使用Node.js控制GPIO
樹莓派.使用Node.js來製作一個作業檢查儀