如何使文件剪切到另一个文件夹变成复制到另一个文件夹_Python也能进行硬件开发你知道吗?超详细的图文教程|一步一步教你设计一个完整自动篮球计分牌产品...

35df974f34907b58067791c8ccf84553.png
知乎视频​www.zhihu.com

点阵LED篮圈

使用RGB矩阵屏和电路python自己制作一个迷你红外感应环和LED记分板,可以让你在室内进行投篮游戏,并在64x32的LED矩阵屏上显示你的分数。

91dec4c6b3dee6ddf6302c63d32a680f.png

红外感应圈

篮球圈内有一个红外阻断传感器,可以检测是否有球通过。3D打印部件将所有东西连接在一起,设计得很容易制作。有一个拱廊按钮在侧面,用于开始一个新的游戏和重新设置分数。这个产品是由一个Adafruit Feather M4 Express开发和RGB matrix FeatherWing驱动。

必备资料(指南)

  • RGB LED矩阵指南
  • Adafruit Feather M4 向导
  • RGB点阵屏与电路python编程指南

黑色LED亚克力板用于LED光的扩散,另外可防止里面粗糙的线路过度暴露。这种材料的特点是哑光和有能力传输任何颜色的光。这使得它完美地展现了led颜色的饱和度。

3D打印框架在侧面设计了一个插槽,所以很容易插入一张黑色LED亚克力片。

零部件

Adafruit Feather M4 Express 开发板- Featuring ATSAMD51

6cabd7c18692f058c3e8af4f186d5dfc.png

Adafruit RGB矩阵屏扩展板

dd6f9da3dd77821570ed1d9c7be8f8cf.png

64x32 RGB LED矩阵屏- 4mm间距X1

0264d4ded45abde3be717e46d565191e.png

Adafruit STEMMA扬声器-即插即用音频放大器 X1

6fbcc155557be6dc0e42507c69236c27.png

迷你带LED灯拱廊按钮- 24mm半透明

0814ef2f76173827ee5a8da3f11b7aea.png

红外线(IR)阻断传感器(5mmLED) 1对

43564a5ba1217637a07993907bbd7ad0.png

红外线IR)阻断传感器(3mm LED) 1对

5489f92048ceb7ac2572478b0d0c03c2.png

JST PH2针电缆-母头 线长100mm 1条

13777a58ebd0b096db7ef5e7fdc3d4ce.png

JST PH 2针电缆-公头 线长200mm 1条

af87974154490714b49a6536c8515adb.png

JST PH 3针插座 多色编码电缆- 线长200mm

c31317b580d43be0d93e72d9b65c1551.png

STEMMA JST PH 3针插座电缆- 200mm

b9bbca36f13f243da719511b25a470d2.png

铜线排线 10线1米长- 28AWG黑色

25df8af4e1fac78c5c89d3ae15544cca.png

2.54间距排母座,12pin和16pin

59a5d2758f0c664264474935d59f1d04.png

黑色尼龙螺柱和螺钉 M2.5

6193308313013169785406c1b768d329.png

黑色LED亚克力板

一片黑色的LED亚克力片用于RGB LED矩阵屏光线的扩散。

4ba7866245ff7bbdf2a048e5902ef50d.png

当它没有被照亮的时候看起来像一个磨砂黑色亚克力片,但当有一个背光,它会发生改变。这种神奇的材料能够传输任何颜色的光。

建议切成这个尺寸:257mm x128mm

五金螺丝

用于固定3d打印零件的紧固件。

  • M3×10毫米盘头螺钉 x8
  • M3×6毫米盘头螺钉 x4
  • M2.5 x 10mm盘头螺钉 x6
  • M2.5六角螺母 x4

电路图

下图提供了组件连接的可视化参考。这个图是使用软件包 Fritzing割创建的。

Fritzing软件的Adafruit 专用库

使用Adafruit's Fritzing parts库为您的项目创建电路图。下载这个库或者抓取单独的部分。可以从GitHub - Adafruit Fritzing零件获得库和零件。

c2809b399dfa832e2f727fe499c81ddd.png

导线连接说明

  • 从扬声器的VCC到Feather开发板上的3V
  • 连接扬声器GND到羽Feather开发析板的GND
  • 连接扬声器信号到Feather开发板的A0
  • 按钮一端连接Feather开发板上的GND
  • 按钮另一端连接Feather开发板上的D4
  • 红外阻断(2线)到Feather开发板上的GND
  • 红外阻断(2线)到Feather开发板上的3V
  • 红外阻断(3线)到Feather开发板上的GND
  • 红外阻断(3线)到Feather开发板上的3V
  • 红外阻断(3线)到Feather开发板上的A1

供电

RGB矩阵将需要由5V 4A适配器供电。5V USB线缆供电将不能完全显示-,RGB矩阵仅由USB线缆供电时将会显示故障。

eb5adb30adfc9d4fd2a1502b934427ba.png

3D打印零件

用于3D打印的STL格式文件面向在FDM风格的机器上“按原样”打印。零件设计为3D打印,不需要任何支持材料。

42357548b9f50ee5526f7b5113d8f38c.png
  • hoop-190.stl
  • hoop-204.stl
  • foot a.stl
  • foot b.stl
  • hoop bracket a.stl
  • hoop bracket b.stl
  • 2x corner-a.stl
  • 2x corner-b.stl
  • speaker mount.stl
  • button mount.stl

相关的3D打印文件可以从下面的链接下载:

https://www.thingiverse.com/thing:4543154

打印床

篮箍的最小建造面积为250毫米x 210毫米x 200毫米。提供两种尺寸。箍- 190。stl的外径为190mm。箍- 204。stl的外径为204mm。选择一个最适合您的打印机建立板。

2da5bbcc4776fe9e0aa85d6d29565aec.png

CAD装配

拐角安装在RGB矩阵显示器和附加的黑色LED亚克力片四周。两个脚架安装在拐角上,用和螺钉固定。一个按钮安装板被固定在显示器的一侧。环系在一组支架上,支架固定在两个安装脚上。Stemma音箱连接到安装板上并固定。

视频

知乎视频​www.zhihu.com

在Feather M4 Express开发板上使用CircuitPython编程

CircuitPython是MicroPython的一个衍生物,它的初衷是简化低成本微控制器的实验和教育。它使它比以往任何时候都更容易获得原型,无需预先下载桌面软件。在CIRCUITPY 驱动器简单地复制和编辑文件进行迭代更新程序。

下面的说明将向您展示如何安装CircuitPython。如果你已经安装了电路python,但正在寻找更新或重新安装它,同样的步骤也一样适用。

配置CircuitPython快速开始!

按照这个快速的一步一步来实现Python超级快速的能力:)

通过CircuitPython官网下载最新版的CircuitPython

CircuitPython - Feather M4 Express Download​circuitpython.org
00dfb4ea427b438f71c0df9ee157ef74.png

单击上面的链接并下载最新的UF2文件。

下载并保存到您的桌面(或任何方便的地方)。

用一条确认好的USB电缆将你的 Feather M4开发板插入你的电脑的USB口。

很多人最终还是使用只能充电的USB线,这是非常令人沮丧的!因此,确保你有一个USB数据线,你知道这是有利于数据同步。

双击主板上USB连接器旁边的Reset按钮,你会看到NeoPixel RGB LED变成绿色。如果它变成红色,检查USB线,尝试另一个USB端口,等等。注意:USB接口旁边的红色小LED会发出红色脉冲。这是没问题的。

如果第一次双击不工作,再试一次。有时候要试几次才能找到正确的节奏!

您将看到一个名为FEATHERBOOT的新磁盘驱动器出现你的计算机中。

dafruit_circuitpython_etc.uf2文件拖拽到FEATHERBOOT磁盘驱动器中。

c1c40a32d8a1268f2029560f6942e48e.png

a0752e8deb4adb9d952634deb7637646.png

LED灯会闪烁。然后,FEATHERBOOT 启动驱动器将消失,而另一个名为CIRCUITPY 新的磁盘驱动器称将出现。
就这样,你的程序下载就完成了!)

补充信息

有关安装CircuitPython的详细信息,请查看下面的链接:

https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython​learn.adafruit.com

安装CircuitPython库包

我们在不断地更新和改进我们的库,所以我们不会(此时)在我们的CircuitPython板上附带完整的库包。相反,您可以在指南中找到依赖于外部库的示例代码。其中一些库可以从Adafruit获得,一些可能是社区成员写的!

无论哪种方式,当您开始研究CircuitPython时,您都想知道如何将库放到板上。

你可以通过点击下面的按钮来获取最新的Adafruit CircuitPython 包。

注意:要让你的包版本和CircuitPython 的版本相匹配,运行3.X版本的库对应CircuitPython 3, 4.x的任意版本,对应CircuitPython 4的任意版本等等。如果你把库和主要的CircuitPython版本混在一起,你很可能会因为在主要的版本变化期间库接口的变化而报错。

CircuitPython - Libraries​circuitpython.org
230d442e1f30c164d91492912eed0350.png

如果你需要其它版本,你也可以访问bundle发布页面,在那里你可以选择你想要的版本,以及关于变更的信息。

无论哪种方式,下载与你的CircuitPython固件版本匹配的版本。如果您不知道版本,可以查看CircuitPython REPL中的初始提示符,它会报告版本。例如,如果您运行的是v4.0.1,请下载4。x库包。还有一个py包,它包含未压缩的python文件,除非您正在对库进行高级工作,否则您可能不希望使用它。

下载zip文件后,解压缩其内容。这通常是通过双击zip来完成的。在Mac OSX上,它将文件放在与zip文件相同的目录中。

f3ce038aea89479e89c03fe01a3b1b3e.png

打开bundle文件夹。在里面你会发现两个信息文件和两个文件夹。一个文件夹是lib包,另一个文件夹是examples包。

7b95deeeebdcc5aea973b5c97c07c1e6.png

现在打开lib文件夹。当您打开文件夹时,您将看到很多mpy文件和文件夹

6553808d9bf5ef759e7057515f97de7c.png

示例文件

每个库中的所有示例文件现在都包含在包中,以及一个只包含示例的包中。包括这些主要有两个原因:

  • 允许快速测试设备。
  • 提供一个代码示例库,便于为特定目的而构建。

b9cdb7636f45c8cb33cf8379454a4ec8.png

复制库到你的开发板

首先,您需要在电路驱动器上创建一个lib文件夹。打开驱动器,右键单击,选择创建新文件夹的选项,并将其命名为lib,然后打开从下载的压缩文件中解压缩的lib文件夹。在里面你会发现许多文件夹和。mpy文件。找到您想要使用的库,并将其复制到circuit itpy上的lib文件夹。

这也适用于示例文件。它们仅作为原始的.py文件提供,因此如果遇到memoryerror错误,可能需要使用mpy-cross实用程序将它们转换为.mpy。这在CircuitPython基本指南中进行了讨论。用法与上述快速板部分中描述的相同。注意:如果不将示例放在单独的文件夹中,则需要从import语句中删除示例。

例如:由于丢失库而导入错误

如果选择在需要时加载库,可以编写代码尝试使用尚未加载的库。我们将演示当您尝试使用未加载到您的板上的库时会发生什么,并涵盖解决该问题所需的步骤。

如果您没有将所需的库加载到CIRCUITPY 驱动器的lib文件夹中,则此演示将返回一个错误。

让我们使用blinky示例的修改版本。

import board
import time
import simpleio

led = simpleio.DigitalOut(board.D13)

while True:
    led.value = True
    time.sleep(0.5)
    led.value = False
time.sleep(0.5)

保存这个文件。你的开发板不会有什么变化。让我们检查串口控制台,看看发生了什么。

785d9305aa68308cb5dd73652fb9eee5.png

我们有一个导入错误。它说没有名为“simpleio”的模块。这就是我们刚刚在代码中包含的代码!

单击上面的链接下载正确的包。从下载的包文件中解压缩lib文件夹。向下滚动找到simpleio.mpy。这就是我们要找的库文件!按照上面的步骤加载单独的库文件。

LED又开始闪烁了!让我们检查一下串品控制台。

e81df7bb5995e64a2c5252d5c7e79b31.png

没有错误!太好了。你成功地解决了一个导入错误!

如果将来遇到这个错误,请按照上面的步骤,选择与丢失的库匹配的库。

在非Express 系列的开发板上安装库

如果您有一块Trinket M0或Gemma M0开发板,您需要按照上面示例中的相同步骤安装需要的库。你并不总是需要等待一个ImportError,因为你可能知道你在代码中添加了什么库。只需打开下载的lib文件夹,找到所需的库,并将其拖到电路驱动器上的lib文件夹。

