|如何创建Raspberry Pi灯光秀

|如何创建Raspberry Pi灯光秀

文章图片

|如何创建Raspberry Pi灯光秀

文章图片

|如何创建Raspberry Pi灯光秀

文章图片



树莓派是一个很好的硬件学习平台 , 但它却不能以开箱即用的方式使用模拟电子元件 。 默认情况下 , 从模拟操纵杆到电位器等很多都是不可以使用的 , 但幸运的是 , 添加昂贵的芯片可以解决该问题 。 MCP3008 ADC(模数转换器)用于将模拟电子设备连接到Raspberry Pi的40个GPIO引脚 , 使您能够使用各种附加组件 。
为了向您展示如何利用模数转换以及如何进行有趣的灯光秀 , 我们创建了一个项目 , 该项目将读取三个电位计 , 并使用这些刻度盘来控制Adafruit NeoPixel的颜色 。 下面是使用模拟输入创建彩色Raspberry Pi灯光秀的方法 。
使用Raspberry Pi进行灯光秀需要做什么:

  • 树莓派 。 可以使用任何型号
  • 8GB+微型SD卡上的Raspberry Pi OS
  • MCP3008模数(A / D)转换器用于读取模拟信号并将其转换为Pi可以理解的数字信号
  • Adafruit NeoPixels WS2812B LED灯 。 我们使用了Adafruit的12像素LED环
  • 焊接设备 。 仅需将跳线焊接到NeoPixels上即可 。
  • 400孔面包板 。 用于搭建电路
  • 3个10k电位器 。 这些是用作输入的拨盘
  • 6x公对母跳线
  • 13x公对公跳线
如何使用模拟输入创建Rasperry Pi灯光秀1.将MCP3008插入面包板 , 使插脚跨过中央切口 。 芯片上的缺口应面向面包板的短端 。 MCP3008的16个引脚中左下角为1引脚 , 然后右下角是8引脚 。 针脚9在右上角 , 针脚16在左上角 。

【|如何创建Raspberry Pi灯光秀】2. 使用母对母跳线将MCP3008连接到Raspberry Pi GPIO 。 首先用母对公线将3.3V和GND引脚连接到面包板的+和-轨 。 然后使用公对公电线将电源轨连接到MCP3008引脚以获取电源和GND 。

3. 使用母对公跳线将MCP3008连接到Raspberry Pi 。

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

5.将三根导线焊接到Adafruit NeoPixels的PWR , GND和In 。 PWR连接到试验板上的+导轨 , GND连接到-导轨 。 “ IN”连接到Raspberry Pi上的GPIO 18 。

6.编辑/boot/config.txt文件 。
sudo nano /boot/config.txt

7.将此行添加到文件底部 。 它将使GPIO与NeoPixels对话 , 但将禁用通过耳机插孔的音频输出 。 完成后按CTRL + X , Y和Enter键退出 。 重新启动Pi , 以使更改生效 。
hdmi_force_hotplug=1

8.为NeoPixels安装Python 3模块 。
sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel

9.打开在编程菜单中找到的Thonny IDE 。
10.添加以下行以导入模块 , 这些模块使代码可以与NeoPixels一起使用 , 暂停代码并使用MCP3008板 。
import boardimport neopixel
from time import sleep
from gpiozero import MCP3008

11.创建三个变量r , g , b , 它们将存储MCP3008输出的原始值 。
r = MCP3008(channel=0)
g = MCP3008(channel=1)
b = MCP3008(channel=2)

12.创建一个称为pixels的对象 。 这将使Python代码能够与NeoPixels一起使用 。 为此 , 我们传递了正在使用的GPIO引脚D18和链/环中NeoPixels的数量16 。
pixels = neopixel.NeoPixel(board.D18 16)

13.创建一个 While True:循环 , 它将连续运行代码 。
while True:

14.创建三个变量red , green和blue , 它们将存储电位计返回的值 。 该值介于0.0到1.0之间 , 为了将其转换为NeoPixels可以理解的值 , 我们将该值乘以255 。
red = round(r.value * 255)
green= round(g.value * 255)
blue = round(b.value * 255)

15.将返回的值打印到Python shell 。
print(redgreenblue)

16.创建一个for循环 , 它将更新环中的所有16个像素以显示当前的颜色 。
for i in range(16):
pixels[i
= (red green blue)

17.在代码中添加0.1秒的暂停时间 。
sleep(0.1)

18.将代码另存为analog-inputs.py 。
19.在终端中使用sudo运行代码 。
sudo python3 analog-inputs.py

20.旋转电位器以控制NeoPixels的颜色 。
完整的代码清单这是此项目中使用的所有代码 。
import board
import neopixel
from time import sleep
from gpiozero import MCP3008
r = MCP3008(channel=0)
g = MCP3008(channel=1)
b = MCP3008(channel=2)
pixels = neopixel.NeoPixel(board.D18 16)
while True:
   red = round(r.value * 255)
   green= round(g.value * 255)
   blue = round(b.value * 255)
   print(redgreenblue)
   for i in range(16):
       pixels[i
= (red green blue)
   sleep(0.1)


    推荐阅读