先上图

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

首页

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

做题记录

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

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

于是做了个树莓派+小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. Java通过链表实现栈

    class LinkedStack<T> { private Node top; private int size; /** * 初始化栈 */ public LinkedStack() ...

  2. 小知识点-ios跳过app store更新版本

    版本更新实现的思路 获取自身的版本号 获取AppStore的版本号 自身的版本号和AppStore的比较 弹窗提示所需数据的获取的方式 1.获取自身的版本号 2.AppStore的版本号 Wechat ...

  3. Linux入门之常用命令(4)vi编辑器

    vi分为三种模式 一般模式:删除字符.删除整行.复制粘贴等操作 编辑模式:i o a r进入 输入字符  Esc退出 命令行模式::或/ 将光标移动到最末行 搜寻数据 读取或替换 退出vi 显示行号 ...

  4. Android在 普通类(非Activity,多数为Adapter) 中 传输数据为空值 解决方法 :在startActivity 用 intent传输数据

    这是bundle是传输不了数据的,获取到 出现这种情况的原因是非activity类中不存在Context,而在活动中传输数据时需要Context. 我收集到了两种解决方法. 1. 在调用该Adapte ...

  5. Android Studio 字体和字号调整

    点击File,Settings. 找到Editor-Colors&Fonts-Font 点击Save As... 改个名字点击OK. 1为字体,2为字号,3为行间距. 我认为字体设置为Cons ...

  6. PLSQL Developer 连接oracle(64)(instantclient_32)

    下载instantclient-basic-nt-11.2.0.2.0位客户端,加压后存放,如F:\instantclient_11_2 拷贝Oracle 11.2G的msvcr80.dll和tnsn ...

  7. CentOS 搭建Graylog集群详解

    1. Graylog2 简介 Graylog 是一个简单易用.功能较全面的日志管理工具,相比 ELK 组合, 优点: 部署维护简单,一体化解决方案,不像ELK三个独立系统集成. 查相比ES json语 ...

  8. wmic命令

    WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具) ,提供了从命令行接口和批命令脚本执行系统管理的支持. 一.如何使用帮助文档: 1.w ...

  9. python检查IP地址正确性

    一.自动动手,丰衣足食 #encoding=utf-8 import os,sys def check_ip(ipaddr): addr = ipaddr.strip().split('.') #切割 ...

  10. 【转】python time模块详解

    python 的内嵌time模板翻译及说明  一.简介 time模块提供各种操作时间的函数  说明:一般有两种表示时间的方式:       第一种是时间戳的方式(相对于1970.1.1 00:00:0 ...