2295| 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] 以上介绍的是树莓派脚本的简单用法,我们还可以用脚本做很多事情, 欢迎大家补充和讨论,也希望大家多多探索。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed