Scratch GPIO
随着2015年9月发布的Raspberry Pi Scratch,包含在Raspbian Jessie版本中,我们推出了一款新的GPIO服务器,使LED,蜂鸣器,HATS以及其他设备和组件更加轻松。
使用和基本功能
启动服务器
在使用GPIO引脚之前,您必须启动GPIO服务器。有几种方法可以做到这一点:
-
从编辑菜单中选择启动GPIO服务器将其打开。如果服务器已经运行,则停止GPIO服务器将其关闭。
-
一个暂时播放
gpioserveron
或gpioserveroff
将会有相同的效果。 -
当GPIO服务器运行时保存的项目将记录该状态,并且在加载时将尝试启动服务器(如果启用)。
-
您也可以在临时INI文件中设置一个选项。见下面的附录。
基本的GPIO使用
没有任何进一步的设置,您现在可以访问GPIO系统的基础知识。目前使用广播块向GPIO服务器发送命令,就像原始的网状网络广播消息一样。
例如,要将GPIO引脚4配置为输出并将其打开,您将创建以下两个广播:
和往常一样,您可以使用正常的连接,选择或列表处理块来组合此文本。例如,如果foo= 17,那么
将广播gpio17on并因此设置GPIO引脚号17(在BCM编号下 – 不是物理或接线号码!)on。引脚需要配置才能使用它们做任何事情。我们可以设置引脚的方向(输入或输出),对于输入引脚,可以设置上拉模式(上,下,无)。
-
对于输入引脚,我们可以使用’in’或’input’。这两个都被视为与“inpullup”或“inputpullup”相同,默认设置上拉电阻来拉起信号。
-
要设置上拉电阻将信号拉低,我们使用’inpulldown’或’inputpulldown’
-
我们可以将上拉电阻设置为“inpullnone”或“inputpullnone”
-
输出引脚简单地通过“输出”或“输出”
-
通过PWM输出,使LED发光部分亮起或使电机以可变速度等运行非常有用,配置为’outputpwm’
例如:
设置为输入的引脚连接到Scratch传感器变量系统,因此它们显示在传感器模块中可能的值列表中:
并且可以以相同的方式使用:
在运行配置广播之后,您将不会在列表中找到您的输入引脚。在此之前,GPIO服务器无法知道您希望它是一个输入。保存项目时,输入仍将被挂起。
通过这些非常简单的命令,您可以构建相当复杂的GPIO处理脚本来读取按钮并操作LED,电机等。我们还有命令返回时间,返回机器IP地址,读取各种温度,读取超声波距离传感器,获取天气报告,甚至使用附带的Raspberry Pi相机模块拍摄照片并将其设置为当前服装。
此脚本(传感器和电机文件夹中提供的传感器和电机/ gpio-demo)说明了上述大部分内容:
随着适当配置的面包板,它提供了通过按下按钮打开和关闭LED的能力,以逐渐增亮的LED提供的倒计时照片,检查时间的方式等。
请注意,我们可以有一个包含多个消息的广播,如
gpio24on gpio18pwm400
上面的脚本。
基本的GPIO命令
在下面的命令列表中,我们使用
[comm] + pin number + [ on | off]
指示形式的命令
comm17off或comm7on。
对于一个变量,
led + light number (1..5) = ( 0 .. 100)
表示一个名为的变量
led5可能具有从0到100的值。同样,foo = ( 1 | 4 | 7 )表示变量foo可以设置为1,4或7。
简单的GPIO控制
您可以在没有任何HAT插入您的Pi的情况下执行的基本GPIO命令列表如下所示:
-
设置为PWM引脚
-
gpio + pin number + [ on | high | off | low ]打开或关闭输出例如,gpio17on
-
打开引脚17。gpio + pin number + pwm + [ 0..1024 ]
-
使用PWM输出例如,gpio22 pwm 522
将PWM占空比设置为1024,即1024或大约一半的功率。请注意,许多LED不会以简单的线性方式改变其亮度,因此522可能几乎不发光或接近完全亮度。
伺服驾驶
-
servo + pin number + [percent | %] + [-100…100]
将连接的伺服器移动到位置。例如servo15%0,将伺服放置在其范围的中心。
-
servo stop
关闭伺服驱动器。
在Servos和Motors / gpio-servoDemo脚本中,您可以看到如何移动伺服器或将其连接到像Sprite位置的变量。您需要将伺服电缆连接起来,如下所示:
超声波传感器
ultrasonic + trigger + trigger pin + echo + echo pin
-
连接典型的SR04超声波传感器
ultrasonic stop
-
在脚本结束时关闭传感器支持
这里是使用引脚16作为触发器的布线布局示例,而作为回波的是26:
如果您使用传感器和电机/ gpio-ultrasonicDemo中的脚本使用此接线设置,您将看到如何阅读距离并按顺序移动sprite。传感器和电机/ gpio-ultrasonicIntruderAlarm中的另一个超声波演示需要一个相机模块,并且当任何人太靠近时会拍摄快照。
天气报告
getweather + city name + , + country two-letter code + , + your user key from [OpenWeatherMaps](http://www.openweathermaps.org)
-
将为指定的城市的温度,风速和方向,降雨量和云层创建传感器变量。您必须注册才能从中获取密钥(可用的免费帐户)。有关详细信息,请参阅OpenWeatherMaps。
例如
getweather Rio de Janeiro, BR, 1234EF65B42DEAD
将使传感器变量
Rain in Rio de Janeiro
Temp in Rio de Janeir0
…等等。城市名称和国家/地区代码之间的逗号和密钥对于让GPIO服务器知道哪里分割的东西至关重要。一些城市有简单的名字,如“Ee”或“Manchester”,而其他城市则更像“Sault Ste Marie”或“Llanfairpwllgwyngyllgogerychwyrndrobwllllantysilioogogog”。请注意,OpenWeatherMaps服务器不知道每个国家的每个城市,也不知道它所知道的所有的天气数据,所以有时您将无法获得有用的信息。
该脚本传感器和电机/ GPIO-citytemperaturegraph演示了如何获取气象数据,伦敦和积的温度。由于天气数据通常不会快速变化,我们只能每15分钟获取一次数据,以免网站超载。
阅读温度
gettemp
-
连接到几个可能的温度传感器。
gettemp + cpu
-
读取cpu温度并创建一个传感器变量
cputtemp
-
。例如:
gettempcpu
-
。绘制CPU温度图的示例项目可以在传感器和电机/ gpio-cputtemperaturegraph项目中找到。
gettemp + [a previously discovered twelve-digit 1-wire id]
-
如果可能,将直接连接到识别的DS18B20传感器。
请注意,1线传感器需要大约半秒钟才能读取,因此经常读取传感器可能会使Scratch显得非常慢。
gettemp
-
本身将尝试找到一个附加的1线DS18B20热敏传感器,并创建一个名为的传感器变量
temp + [the twelve-digit sensor ID]
-
。
相片
photo
-
使用照相机拍摄照片并将其插入当前精灵的服装(如果选择了舞台)。
photo + [width @ height]
-
将照片尺寸宽度乘以高度像素,直到相机的极限。您可以尝试几乎任何合理的数字的宽度和高度,但请记住,非常小的数字(32以下)不一定产生正确的图像,非常大的数字可以使图像如此之大,似乎崩溃Scratch。例如,
photo800@600
通常是可以接受的,但photo2000@1600可能会导致问题。
photo + [big/large]:“大”照片与舞台大小相同。例如:
photobig或photo large。
gettime
-
将一些时间值添加到传感器变量,特别是hours值,minutes值,以及完整的日期和时间YYMMDDhhmmss。
getip
-
为机器的本地主机地址IP号添加一个传感器变量。
附加硬件
我们还可以控制Pi附加板,如PiGlow,Pibrella,Explorer HAT等。要设置一个板,我们首先需要通知GPIO服务器是什么板;
这是通过创建和设置变量来完成的
AddOn,如下所示:
每个主板都有自己的一套命令,分布在上述基本的GPIO设备之上。许多电路板也可以利用Scratch变量广播,从而创建一个合适的名称变量,并在变化时广播它的值。
例如,对于PiGlow板,将每个LED或LED环命名的变量设置为有意义,并将每个值设置为控制亮度的一种方式。同时使用这两种形式的控制可能造成混乱;
myCommand400
以与设置
myValue
为200 相同的脚本播放可能会在极端情况下导致闪烁,明显的非功能甚至硬件故障。
所有您需要做的是创建一个适当名称的变量,并使用正常的脚本块设置其值。
一些电路板提供可以通过传感器变量访问的输入,如上面在引脚11的示例使用中所示。
PIGLOW
PiGlow板有几个明亮的LED环,可以单独或一起控制为环,腿。小心:看起来可以有点明亮,所以使用一些描图纸或有色皮肤制成的扩散器是一个好主意。要使用板,设置AddOn到PiGlow。
PiGlow有很多命令,其中许多都在传感器和电机/ gpio-PiGlow项目中得到证明。
支持的命令
leg + leg number [ 1 | 2 | 3 ] + [ on | high | off | low ]
-
例如
leg2off
[ red | orange | yellow | green | blue | white ] + [ on | high | off | low ]
-
例如 redlowarm
-
– 如
bright + [ 0 .. 255 ] (设置任何后续LED指示灯的亮度乘数)
[ led | light ] + led number + [ on | high | off | low ]
-
例如 light12high all + [ on | high | off | low ]
变量bright = ( 0 .. 255) led pattern =(作为二进制数字处理的18个字符的字符串,如“011111101010101010”,其中任何不为0的字符串被认为是1)
[ red | orange | yellow | green | blue | white ] = ( 0 .. 255)
[ leg | arm ] + [ 1 | 2 | 3 ] = (0 .. 255)
[ led | light ] + led number (1..18) = (0 .. 255)
PIFACE
PiFace数字板提供八个数字输入和八个数字输出,前四个输入具有并行开关,前两个输出具有20V / 5A继电器。设置
AddOn为PiFace激活此板。
支持的命令all + [ on | off] output + output number + [ on | high | off | low ]
-
例如
output6on
变量output + [ 0 .. 7 ] = (0 |1 )
-
– 值被舍入,并受到最大/最小限制,因此-1轮次最多为0和400000000轮次,减少到1。
还有八个输入传感器变量,命名
Input1为Input8,具有可能的值(0/1)。该传感器和电机/ GPIO-PiFace项目说明了如何使其发挥作用。
PIBRELLA
这提供了一个很好的大红色按钮,三个大LED,四个数字输入,四个数字输出和一个响亮的蜂鸣器。要使用此板,请设置AddOn为Pibrella。
命令中止
[ red | yellow | green ] + [ on | high | off | low ]
-
例如
yellowhigh
Output + [ E | F | G | H ] + [ on | high | off | low ]
Buzzer + (0 .. 4000)
-
例如
buzzer2100
变量
Buzzer = (0..10000)
Output + [ E | F | G | H ] = (0 |1 )
[ red | green | yellow ] = (0 |1 )
输入A,B,C,D和大红色按钮作为传感器变量提供,均具有可能的值(0/1)。汽车和传感器/ gpio-pibrella有一个演示。
EXPLORER HAT PRO
这个板卡对于驱动器来说更是一个挑战,因为它具有与GPIO连接的部分和I2C连接的部件:
-
四个LED
-
四个5V输出连接器
-
四个缓冲输入连接器
-
两个H桥电机驱动器
-
四个模拟输入
-
四个电容式输入板
要使用此板,请设置
AddOn为ExplorerHAT。
支持的命令
led + led number ( 1 .. 3) + [ on | high | off | low ]
motor + motor number (1|2) + speed + (0..100)
-
– 电机速度设置为百分比,例如
motor1 speed 42
output + input number ( 1 .. 3) + [ on | high | off | low ]
它们具有匹配的变量形式:
led + led number = (0 |1 )
motor + motor number (0|1) = (0..100)
output + led number = (0 |1 )
变量也有传感器的变量Input1-Input4使用值(0 | 1),和四个ADC引脚(1。4)用值+ -6.1V。如果信号源自连接到Explorer HAT的5V / GND的电位器,则范围为(0 ..〜5)。
在演示脚本传感器和电机/ GPIO-ExplorerHAT要求连线一个电动机,带动,旋转电位计等,如图该图
请注意,电容输入焊盘尚未运行,需要一些库级支持。
传感器HAT(如ASTRO PI所用)
这个基础制造的电路板提供了一系列不寻常的传感器和一个8 x 8的RGB LED阵列。
传感器测量:
-
温度
-
湿度
-
压力
-
加速度计/陀螺仪
-
磁力计/指南针
-
迷你操纵杆动作左/右/上/下/返回
要使用此板,请设置
AddOn为SenseHAT。支持的命令clearleds:将所有LED设置为背景颜色edbackground + colour
-
或者ledforeground + colour
-
设置要使用的字符串和图形命令的背景颜色和前景颜色。颜色指定为以下之一:
-
从名单中的名字红色青色蓝色灰色黑色白色绿色棕色棕色橙色黄色洋红色淡棕色白an淡淡淡蓝色苍白黑色黑色…蓝色
-
一个HTML样式的六位十六进制数字,以哈希符号开头
#34F2A0
-
或0到255之间的数字的RGB三元组,例如
ledscrollspeed + [number of milliseconds delay per step of scrolling]
-
:一个字符串
ledpixel + [ x | at] + [0..7] + [y | @] + [0..7] + [colour | color] + [colour name or code as ledbackground]
-
。例如:
ledpixelx4y3colourwhite
-
or
ledpixelat2@7color42,231,97
-
or
ledpixelx3@1colour#4A76A0
ledscrollstring + [string]
-
:用以前设置的前景和背景颜色滚动以下字符串,例如
ledscrollstring HelloWorld
ledshowsprite + [name of sprite]
-
:在LED上显示命名的精灵,例如
ledshowsprite Sprite1
-
。精灵集中在8 x 8阵列上,所以你可能会看到很少的一个大的精灵。
ledbargraph + [8 digits 0..8]
-
:使用以前设置的前景和背景颜色制作最多八位数的简单条形图
ledbargraph20614590
ledshowchar + [character]
-
:只显示一个单一的字符与以前设置的前景和背景颜色
变量
gyroX
humidity
gyroY
pressure
gyroZ
temp
accelX
compassZ
accelY
compassY
accelZ
compassX
PI-LITE
Pi-LITE板提供了一个简单的白色LED阵列,可以单独寻址或被视为滚动文本显示,条形图或VU表。它通过GPIO串行端口工作,并提出了一些有趣的挑战,特别是在[RaspberryPi-Spy的Pi-LITE指令]中详细介绍了串行连接的设置(http://www.raspberrypi-spy.co.uk/2013/09/如何设置-i-lite-led-matrix-board /)。支持的命令
尽管它们的工作方式差别很大,但它们共享相同的命令
motor + motor number (1|2) + speed + value (-100..100)
变量
motor + motor number (0|1) = (-100..100)
附录:启用和禁用GPIO服务器
在正常使用中,您不需要启用GPIO服务器,因为默认情况下启用但停止。我们可以通过在init文件中添加一行来改变它。在主目录中,我们可以使用一个名为的文件
.scratch.ini
– 初始点对于使其成为隐藏的Unix文件非常重要。只需将该行添加
gpioserver=X
到文件中,其中X是:
0
-
– 禁用GPIO服务器,阻止用户或加载的项目使用它
2
-
– 启用和启动服务器,这可能在课堂上有关GPIO使用的教训
1
-
– 启用GPIO服务器,但将其关闭,这是没有
.scratch.ini
-
文件时的默认值
请注意,旧的网状网络/网络服务器设置当前在“ 共享”菜单下半隐藏:您必须在打开该菜单时按住shift键。它与以前一样工作,仍然连接到外部基于套接字的服务器。
原文始发于:树莓派Scratch控制GPIO说明文档
|