即使只在需要时加载库,也可能会耗尽饰品M0或Gemma M0上的空间。您可以使用许多步骤来尝试解决此问题。您可以在您的板的学习指南中的故障排除页面中找到它们。

更新CircuitPython库/例子

库和示例会不定时更新,而且更新CIRCUITPY 驱动器上的文件很重要。

要更新单个库或示例,请遵循上面相同的步骤。当您将库文件拖动到lib文件夹时,它将询问您是否要替换它。选择是就行了。

每当有一个库的更新时,就会发布一个新的库包。更新包括bug修复和新特性。经常检入以查看您正在使用的库是否已经更新是很重要的。

LED矩阵记分牌编程

一旦你用CircuitPython完成了你的Feather M4 Express的设置,你可以将这些库添加到lib文件夹中:

  • adafruit_bitmap_font
  • adafruit_bus_device
  • adafruit_display_shapes
  • adafruit_display_text
  • adafruit_imageload

然后,您可以单击下面代码顶部的Download: Project Zip链接来下载代码、位图、字体和.mp3文件。

import time
import board
import audioio
import audiomp3
import framebufferio
import rgbmatrix
import displayio
import adafruit_imageload
import digitalio
from adafruit_display_shapes.rect import Rect
from adafruit_bitmap_font import bitmap_font
from adafruit_display_text import label

#  matrix setup
displayio.release_displays()
matrix = rgbmatrix.RGBMatrix(
    width=64,
    height=32,
    bit_depth=4,
    rgb_pins=[board.D6, board.D5, board.D9, board.D11, board.D10, board.D12],
    addr_pins=[board.A5, board.A4, board.A3, board.A2],
    clock_pin=board.D13,
    latch_pin=board.D0,
    output_enable_pin=board.D1,
)
display = framebufferio.FramebufferDisplay(matrix)

#  display groups
start_group = displayio.Group(max_size=30, scale=1)
score_group = displayio.Group(max_size=30, scale=1)

#  text & bg color setup for scoreboard
score_text = "      "
font = bitmap_font.load_font("/Fixedsys-32.bdf")
yellow = (255, 127, 0)
pink = 0xFF00FF

score_text = label.Label(font, text=score_text, color=0x0)
score_text.x = 23
score_text.y = 15

score_bg = Rect(0, 0, 64, 32, fill=yellow, outline=pink, stroke=3)

#  start splash screen graphic
start, start_pal = adafruit_imageload.load("/pixelHoops.bmp",
                                           bitmap=displayio.Bitmap,
                                           palette=displayio.Palette)

start_grid = displayio.TileGrid(start, pixel_shader=start_pal,
                                width=64, height=32)
#  adding graphics to display groups
start_group.append(start_grid)
score_group.append(score_bg)
score_group.append(score_text)

#  start by showing start splash
display.show(start_group)

#  setup for break beam LED pin
break_beam = digitalio.DigitalInOut(board.A1)
break_beam.direction = digitalio.Direction.INPUT
break_beam.pull = digitalio.Pull.UP

#  setup for button pin
button = digitalio.DigitalInOut(board.D4)
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP

#  setup for speaker pin
speaker = audioio.AudioOut(board.A0)

#  mp3 decoder setup
file = "/hoopBloop0.mp3"
mp3stream = audiomp3.MP3Decoder(open(file, "rb"))

#  state machines used in the loop
score = 0
hoops = False
button_state = False
beam_state = False
sample = 0

while True:
    #  button debouncing
    if not button.value and not button_state:
        button_state = True
    #  debouncing for break beam LED
    if not break_beam.value and not beam_state:
        beam_state = True
    #  if a game hasn't started and you press the button:
    if not button.value and not hoops:
        #  game starts
        hoops = True
        button_state = False
        #  display shows scoreboard
        display.show(score_group)
        print("start game!")
        time.sleep(0.5)
    if hoops:
        #  if the break beam LED detects a hoop:
        if not break_beam.value and beam_state:
            #  score increase by 2 points
            score += 2
            #  an mp3 plays
            file = "/hoopBloop{}.mp3".format(sample)
            mp3stream.file = open(file, "rb")
            speaker.play(mp3stream)
            print("score!")
            #  resets break beam
            beam_state = False
            #  increases mp3 file count
            #  plays the 3 files in order
            sample = (sample + 1) % 3
        #  score text x pos if 4 digit score
        if score >= 1000:
            score_text.x = -1
        #  score text x pos if 3 digit score
        elif score >= 100:
            score_text.x = 7
        #  score text x pos if 2 digit score
        elif score >= 10:
            score_text.x = 16
        elif score >= 0:
            score_text.x = 23
        #  updates score text to show current score
        score_text.text = score
        time.sleep(0.01)
    #  if a game is in progress and you press the button:
    if not button.value and hoops:
        #  game stops
        hoops = False
        button_state = False
        #  score is reset to 0
        score = 0
        score_text.text = score
        #  display shows the start splash graphic
        display.show(start_group)
        print("end game!")
        time.sleep(0.5)

在您加载库、位图、字体、.mp3和code.py文件之后,您的Feather M4 Express电路驱动器应该看起来像这样:

47f44e0cfd25a884def23745ac401b7d.png

LED矩阵计分板代码解析

import time
import board
import audioio
import audiomp3
import framebufferio
import rgbmatrix
import displayio
import adafruit_imageload
import digitalio
from adafruit_display_shapes.rect import Rect
from adafruit_bitmap_font import bitmap_font
from adafruit_display_text import label

RGB矩阵是使用rgbmatrix库设置的。

#  matrix setup
displayio.release_displays()
matrix = rgbmatrix.RGBMatrix(
    width=64,
    height=32,
    bit_depth=4,
    rgb_pins=[board.D6, board.D5, board.D9, board.D11, board.D10, board.D12],
    addr_pins=[board.A5, board.A4, board.A3, board.A2],
    clock_pin=board.D13,
    latch_pin=board.D0,
    output_enable_pin=board.D1,
)
display = framebufferio.FramebufferDisplay(matrix)

然后,创建两个显示组。一个组显示启动图形,另一个组显示游戏时的分数。

#  display groups
start_group = displayio.Group(max_size=30, scale=1)
score_group = displayio.Group(max_size=30, scale=1)
下来将为记分牌设置文本(score_text)和彩色背景(score_bg)。文本使用的是位图字体。
#  text & bg color setup for scoreboard
score_text = "      "
font = bitmap_font.load_font("/Fixedsys-32.bdf")
yellow = (255, 127, 0)
pink = 0xFF00FF

score_text = label.Label(font, text=score_text, color=0x0)
score_text.x = 23
score_text.y = 15

score_bg = Rect(0, 0, 64, 32, fill=yellow, outline=pink, stroke=3)

在设置分数文本之后,使用adafruit_imageload库设置启动图形位图。

#  start splash screen graphic
start, start_pal = adafruit_imageload.load("/pixelHoops.bmp",
                                           bitmap=displayio.Bitmap,
                                           palette=displayio.Palette)

start_grid = displayio.TileGrid(start, pixel_shader=start_pal,
                                width=64, height=32)

启动位图和评分文本图形被添加到各自的显示组中。首先使用display.show(start_group)显示启动位图。

#  adding graphics to display groups
start_group.append(start_grid)
score_group.append(score_bg)
score_group.append(score_text)

#  start by showing start splash
display.show(start_group)

显示器安装完成后,阻断式红外LED、按钮和扬声器的I/O引脚安装完毕。使用audioio库将LED和按钮设置为输入,扬声器设置为AudioOut。

#  setup for break beam LED pin
break_beam = digitalio.DigitalInOut(board.A1)
break_beam.direction = digitalio.Direction.INPUT
break_beam.pull = digitalio.Pull.UP

#  setup for button pin
button = digitalio.DigitalInOut(board.D4)
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP

#  setup for speaker pin
speaker = audioio.AudioOut(board.A0)

MP3Decoder是在循环之前设置的,类似于代码中早期的display对象设置。这有助于在播放多个。mp3文件时节省内存。注意,在本节中您没有播放。mp3,这纯粹是为了设置。

#  mp3 decoder setup
file = "/hoopBloop0.mp3"
mp3stream = audiomp3.MP3Decoder(open(file, "rb"))

设置的最后一部分创建将在循环中使用的状态机。下面注释了它们的函数。

#  state machines used in the loop
score = 0 #  holds your score for the game
hoops = False #  tracks if a game is active or not
button_state = False #  button debouncing
beam_state = False #  break beam LED debouncing
sample = 0 #  file count for the mp3 files

