第六章 树莓派简单脚本应用
我们在前面的章节已经初步学习了树莓派,现在我们可以用它来做一些简单的工作了我们在使用脚本之前,需要先了解脚本和程序的区别。脚本与一般程序的主要区别在于是否编译。相对于程序而言,脚本更加随性。写完了脚本,直接就可以在某种具有解释功能的环境中运行。
我们这里主要介绍两种脚本,javascript和python
一、js脚本
首先,我们从最简单的blink开始
当然,我们不是简单的blink,我们是用一个脚本去控制LED的闪烁
为了运行Node脚本,我们需要先安装Node
sudo apt install nodejs
正常情况下,Node已经安装完成
最新的树莓派操作系统自带有Node,版本为10以上
在上一章中,我们介绍了树莓派上的引脚,现在我们将LED模块的电源和地分别接在树莓派上,信号脚接在第6排的11号引脚上,
然后,我们在树莓派上新建一个一个实验目录led,并安装控制GPIO的Node模块rpio
mkdir led
cd led
这个过程可能需要一点时间,在安装完成后,我们新建一个脚本led_on.js
nano led_on.js
下面是写入脚本的代码
var rpio = require('rpio');
rpio.open(11, rpio.OUTPUT);
rpio.write(11, rpio.HIGH);
运行这个脚本,我们就能点亮LED模块了
node led-on.js
然后,我们再建一个脚本led_off.js
var rpio = require('rpio');
rpio.open(11, rpio.OUTPUT);
rpio.write(11, rpio.LOW);
在有这两个脚本的基础上,我们再来让LED闪烁起来,新建一个led_blink.js脚本
var rpio = require('rpio');
rpio.open(11, rpio.OUTPUT);
function blink() {
rpio.write(11, rpio.HIGH);
setTimeout(function ledoff() {
rpio.write(11, rpio.LOW);
}, 50);
}
setInterval(blink, 200);
最后,运行这个脚本,就能让LED每秒闪烁5次
node led_blink.js
按Ctrl+c可以退出脚本运行
二、Python脚本
本教程的主要编程语言就是Python,树莓派本身也自带Python2和Python3环境
因此,我们很多时候都是Python教学为主
下面,我们用一段Python代码来实现上文的闪烁功能
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(11,GPIO.OUT)
while True:
GPIO.output(11,GPIO.HIGH)
time.sleep(0.05)
GPIO.output(11,GPIO.LOW)
time.sleep(0.05)
我们可以用两种方法来运行这段代码
第一种是输入python进入python环境(python默认进入python2,需要进入python3输入python3)
逐行输入上述代码,每行以回车结束
这种方法适用于代码调试阶段,输入一行直接运行,如果出现错误直接报错
另一种方法是建立一个名为blink.py的文件,输入上述代码
在命令行中输入下面的指令就可以运行这段代码了
python blink.py
blink.py就是python脚本
接下来我们来尝试让这个脚本自动运行起来
在 /home/pi/.config 下创建一个文件夹,名称为 autostart,并在该文件夹下创建一个blink.desktop文件(文件名以.desktop结尾,前面可以自定义),文件内容如下
Name=blink
Comment=My Python Program
Exec=python /home/pi/blink.py
Icon=/home/pi/blink.png
Terminal=false
MultipleArgs=false
Type=Application
Categories=Application;Development;
StartupNotify=true
之后 sudo reboot 重启,就可以看到 blink.py 在树莓派启动后也自动启动了。
三、用脚本架设一个HTTP服务器
树莓派是一个简易电脑,很多单片机不能做的事它都能做,
下面我们来架设一个HTTP服务器,并把它和我们上面的LED闪烁联系起来
首先,我们在刚才的目录下安装一个服务器模块
npm install -S server
然后我们新建一个server.js脚本
var server = require('server');
var { get } = server.router;
var rpio = require('rpio');
rpio.open(11, rpio.OUTPUT);
function blink() {
rpio.write(11, rpio.HIGH);
setTimeout(function ledoff() {
rpio.write(11, rpio.LOW);
}, 50);
}
server({ port: 8080 }, [
get('/' ,ctx => {
console.log('a request is coming...');
blink();
}),
]);
console.log('server starts on 8080 port');
运行这个脚本,服务器就搭建完成了
node server.js
接下来,我们只要访问这个服务器,LED就会闪烁一下
例如,打开另一个命令行终端,输入下面的指令
curl http://localhost:8080
以上介绍的是树莓派脚本的简单用法,我们还可以用脚本做很多事情,
欢迎大家补充和讨论,也希望大家多多探索。
页:
[1]