的覆盆子π可能是学习的一个很好的平台,但其中一个主要的东西它不能摆脱盒子是使用模拟电子元件。默认情况下,从模拟操纵杆到电位器电位器的一切,但幸运的是添加昂贵的芯片解决问题。MCP3008 ADC(模拟到数字转换器)用于将模拟电子产品连接到树莓派的40个GPIO引脚,使您能够使用所有类型的附加组件。
要向您展示如何利用模数转换以及如何进行有趣的光照节目,我们创建了一个将读取三个电位计的项目,并使用这些拨号来控制adafruit neopixel的颜色。以下是如何使用模拟输入创建彩色覆盆子PI光展示。
用你的树莓派做一场灯光秀需要什么:
- 覆盆子π。任何模型都可以使用
- 覆盆子π操作系统在8GB+ micro SD卡上
- MCP3008模拟到数字(A/D)转换器用于读取模拟信号,并将它们转换为Pi理解
- Adafruit NeoPixels WS2812B led。我们使用了Adafruit公司的12像素LED环
- 焊接设备。这只需要焊接跨接电线到新像素。
- 400点较大的面包板。用来建造电路
- 3 x 10 k电位器。这些是用作输入的刻度盘
- 6x公母跳线
- 13x男性到男性跳线
如何用模拟输入创建一个拉斯派灯展
1.将MCP3008插入面包板这样销钉就跨在中央切口上了。芯片上的缺口应面对面包板的短端。MCP3008的16个引脚从左下角的1开始,然后我们在右下角数到8。第9针在右上角,第16针在左上角。
2.将MCP3008连接到Raspberry Pi GPIO口使用女性到雄性跳线。第一个女性到雄丝将3.3V和GND引脚连接到面包板的+和轨道。然后使用雄脚线将轨道连接到MCP3008引脚,用于电源和GND。
3.将MCP3008连接到树莓派使用母到公跳线。
线的颜色 | MCP3008 | 覆盆子PI GPIO. |
---|---|---|
粉色的 | 10 | GPIO 08. |
紫色的 | 11 | GPIO 10 |
橙色 | 12 | GPIO 09. |
绿色 | 13 | GPIO 11 |
4.插入电位器并将它们连接到MCP3008上使用公对公跳线。
5.焊接三根电线到Adafruit NeoPixels。PWR,GND和。PWR连接面包板上的+导轨,GND到轨道。“In”连接到覆盆子PI上的GPIO 18。
6.编辑/boot/config.txt文件。
sudo纳米/ boot / config.txt
7.将这一行添加到文件的底部。它将使GPIO与NeoPixels对话,但它将禁用通过耳机插孔的音频输出。完成后按CTRL + X, Y, Enter退出。重启Pi使更改生效。
hdmi_force_hotplug = 1
8.为NeoPixels安装Python 3模块。
sudo pip3安装rpi_ws281x adafruit-cigitython-neopixel
9.打开tonny IDE,在“编程”菜单中找到。
10。添加以下代码行来导入模块使代码能够使用NeoPixels,暂停代码,并使用MCP3008板。
import board import neopixel from time import sleep from gpiozero import MCP3008
11.创建三个变量r,g,b它将存储MCP3008输出的原始值。
r = mcp3008(channel = 0)g = mcp3008(channel = 1)b = mcp3008(通道= 2)
12.创建一个名为pixels的对象。这将使Python代码能够使用NeoPixels。对于这个对象,我们传递正在使用的GPIO引脚D18,以及链/环中的NeoPixels的数量16。
像素= neopixel.NeoPixel(董事会。D18, 16)
13.创建一个while循环它将持续运行代码。
虽然是真的:
14.创建三个变量,红色、绿色和蓝色它将存储从电位计返回的值。这个值介于0.0和1.0之间,为了把它转换成NeoPixels能理解的值,我们把这个值乘以255。
红色=圆(r。值* 255)green= round(g.value * 255) blue = round(b.value * 255)
15.将返回的值打印到Python shell。
打印(红色,绿色,蓝色)
16.为循环创建一个,这将更新所有16个像素在环上显示当前的混色。
对于I范围(16):像素[i] =(红色,绿色,蓝色)
17.在代码中添加0.1秒的暂停。
睡眠(0.1)
18.将代码另存为模拟--Inputs.py。
19.在终端中使用sudo运行代码。
sudo python3 analog-inputs.py
20。转动电位器来控制新像素的颜色。
完整的代码清单
下面是这个项目中使用的所有代码。
导入板从时代导入neopixel从GPIozero导入MCP3008 r = mcp3008(通道= 0)g = mcp3008(channel = 1)b = mcp3008(channet = 2)pixels = neopixel.neopixel(board.d18,16)虽然true:Red = round(r.value * 255)绿色=圆形(g.value * 255)蓝色=圆形(b.value * 255)印刷(红色,绿色,蓝色)在范围内(16):像素[i] =(红色,绿色,蓝色)睡眠(0.1)
更多的:最好的覆盆子pi帽子