循环开始与消除按钮和阻断式LED的抖动。这消除了从输入接收数据时的任何故障。

while True:
    #  button debouncing
    if not button.value and not button_state:
        button_state = True
    #  debouncing for break beam LED
    if not break_beam.value and not beam_state:
        beam_state = True

根据游戏是否正在进行,按钮有不同的功能。如果一个游戏还没有开始,然后按下按钮开始一个新的游戏,并改变显示,以显示记分牌图形。

#  if a game hasn't started and you press the button:
    if not button.value and not hoops:
        #  game starts
        hoops = True
        button_state = False
        #  display shows scoreboard
        display.show(score_group)
        print("start game!")
        time.sleep(0.5)

如果hoops状态为真,游戏就会运行。每当break beam LED检测到一个break,你的分数增加2分,一个。mp3文件播放。

有三个不同的.mp3文件,它们按游戏进行的顺序播放。代码能够轻松地遍历文件,因为它们都命名为hoopBloop*。通过这样命名它们,您可以使用"/hoopBloop{}.mp3".format(sample)迭代它们,让sample保存数字。

代码引用了在循环之前为解码和播放.mp3文件而设置的mp3stream。

此外,还有一些文本格式,这取决于分数的位数。这样可以使得分在比赛中保持居中。

if hoops:
        #  if the break beam LED detects a hoop:
        if not break_beam.value and beam_state:
            #  score increase by 2 points
            score += 2
            #  an mp3 plays
            file = "/hoopBloop{}.mp3".format(sample)
            mp3stream.file = open(file, "rb")
            speaker.play(mp3stream)
            print("score!")
            #  resets break beam
            beam_state = False
            #  increases mp3 file count
            #  plays the 3 files in order
            sample = (sample + 1) % 3
        #  score text x pos if 4 digit score
        if score >= 1000:
            score_text.x = -1
        #  score text x pos if 3 digit score
        elif score >= 100:
            score_text.x = 7
        #  score text x pos if 2 digit score
        elif score >= 10:
            score_text.x = 16
        #  score text x pos if 1 digit score
        elif score >= 0:
            score_text.x = 23
        #  updates score text to show current score
        score_text.text = score
        time.sleep(0.1)

如果游戏正在进行中,你按下按钮,它会改变圆环状态为False并结束游戏。分数也被重置为0,并且显示启动位图。

#  if a game is in progress and you press the button:
    if not button.value and hoops:
        #  game stops
        hoops = False
        button_state = False
        #  score is reset to 0
        score = 0
        #  display shows the start splash graphic
        display.show(start_group)
        print("end game!")
        time.sleep(0.5)

篮圈组装

红外阻断接收器接线
使用两芯的的排线,长度为40厘米。这条线要很长,用来缠绕3D打印的钢圈。来自红外传感器的接地线和电压线是通过用两线带状电缆切割来扩展的。使用热收缩管绝缘暴露的电线。

1303f9d0e5efb3648dcd63a6661c6a84.png

红外阻断发射器布线
用一根3线的JST电缆焊接到红外发射机的三根电线上。JST连接器允许传感器容易地连接和断开。使用热收缩管绝缘暴露的电线。

72f08203eb18626767d4d78092878d4a.png

红外阻断圈的连线

将红外断束接收器放入箍中并测量导线长度。它应该足够长,以环绕环的一半与额外松弛的结束连接到2线JST连接器。

b904696e313e29696d8e3b7d688ac945.png

安全固定红外断束接收器
使用M2.5 x 10mm长的螺丝固定红外接收器到箍。将红外传感器压入滚轮末端的凹槽。固定M2.5螺丝时固定到位。LED应该朝向安装片朝上。

b369b5981232663bafada69f4adc05fc.png

穿线

3D打印箍的特点是有一个通道,可以在里面布线。这可以防止排线出现在游戏过程中。将电线插入并穿过其中一个通道。不管哪一边都是对称的。

83818602f924edc9934e08adacc00bba.png

放线孔

通道有一个开口,几乎穿过环箍的一半,以便接近接线。这有助于在接线上提供一个支撑,以便将接线进一步绕到环箍的一半。

29521b93c9a10fea94cbba2bd17a443b.png

出口孔

继续从红外接收器穿线,直到它穿过另一端。小心地将接线穿过最靠近通道出口的孔。

