查看: 140|回复: 0

第六章 树莓派简单脚本应用

[复制链接]
我们在前面的章节已经初步学习了树莓派,现在我们可以用它来做一些简单的工作了我们在使用脚本之前,需要先了解脚本和程序的区别。
脚本与一般程序的主要区别在于是否编译。相对于程序而言,脚本更加随性。写完了脚本,直接就可以在某种具有解释功能的环境中运行。
我们这里主要介绍两种脚本,javascript和python


一、js脚本


首先,我们从最简单的blink开始
当然,我们不是简单的blink,我们是用一个脚本去控制LED的闪烁
为了运行Node脚本,我们需要先安装Node
[mw_shl_code=applescript,false]sudo apt install nodejs[/mw_shl_code]
正常情况下,Node已经安装完成
最新的树莓派操作系统自带有Node,版本为10以上

在上一章中,我们介绍了树莓派上的引脚,现在我们将LED模块的电源和地分别接在树莓派上,信号脚接在第6排的11号引脚上,
然后,我们在树莓派上新建一个一个实验目录led,并安装控制GPIO的Node模块rpio
[mw_shl_code=applescript,false]mkdir led
cd led[/mw_shl_code]
这个过程可能需要一点时间,在安装完成后,我们新建一个脚本led_on.js
[mw_shl_code=applescript,false]nano led_on.js[/mw_shl_code]
下面是写入脚本的代码
[mw_shl_code=applescript,false]var rpio = require('rpio');
rpio.open(11, rpio.OUTPUT);
rpio.write(11, rpio.HIGH);[/mw_shl_code]
运行这个脚本,我们就能点亮LED模块了
[mw_shl_code=applescript,false]node led-on.js[/mw_shl_code]

然后,我们再建一个脚本led_off.js
[mw_shl_code=applescript,false]var rpio = require('rpio');
rpio.open(11, rpio.OUTPUT);
rpio.write(11, rpio.LOW);[/mw_shl_code]
在有这两个脚本的基础上,我们再来让LED闪烁起来,新建一个led_blink.js脚本
[mw_shl_code=applescript,false]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);[/mw_shl_code]
最后,运行这个脚本,就能让LED每秒闪烁5次
[mw_shl_code=applescript,false]node led_blink.js[/mw_shl_code]
按Ctrl+c可以退出脚本运行


二、Python脚本
本教程的主要编程语言就是Python,树莓派本身也自带Python2和Python3环境
因此,我们很多时候都是Python教学为主
下面,我们用一段Python代码来实现上文的闪烁功能
[mw_shl_code=applescript,false]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)[/mw_shl_code]
我们可以用两种方法来运行这段代码
第一种是输入python进入python环境(python默认进入python2,需要进入python3输入python3)
逐行输入上述代码,每行以回车结束
这种方法适用于代码调试阶段,输入一行直接运行,如果出现错误直接报错

另一种方法是建立一个名为blink.py的文件,输入上述代码
在命令行中输入下面的指令就可以运行这段代码了
[mw_shl_code=applescript,false]python blink.py[/mw_shl_code]
blink.py就是python脚本

接下来我们来尝试让这个脚本自动运行起来
在 /home/pi/.config 下创建一个文件夹,名称为 autostart,并在该文件夹下创建一个blink.desktop文件(文件名以.desktop结尾,前面可以自定义),文件内容如下
[mw_shl_code=applescript,false][Desktop Entry]
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[/mw_shl_code]
之后 sudo reboot 重启,就可以看到 blink.py 在树莓派启动后也自动启动了。

三、用脚本架设一个HTTP服务器
树莓派是一个简易电脑,很多单片机不能做的事它都能做,
下面我们来架设一个HTTP服务器,并把它和我们上面的LED闪烁联系起来


首先,我们在刚才的目录下安装一个服务器模块
[mw_shl_code=applescript,false]npm install -S server[/mw_shl_code]
然后我们新建一个server.js脚本
[mw_shl_code=applescript,false]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');[/mw_shl_code]
运行这个脚本,服务器就搭建完成了
[mw_shl_code=applescript,false]node server.js[/mw_shl_code]
接下来,我们只要访问这个服务器,LED就会闪烁一下
例如,打开另一个命令行终端,输入下面的指令
[mw_shl_code=applescript,false]curl http://localhost:8080[/mw_shl_code]

以上介绍的是树莓派脚本的简单用法,我们还可以用脚本做很多事情,
欢迎大家补充和讨论,也希望大家多多探索。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail