樹莓派.使用Node.js來製作一個作業檢查儀

來源:互聯網
上載者:User

標籤: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來製作一個作業檢查儀

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.