c0514cbffa3d9fadddf7077a66d7a505.png

安装红外接收器

仔细检查电线是否已完全拉过。电线应该绕到环箍的一半。红外发光二极管的方向应使安装

凸耳朝上。

f380a66539ba2b718f2d92756edf6683.png

焊接JST电缆

一根2线JST母电缆焊接到红外接收器的接线上。再次检查极性是否与连接到黑色导线的接地和连接到红色导线的电压相匹配。用热缩管将裸露的电线绝缘。

08e43b03476daf80ab5f1ff151a56a9c.png

焊接JST电缆

箍现在已经安装了红外接收器并接上了电线。

f380a66539ba2b718f2d92756edf6683.png

安全固定红外发射器

红外发射器安装在箍的另一端靠近安装片的位置。将红外线发射器放入中间的凹槽中。固定M2.5 x 10mm长的螺丝时,固定到位。

07f17f8d5cc9e600396537ef28bc3029.png

Feather控制主板线路连接

矩阵显示屏电源线制作

64x32的RGB矩阵显示器有一根电源线。布线已经缩短和简化,使布线在装配期间更易于管理。

06c220b09664768a1da50fd8a950f86a.png

Feather 主控板和 FeatherWing扩展板配置

羽毛M4 Express有一个12针和16针带焊针的公头焊接到PCB板的底部。RGB矩阵显示扩展板有12针和16针母座焊接到PCB的顶部。2x10母插座焊接是在扩展板的底部。

5c7c3d471051527fbb017b50a9638459.png

JST连接电缆

根JST电缆被用来连接到Feather 主板和FeatherWing扩展板及相关的各种部件。这里有一个电缆列表以及它们连接的关系。

34ee8131f5516218896537f4c4af69ec.png
  • 2-线JST公头: 拱廊按钮
  • 3-线JST公头: STEMMA 扬声器
  • 3-线JST公头: 红外发射器
  • 2-线 JST公头: 红外接收器

Feather 主控板和 FeatherWing连接关系

f5f7aac80e137af3ab0cb67cceeeb863.png

仔细检查导线和电缆是否准备好焊接到pcb板上。

焊接电缆-红外阻断接收器
开始焊接2线JST电缆到Feather主控板的地和3V引脚。这条电缆将连接到红外接收器上。电线焊接在Feather的底部。

9c9dd980e60b3c97f939ee0fe5d44ed3.png

焊接电缆到红外阻断TX脚

焊接3线JST电缆到Feather主控板上可用的地和3V引脚。这条电缆将连接到红外发射机上。白线将连接到RGB矩阵显示器扩展板的A1引脚。

9c9dd980e60b3c97f939ee0fe5d44ed3.png

FeatherWing连接
其余的JST电缆将焊接到RGB矩阵显示器扩展板。

按钮连接

焊接第二根2线JST电缆到GND和FeatherWing扩展板底部的D4针。请参考Feather 上的引脚以确保这个引脚是正确的。

焊接红外发射器信号线


焊接3线JST电缆的白色线从到FeatherWing板底部A1针。这条电缆将用来连接IR发射器。

连接STEMMA 扬声器

焊接三线JST电缆的第二、三根线到FeatherWing板上的相连引脚。白线焊接到A0,黑线焊接到地,红线焊接到3V。

连接Feather 主控板和FeatherWing扩展板

布线是完成后,准备好插入各种组件。

连线检查

仔细检查接线是否正确。

LED矩阵屏组装

安装包角支架

角支架被固定在RGB矩阵显示器的四个角上。这些托架固定在安装孔上。它们还能包住一块黑色的LED亚克力散光片。

4701c78d3b857467587abf9a7c341f48.png

插入六角螺帽

抓住四个角托架中的两个,将M3六角螺母插入凹槽。两个角支架用于确保按钮安装到显示器的一侧。你可自己选择把按钮安装在哪一边。

daddc80ff183846c1b0fa18e5267db60.png

组装包角托架

把托架放在角落上,并调整他们,使安装孔是正确排列。显示器侧面有支架,支架上有明显的安装孔。这些孔用于固定按钮安装板。

d7949c00bc188fd7897335a0994d529a.png

可选:将黑色LED亚克力片滑动插包角托架内。

安装支脚

