最近我在忙于由小学建议的、和孩子们协作的一个根据树莓派的项目。我女儿用Scratch写好了代码,下面我需求做的是使其主动运转。原本只是经过一个主动发动文件和Scratch演示形式就可完成,但惋惜它只支撑GOPI端口。一起运用Scratch言语和另一种编程言语(这儿是用Python与GPIO通讯)时会弹出一个音讯框“撤销选定‘传感器衔接’”。假如有鼠标和显示器,那操作起来就便利的多了。可本项目开始设计时就不需鼠标,即便显示器也是任选部件,因而需求找到完成Scratch与GPIO通讯的办法,以便Scratch运转自发动“演示形式”,接下来全部就能够主动运转了。
用树莓派操控小蜜蜂:完成Scratch与树莓派GPIO的通讯
虽然Scratch不辨认树莓派上的GPIO端口,好在能够和其他程序通讯。因而需求后台运转一个python程序,作为衔接到GPIO的接口。对此能找到不少有用的资源。
Scratch Wiki对Scratch怎么与Python使用程序通讯做了具体阐释:
Scratch Wiki: Communicating between Scratch and Python.
你能够从两个示例RPI:GPIO和WiringPi参阅怎么完成python与树莓派GPIO的通讯。值得幸亏的是Simplesi 现已将其完成,并对怎么装置逐渐详解,咱们只需依照阐明操作就能够了,在此我极力推荐:
ScratchGPIO5的装置
演示形式下Scratch自发动运转
演示形式下Scratch当之无愧地全屏自发动运转使用程序。除了在scratch指令中启用演示选项,首要还需求发动scratch处理程序。
假如你是CympleCy用户,首要需求运转下列代码:
sudo ps aux | grep 'python.*scratch_gpio_handler.py' | grep -v grep | awk '{print $2}' | xargs sudo kill -9
sudo python /home/pi/simplesi_scratch_handler/scratch_gpio_handler.py &
榜首行阻挠当时处理程序运转,第二行重新发动处理程序。假如当时正在发动(我之后会加以解说)则不需求运转榜首行指令。
经过如下指令使Scratch进入演示形式:
scratch presentation /home/pi/Documents/Scratch/scratchApp.sb
留意,Scratch运用的缺省目录叫做“Scratch Projects”。将其增加至脚本时(由于还有其他情况下需求无空格命名,因而操作并非简略地去掉空格),姓名中的空格会形成一些费事,所以我直接去掉空格,将其放入了另一个目录。
为了简化能够将其放入一独自的脚本。
首要修正directory /home/pi/Scratch
cd ~/Scratch
(留意,这儿我运用回到主目录的快捷键)
然后在如下目录(leafpad ScratchApp.sh) 中建一个名为ScratchApp.sh的文件。
#!/bin/bash
sudo ps aux | grep 'python.*scratch_gpio_handler.py' | grep -v grep | awk '{print $2}' | xargs sudo kill -9
sudo python /home/pi/simplesi_scratch_handler/scratch_gpio_handler.py &
scratch presentation /home/pi/Scratch/scratchApp.sb
颁发履行答应
chmod +x ScratchApp.sh
然后创立一自发动脚本
创立目录(假如目录不存在)
mkdir ~/.config/autostart
改为如下目录
cd ~/.config/autostart
输入下列指令完毕文件
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Exec=/home/pi/Scratch/scratchApp.sh
Icon=scratch
Terminal=false
Name=Program name
Comment=About the program
Categories=Application;Education;Development;
MimeType=application/x-scratch-project
这样不管何时登陆(假定不管何时发动树莓派,GUI自发动和主动登录都能正常运转),程序都能够运转了。
树莓派文章专题:树莓派是什么?你不知道树莓派的常识和使用