先上图

前段时间, 花了点时间给女儿做了个数学习题的小程序

首页

做题界面(题目每次都随机生成, 加减乘除都有)

做题记录

现在问题来了, 怎么才能随时知道作业有没有完成呢?

每次打开做题记录页面刷新太费劲了

于是做了个树莓派+小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(); //创建 P36 引脚
led.open(Gpio.OUTPUT, Gpio.LOW); //设置为 OUTPUT、默认低电平 console.log("作业系统启动中...");
flashLed(); var url = "http://116.62.192.119:3001/check";
//var url = "http://116.62.192.119:3001/check?cdata=2017-8-10";
var delayt = ;
function checkCurDayHW() { //check current day homework;
server.download(url, function (data) {
data = JSON.parse(data);
flashLed();
if (data && data.length > ) {
//当天作业已完成
console.log(data.length);
led.state = ; console.log("当天作业已完成");
delayt = * * ; //1小时检测一次
} else {
delayt = * ; //30秒检测一次
console.log("未检测到作业..."+delayt+"秒后再检查");
} setTimeout(function(){checkCurDayHW()}, delayt);
});
}
checkCurDayHW(); /**
* 闪灯功能
* @param times 闪烁次数
*/
function flashLed(times){
for(var i = ; i < times; i++){
led.toggle(); //切换 led 的电平状态
led.sleep(); //等待 500ms
}
led.state = ;
} //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

不知怎么放视频,直接上链接:https://v.qq.com/x/page/u0537lbcfxh.html

如果环境没搭好, 请先浏览前面2篇文章:

树莓派.安装系统+Node.js+MongoDB系列环境

树莓派.安装Samba环境

树莓派.使用Node.js控制GPIO

树莓派.使用Node.js来制作一个作业检查仪的更多相关文章

  1. Node.js 撸第一个Web应用

    使用Node.js 创建Web 应用与使用PHP/Java 语言创建Web应用略有不同. 使用PHP/Java 来编写后台代码时,需要Apache 或者 Nginx 的HTTP 服务器,而接受请求和提 ...

  2. Vue.js:安装node js到构建一个vue并启动它

    ylbtech-Vue.js:从安装node js到构建一个vue并启动它 1.返回顶部 1. 1.安装node js 下载地址:http://nodejs.cn/download/2.安装完成后运行 ...

  3. 树莓派.使用Node.js控制GPIO

    树莓派上的40个GPIO是最好玩的东西 它们可以被C,/C++, Python, Java等语言直接控制 现在就来看看怎么用Node.js做到同样的事情 在试验之前, 请先安装好Node.js, 具体 ...

  4. <node.js爬虫>制作教程

    前言:最近想学习node.js,突然在网上看到基于node的爬虫制作教程,所以简单学习了一下,把这篇文章分享给同样初学node.js的朋友. 目标:爬取 http://tweixin.yueyishu ...

  5. 树莓派安装node.js

    因为树莓派是arm架构,node.js上并没有提供arm架构的二进制包下载. 试过使用apt包管理安装和直接node.js源代码编译安装(编译了四五个小时...),都没有成功,报非法指令错误,预计还是 ...

  6. 在Sublime Text3 开发Node.js遇到的一个小问题

    原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 以前的Sublime Text 2包管理出现问题了,不能安装新包,让人开发很捉急,今天装了个3,这个问题解决了 那我们就 ...

  7. 用 node.js 创建第一个Hello World

    如果我们使用PHP来编写后端的代码时,需要Apache(xampp) 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi.从这个角度看,整个"接收 HTTP ...

  8. node.js如何制作命令行工具(一)

    之前使用过一些全局安装的NPM包,安装完之后,可以通过其提供的命令,完成一些任务.比如Fis3,可以通过fis3 server start 开启fis的静态文件服务,通过fis3 release开启文 ...

  9. 使用Node.js简单创建一个服务器

    首先,我们要了解Node.js不是一种语言,它只是一个除了浏览器之外的,可以运行js的环境. 其次,Node能做些什么 ? web服务器.  命令行工具.   网络爬虫. 桌面应用程序开发等 3.接下 ...

随机推荐

  1. 控制结构(6) 最近最少使用(LRU)

    // 上一篇:必经之地(using) // 下一篇:程序计数器(PC) 基于语言提供的基本控制结构,更好地组织和表达程序,需要良好的控制结构. There are only two hard thin ...

  2. ztree 获取根节点

    function getRoot() { var treeObj = $.fn.zTree.getZTreeObj("tree-div"); //返回一个根节点 var node ...

  3. sehll 小脚本的应用

    1.模拟linnux登录shell #/bin/bash echo -n "login:" read name echo -n "password:" read ...

  4. python之socket编程------粘包

    一.粘包 什么是粘包 只有TCP只有粘包现象,UDP永远不会粘包 所谓粘包问题主要还是因为接收方不知道之间的界限,不知道一次性提取多少字节的数据所造成的 两种情况发生粘包: 1.发送端需要等缓冲区满才 ...

  5. Intellij IDEA WEB结构目录说明【转载】

    https://my.oschina.net/lujianing/blog/186737?p=1#OSC_h2_1

  6. 浅谈IT技术女转战微电商初体验

    今天闲来无事,突然想翻看下之前写的技术博客,很是意外,居然那么多阅读量,于是想想做微商也有一段时间了,决定写写初入微商的初体验. 先自我介绍一下,本人是一名理工女,做IT行业的,这个行业也许有人了解, ...

  7. 【DDD】领域驱动设计实践 —— UI层实现

    前面几篇blog主要介绍了DDD落地架构及业务建模战术,后续几篇blog会在此基础上,讲解具体的架构实现,通过完整代码demo的形式,更好地将DDD的落地方案呈现出来.本文是架构实现讲解的第一篇,主要 ...

  8. 我是如何利用Hadoop做大规模日志压缩的

    背景 刚毕业那几年有幸进入了当时非常热门的某社交网站,在数据平台部从事大数据开发相关的工作.从日志收集.存储.数据仓库建设.数据统计.数据展示都接触了一遍,比较早的赶上了大数据热这波浪潮.虽然今天的人 ...

  9. asp.net mvc项目实记-开启伪静态-Bundle压缩css,js

    百度这些东西,还是会浪费了一些不必要的时间,记录记录以备后续 一.开启伪静态 如果不在web.config中配置管道开关则伪静态无效 首先在RouteConfig.cs中中注册路由 routes.Ma ...

  10. netty4.x 传输文件

    一:简介 netty传输文件的例子并不多,当前的项目刚才需要使用netty,所以就记录一下使用方法,使用netty传输文件,首先需要启动一个服务端,等待服务端请求监听,然后传输文件的时候,启动一个客户 ...