将脚放在角架上,并将安装孔对齐。为了保证正确的位置,请参考照片。

4342017014e1ac2aae008dbf53ceb0ab.png

固定支脚

使用两颗M3 x 10mm长的螺丝将脚固定在角支架上。这些螺丝也会紧固在显示器上的螺纹插入件上。

878ed9bbeccb28c27b56422786d8e37d.png

安装另一个脚

第二脚重复上面这个过程。

d6d62fe6c0b1bac5ab6fb93e6ba0a93d.png

按钮连接

短的2线JST电缆焊接在拱廊按钮上。这连接到JST电缆,这条电缆焊接到FeatherWing扩展板上的D4引脚。

1d6a003aadcd9c9a2422dfd6c41b0bb5.png

组装按钮安装板

将按钮安装板与前面安装的六角螺母一起放在角架上。并对准安装孔。

98b25a519c95a6e1dd27fd54f129e5b4.png

固定按钮安装板

通过安装孔插入并紧固两个M3 x 6mm长的机器螺钉。参考照片以获得最佳位置。

4680bf862519ec0a0c48f16bdb705797.png

面板安装拱廊按钮

将拱廊按钮插入按钮安装板。确保按钮面向正确的方向。

cd6a0225b2bcbca82df3896fce36aeb9.png

固定拱廊按钮

使用螺母将拱廊按钮固定在按钮安装板上。

827980aab2bdf380e69b6ca7d8a7b61e.png

安装篮圈支架到脚上

把两个篮圈支架放在脚上。排列好安装孔。请参考照片的正确位置和方向。

b9d3cbae208c6b1e3090d8eb993206f5.png

固定篮圈支架

将一个M3 x 10mm长的螺钉插入并固定在环箍支架上的安装孔中。

8dc45d22165c3a64f4cd984a269d113f.png

固定支架

使用M3六角螺母固定螺钉。将M3六角螺母插入脚后部的凹槽中。

db33408f70fe27b3ebd0c4dfb02527a4.png

另一个篮圈支架

对另一只脚安装重复上面这个过程。

32d6c5024d27ef408778420e4fe69362.png

安装篮圈

将环箍上的安装凸耳放入支脚上的两个支架中。支架具有壁,用于压装安装凸耳。安装孔应正确对齐。

b8e45e2f01f328a37df8cd78d136ffb4.png

固定篮圈

拧紧M3 x 10mm的长螺丝。

b7db869db0067344d16d804cc9b21d8f.png

已经固定的篮圈

环箍上的安装凸耳具有用于安装M3六角螺母的凹槽。插入六角螺母以固定M3螺钉。

c4db8de11f66c32901c62e8c1abd5f83.png

准备安装Feather 和FeatherWing电路板

准备好印刷电路板,以适应RGB矩阵显示器的背面。

595ccefcb25e4b977e0ab92ee72c70ca.png

安装Feather 和FeatherWing电路板

Feather M4 express安装在RGB矩阵FeatherWing扩展板的上面。FeatherWing 板压装在显示屏上的2x8 IDC头上。确保它放置在正确的插座上。使用箭头参考输入插座。

6cf2a0dbc5678bcc971a7c699b008da3.png

STEMMA 扬声器

Stemma扬声器使用4x M2.5 x 10mm长的机器螺丝固定在扬声器底座上。

5f2898f3146208a89bf38321235edd0f.png

安装STEMMA 扬声器

将Stemma扬声器放在扬声器支架上的内置支架上。插入M2.5螺钉并使用六角螺母将PCB固定到底座上。

bc4bb9717cd1425006c29466f90d2c26.png

固定扬声器支架

将扬声器支架放在显示屏背面中间的安装孔上。对准安装孔并插入两个M3 x 6mm长的螺钉,以将扬声器安装到显示屏上。参考照片以获得最佳方向。

1544465e78fc2c75c45a336088b5e34d.png

插入连接器

小心地将JST电缆插入各自对应部分进行连接。采取措施确保连接正确。

de6531a947ab8959a5d59b6cf879bf37.png

大功告成

现在我们已经把它完全组产完毕了,它已经准备好进行测试。我们建议使用安装钉将脚暂时固定在桌面或工作表面。脚具有各种安装孔,可通过硬件螺丝固定在框架或桌面上。

! 在游戏过程中要小心谨慎。你是在往显示器上扔球!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值