跳过主要内容

使用模拟输入创建覆盆子PI光展示

树莓派灯光秀
(图片来源:Tom’s Hardware)

覆盆子π可能是学习的一个很好的平台,但其中一个主要的东西它不能摆脱盒子是使用模拟电子元件。默认情况下,从模拟操纵杆到电位器电位器的一切,但幸运的是添加昂贵的芯片解决问题。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针在左上角。

(图片来源:Tom’s Hardware)

2.将MCP3008连接到Raspberry Pi GPIO口使用女性到雄性跳线。第一个女性到雄丝将3.3V和GND引脚连接到面包板的+和轨道。然后使用雄脚线将轨道连接到MCP3008引脚,用于电源和GND。

(图片来源:Tom’s Hardware)

3.将MCP3008连接到树莓派使用母到公跳线。

线的颜色 MCP3008 覆盆子PI GPIO.
粉色的 10 GPIO 08.
紫色的 11 GPIO 10
橙色 12 GPIO 09.
绿色 13 GPIO 11

(图片来源:Tom’s Hardware)

4.插入电位器并将它们连接到MCP3008上使用公对公跳线。

(图片来源:Tom’s Hardware)

5.焊接三根电线到Adafruit NeoPixels。PWR,GND和。PWR连接面包板上的+导轨,GND到轨道。“In”连接到覆盆子PI上的GPIO 18。

(图片来源:Tom’s Hardware)

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帽子

更多的:Raspberry PI最好的MicroSD卡

  • SonoraTechnical
    您还需要在RaspBerryPI中启用SPI接口。本文中的任何提及SPI都是奇数....这是允许在本教程中的“I / O”扩展,即能够接受模拟输入。MCP3008是A / D转换器,其通过SPI接口将信息继电器返回到RASPBERYPI ....类似于您可能在UART或I2C接口上扩展的I / O扩展。
    回复
  • BIGLESP.
    SonoraTechnical说过:
    您还需要在RaspBerryPI中启用SPI接口。本文中的任何提及SPI都是奇数....这是允许在本教程中的“I / O”扩展,即能够接受模拟输入。MCP3008是A / D转换器,其通过SPI接口将信息继电器返回到RASPBERYPI ....类似于您可能在UART或I2C接口上扩展的I / O扩展。
    你好,谢谢你的评论。
    我们使用GPIO Zero python3模块来处理与MCP3008的通信,它有两种SPI模式。
    一个软件SPI,它总是可用的,不需要进一步配置,但它比硬件慢得多。
    硬件SPI,当SPI内核模块通过Raspberry -config或GUI树莓派配置工具启用时启用。SPI的GPIO零文档
    https://gpiozero.readthedocs.io/en/stable/api_spi.html
    我希望这对你来说清除了这个问题。非常感谢阅读。
    回复