基于RP2040与CircuitPython的交互式Faz-Wrench道具制作全流程解析

发布时间:2026/5/17 1:53:43

基于RP2040与CircuitPython的交互式Faz-Wrench道具制作全流程解析 1. 项目概述与核心思路如果你和我一样既是《玩具熊的五夜后宫安全漏洞》的粉丝又对嵌入式硬件开发充满热情那么亲手制作一把游戏里的Faz-Wrench法兹扳手绝对是一件充满乐趣和成就感的事情。这不仅仅是一个简单的模型而是一个功能齐全、可交互的电子道具。它拥有一个能显示状态信息的LCD屏幕两个能触发不同功能的背光按钮一个用于调节音量的旋转编码器一组能根据道具姿态改变颜色的NeoPixel LED以及能播放游戏音效的扬声器。整个项目的核心是一块来自Adafruit的RP2040 Prop-Maker Feather开发板它集成了RP2040微控制器、I2S音频放大器和丰富的扩展接口让我们能用CircuitPython这种对初学者极其友好的语言快速实现所有复杂功能。这个项目的魅力在于它完美融合了数字制造3D打印、嵌入式编程CircuitPython和硬件工程电路连接与组装。你不需要是某个领域的专家只要跟着步骤一步步来就能在动手实践中透彻理解一个交互式智能设备从内到外的完整构建逻辑。从将STL文件变成手中的实体零件到编写代码让屏幕亮起、让扬声器发声再到最后将所有模块严丝合缝地组装成一个完成品整个过程本身就是一次绝佳的学习之旅。接下来我将为你拆解这个项目的每一个环节分享我在复现过程中积累的实操细节和避坑经验。2. 硬件选型与物料清单解析工欲善其事必先利其器。一份清晰、完整的物料清单是项目成功的第一步。原项目基于Adafruit的生态系统其优势在于组件兼容性好文档齐全。下面我不仅会列出清单还会详细解释每个关键部件的作用和选型理由即便你未来想用其他平台复刻也能明白其中的门道。2.1 核心控制器RP2040 Prop-Maker Feather这是整个项目的大脑。选择它而非普通的RP2040开发板原因有三集成度高它板载了MAX98357 I2S Class D音频放大器可以直接驱动8欧姆的扬声器省去了额外连接音频放大模块的麻烦和空间。接口专为道具设计板子边缘提供了标准的螺丝端子用于连接大电流设备如NeoPixel灯带和扬声器比用杜邦线连接可靠得多。同时它保留了Feather标准的STEMMA QT/Qwiic接口可以像搭积木一样连接I2C设备。供电管理完善内置锂电池充电和管理电路配合板载的JST-PH电池接口让道具可以完全脱离USB线运行。注意确保你购买的是Prop-Maker版本Adafruit还有其他基于RP2040的Feather板但可能缺少音频放大器或螺丝端子。2.2 输入与显示模块LCD屏幕与背板这里用的是一个经典的16x2字符型LCD基于HD44780控制器搭配一个I2C接口的“背包”Backpack。这个背包至关重要它将LCD所需的16根并行数据线简化为仅需2根线的I2C通信加上电源和地线共4根极大简化了布线。背包上的STEMMA QT接口实现了即插即用。旋转编码器我们选用的是集成NeoPixel RGB LED的I2C旋转编码器模块。同样是STEMMA QT接口。旋转编码器用于无级调节音量其内部的RGB LED可以作为状态指示灯。I2C通信同样简化了连接。按钮两个16mm的带灯自复位按钮一红一绿。这类按钮内部是两套独立的电路一套是普通的瞬时开关另一套是用于点亮按钮内部LED的电路。在接线时需要区分清楚后文会详细说明。2.3 输出与装饰模块NeoPixel LED项目使用了5颗单独的NeoPixel LED它们是从一条120灯的侧发光灯带上裁剪并焊接出来的。NeoPixel是Adafruit的WS2812智能RGB LED品牌每个LED都可以单独寻址和控制颜色只需要一根数据线加上电源和地就能驱动一整条非常适合这种需要多点照明的场景。扬声器一个8欧姆1瓦的迷你椭圆形扬声器。选择这个规格是因为它完全匹配RP2040 Prop-Maker Feather上音频放大器的驱动能力音量和音质对于道具来说都足够。天线装饰用两个RP-SMA接口的“鞭状”天线纯粹为了外观还原。它们通过RP-SMA母头转SMA公头的转接头安装在3D打印的外壳上没有任何电气功能。2.4 结构、连接与电源3D打印外壳所有结构件都需要通过3D打印制作。文件格式为STL建议使用PLA材料因为它易于打印、强度足够且无异味。连接线STEMMA QT/Qwiic电缆用于连接I2C设备LCD背板和旋转编码器到Feather主板。准备一根短50mm的和一根长300mm或400mm的。JST-XH延长线这种2.5mm间距的线缆常用于连接电池、开关等。这里用于延长电源开关的线路。Molex PicoBlade电缆1.25mm间距非常细小适合连接按钮上的LED引脚。“母对母”杜邦跳线用于将按钮的开关部分连接到Feather板的GPIO引脚。电源锂电池一块3.7V、4400mAh的锂聚合物电池。容量大可以保证长时间运行尺寸需要与电池仓匹配。滑动开关一个单刀双掷SPDT滑动开关用于控制整个系统的电源通断。它被连接在电池和Feather板的“EN”使能引脚之间物理切断电源实现完全关机。2.5 完整物料清单与采购参考为了方便你采购我将所有关键部件整理成下表并附上了它们在项目中的主要作用类别部件名称数量关键作用与备注核心控制Adafruit RP2040 Prop-Maker Feather1主控制器提供计算、音频放大和电源管理显示16x2 字符LCD蓝底白字1显示游戏内文本信息如“DEACTIVATED”I2C/SPI 字符LCD背板 (STEMMA QT)1简化LCD与主板的连接必须与LCD配套输入I2C STEMMA QT 旋转编码器带NeoPixel1调节音量其自带LED可作为状态灯16mm 背光按钮绿色瞬时1触发“解锁门”谜题模式16mm 背光按钮红色瞬时1切换/增加“已停用节点”计数输出NeoPixel LED 侧发光灯条120灯1条裁剪出5颗LED用于道具两侧的灯光效果迷你椭圆形扬声器 (8 Ohm 1W)1播放游戏音效结构3D打印外壳全套STL文件1套需要自行打印PLA材料即可电源锂聚合物电池 (3.7V, 4400mAh)1提供移动电源注意尺寸需匹配电池仓SPDT 滑动开关1系统总电源开关连接220欧姆 直插电阻1用于限流保护按钮内的LEDRP-SMA母头转SMA公头适配器2连接装饰天线到外壳装饰天线RP-SMA接口2纯外观部件STEMMA QT 4芯电缆 (50mm)1连接旋转编码器到主板STEMMA QT 4芯电缆 (300mm或400mm)1连接LCD背板到旋转编码器级联JST-XH 2芯延长线 (500mm)3用于电源开关等长距离电源连接Molex PicoBlade 2芯电缆 (400mm)1连接按钮的LED引脚到主板3.3V母对母杜邦跳线20根装1包连接按钮开关、NeoPixel数据线等3. 3D打印与后期处理要点外壳的打印质量直接决定了最终道具的观感和组装顺畅度。原设计非常贴心所有零件都优化了打印方向理论上不需要支撑。但根据我的实际打印经验有几个细节需要特别注意。3.1 切片参数与材料选择我使用Creality Ender-3 V2打印机和普通的PLA材料按照项目推荐的CURA参数设置得到了非常好的效果层高0.2mm。这是一个在打印质量和时间之间取得平衡的常用值。更低的层高如0.12mm会让表面更光滑但时间会大幅增加。填充10% Gyroid螺旋二十四面体。这种填充图案强度高、耗材相对少并且在打印时喷头移动连续有助于减少振动。打印速度60mm/s。对于PLA来说是个稳健的速度。温度喷嘴200°C热床60°C。这是PLA的通用温度如果你的材料特殊请以厂家建议为准。实操心得务必在打印前检查每个零件的预览图。在CURA中加载所有STL文件后使用“预览”模式逐层查看。重点关注那些有悬空结构的部分比如顶部外壳top-faz-wrench内部用于固定LCD屏幕的卡槽和螺丝柱。虽然设计上可能无需支撑但如果你的打印机在超过45度的悬垂上表现不佳为了确保成功率我强烈建议对顶部外壳启用支撑。支撑设置可以参照原文支撑悬垂角度50°密度6%并开启“支撑顶板界面”。这样生成的支撑相对容易拆除且对模型表面的影响最小。3.2 多色标签打印技巧“闪电螺栓”标签是体现细节的点睛之笔。原教程使用了CURA的“耗材更换”插件来实现双色打印。操作步骤如下在CURA中加载lightning-label.stl。点击顶部菜单栏的“扩展” - “后期处理” - “修改G代码”。点击“添加脚本”选择“耗材更换”。在“层”输入框中填入3。这意味着打印机在打完第3层后会自动暂停让你有机会更换耗材颜色。开始打印。当打印机暂停时手动将耗材挤出一些确保新颜色完全替换旧颜色后再继续打印。更稳妥的手动方案如果你觉得插件不稳定或者想更精确控制换色位置可以采用手动暂停在打印到第3层结束时通过打印机控制屏或连接电脑的打印软件如OctoPrint发送暂停命令。更换耗材手动挤出一些清理喷嘴。恢复打印。这样也能达到同样的效果。3.3 打印件的后期处理打印完成后不要急着组装。花点时间进行后期处理能让成品质感提升一个档次去除支撑与打磨小心地拆除所有支撑材料。对于支撑与模型接触的部位可能会有粗糙的疤痕可以用精细的砂纸如600目以上轻轻打磨平整。对于螺丝孔内部可以用合适尺寸的钻头或锉刀清理一下确保螺丝能顺利拧入。清洁与检查用刷子或气吹清除模型内部和缝隙中的所有塑料碎屑。仔细检查各零件的配合处特别是需要压合安装的部件如按钮孔、LED导光柱孔如果有毛刺或第一层“大象脚”导致过紧需要仔细修整。导光柱与贴纸的粘贴LED导光柱和闪电标签是单独打印的小零件需要使用胶水粘贴。我推荐使用氰基丙烯酸酯胶水俗称快干胶或401胶水点少量在接触面即可干得快且牢固。粘贴前最好先用棉签蘸取少量酒精清洁粘贴面去除油脂和灰尘粘合效果会更好。4. 电路设计与焊接实操指南这是将一堆分散的模块连接成一个可工作系统的关键步骤。接线错误轻则功能失效重则损坏元件。请务必在通电前反复检查。4.1 核心连接逻辑图析整个系统的电路连接可以概括为以下几个部分理解了它们接线图就在你心中了电源主干锂电池的正极通过滑动开关连接到Feather板的“EN”引脚。锂电池的负极-直接连接到Feather板的“GND”。当开关闭合Feather板得电启动。Feather板上的“3V”引脚输出3.3V稳压电源为所有其他模块按钮LED、I2C设备等供电。I2C总线这是连接智能传感器的“高速公路”。RP2040 Prop-Maker Feather的I2C引脚即SCL和SDA通过STEMMA QT接口引出。我们将旋转编码器模块用短STEMMA线直接插在Feather的QT端口上再将LCD的I2C背板用长STEMMA线插在旋转编码器模块的另一个QT端口上。这就构成了一个I2C链两个设备共享同一条数据线。数字输入按钮两个按钮的开关部分是独立的。我们需要用杜邦线将它们的一端连接到Feather板的GPIO引脚代码中定义红色按钮接D13绿色按钮接EXTERNAL_BUTTON另一端统一连接到GND。这样当按钮按下时GPIO引脚会从高电平被拉低到GND程序就能检测到“按下”事件。数字输出NeoPixel与按钮LEDNeoPixel其数据输入引脚Din连接到Feather板的EXTERNAL_NEOPIXELS专用引脚。电源5V或VCC连接到Feather螺丝端子的5V输出地GND连接到螺丝端子的GND。注意NeoPixel灯带的工作电压通常是5V虽然数据信号是3.3V但供电接5V能保证亮度稳定。按钮LED每个按钮内部都有一个LED。我们需要为每个LED串联一个220欧姆的限流电阻然后一端接到Feather板的3V引脚另一端接到按钮的LED正极引脚。LED的负极引脚则连接到按钮的开关公共端吗不这里是个关键点按钮的LED和开关在电气上是完全独立的。LED的负极应该直接连接到GND。模拟输出音频扬声器直接连接到Feather板上的螺丝端子标有和-符号。板载的I2S放大器会直接驱动它。4.2 关键焊接步骤与避坑点为LCD和旋转编码器焊接排针这两个模块通常发货时是不带排针的。你需要自行焊接。将排针从PCB背面无元件的一面插入然后在正面有焊盘的一面进行焊接。确保排针与PCB垂直。焊接完成后可以插上一个排母或直接连线测试确保没有虚焊或短路。区分按钮的四个引脚这是最容易出错的地方。一个带灯自复位按钮通常有四个引脚。用万用表的蜂鸣档导通档可以快速区分按下按钮测量哪两个引脚之间导通这两个就是开关引脚。不按按钮给另外两个引脚加上一个3V电压通过串联的220欧姆电阻看LED是否亮起这两个就是LED引脚。通常LED引脚旁边会有“”和“-”的标记或者引脚长度略有不同。焊接电阻将220欧姆电阻的一端焊接在Feather板3V引脚引出的导线上另一端焊接在按钮LED的“”极引脚导线上。务必确保电阻串联在电路中否则直接连接3.3V到LED会因电流过大而烧毁LED。裁剪与焊接NeoPixel灯带从整条灯带上你需要精确地剪下5颗LED。剪切位置必须在灯带上标记的剪切点通常是铜焊盘中间。剪切后你需要为这5颗LED焊接导线。注意数据流向第一颗LED的Din接Feather的数据线它的Dout接第二颗的Din以此类推。最后一颗LED的Dout悬空。电源5V和地GND则并联连接到所有LED。焊接时动作要快避免高温损坏LED芯片。建议使用尖头烙铁和助焊剂。4.3 组装前的通电测试非常重要在把所有东西塞进外壳之前强烈建议进行“裸板测试”。仅连接电池和Feather板通过USB连接到电脑。此时CIRCUITPY盘应该出现。仅焊接并连接LCD的I2C背板上传一个简单的测试代码如Adafruit库中的示例看屏幕能否点亮并显示字符。同理单独测试旋转编码器旋转、按下和每个按钮按下时串口是否有输出。单独测试NeoPixel让它们显示不同的颜色。最后测试扬声器播放一个简单的WAV文件。这样做的好处是一旦某个功能不正常你可以很容易地定位是焊接问题、接线问题还是代码问题。如果等全部装进外壳再测试排查故障会变得异常困难。5. CircuitPython代码深度剖析与定制代码是道具的灵魂。原项目提供的code.py已经实现了所有核心功能但理解其工作原理才能让你未来进行自定义修改比如更换音效、改变灯光模式时得心应手。5.1 工程结构与文件部署将下载的工程包解压后你会得到三个关键部分需要正确复制到CIRCUITPY磁盘code.py主程序文件设备上电后自动运行。lib/文件夹包含所有依赖的CircuitPython库文件。例如adafruit_character_lcd,adafruit_lis3dh,adafruit_seesaw,adafruit_led_animation,adafruit_ticks等。必须确保整个lib文件夹被完整复制过去。faz_sounds/文件夹存放所有WAV格式的音效文件。这些文件需要保持原有的命名因为代码中会按名称读取。5.2 主循环逻辑与状态机整个程序的核心是一个while True循环它不断地检查输入按钮、编码器、加速度计并更新输出屏幕、LED、声音。它巧妙地用布尔变量puzzle来管理两个主要状态默认模式和谜题模式。# 关键状态变量 puzzle False # 初始为默认模式 while True: event button.events.get() # 1. 检查按钮事件 if event and event.pressed: number event.key_number if number 0 and not puzzle: # 绿色按钮启动谜题模式 puzzle True # ... 进入谜题模式的初始化代码 ... if number 1: # 红色按钮在默认模式下增加节点计数 node_num (node_num 1) % 5 if puzzle: # 2. 如果处于谜题模式 # ... 处理加速度计、更新屏幕乱码、播放充电音效 ... # 检查谜题时间是否结束 if ticks_diff(ticks_ms(), puzzle_clock) puzzle_time: puzzle False # 切换回默认模式 # ... 播放解锁成功音效 ... if not puzzle: # 3. 如果处于默认模式 # ... 显示节点信息/安全突破信息 ... # ... 检查旋转编码器并调整音量 ...这种“状态机”的编程思想非常清晰根据puzzle的值决定执行哪一段逻辑。按钮事件作为触发状态切换的开关。5.3 各功能模块代码详解音频播放系统这是项目中相对复杂的一部分。它使用了audiomixer.Mixer对象这是一个音频混合器允许我们更好地控制播放如调节音量、循环播放。audio audiobusio.I2SOut(board.I2S_BIT_CLOCK, board.I2S_WORD_SELECT, board.I2S_DATA) mixer audiomixer.Mixer(voice_count1, sample_rate22050, channel_count1, bits_per_sample16, samples_signedTrue, buffer_size32768) volume 0.5 # 初始音量 mixer.voice[0].level volume # 设置声道0的音量 audio.play(mixer) # 开始播放混合器静音流open_audio(num)函数根据索引打开对应的WAV文件并返回一个WaveFile对象。播放时调用mixer.voice[0].play(wave)。这里有个细节在默认模式下背景音效是循环播放的 (loopTrue)而在谜题模式中播放的充电音效是单次的。NeoPixel动画使用了adafruit_led_animation库中的Pulse脉冲动画。在默认模式下LED呈现红色的呼吸效果。当进入谜题模式或根据加速度计倾斜时通过pulse.fill(color)方法来瞬间改变所有LED的颜色绿色或红色动画效果本身仍在后台运行。加速度计交互通过lis3dh.acceleration读取三轴加速度值并除以标准重力加速度进行归一化。代码主要关注Z轴方向if z 0: # 如果Z轴加速度为正根据安装方向可能代表道具“直立” wave open_audio(2) # 播放“向上”充电音效 pulse.fill(GREEN) else: # Z轴加速度为负道具“倒置” wave open_audio(3) # 播放“向下”充电音效 pulse.fill(RED)这是你可以大做文章的地方你可以修改阈值或者加入对X、Y轴的判断来实现更复杂的姿态交互。随机字符生成puzzle_string(length)函数生成了屏幕上显示的乱码。它随机选择数字或大写字母并格式化成两行以模拟游戏中的黑客界面效果。5.4 自定义与扩展建议更换音效只需将你自己的WAV文件替换到faz_sounds文件夹中。注意CircuitPython对WAV文件格式有要求推荐使用单声道、22050Hz采样率、16位PCM编码的WAV文件兼容性最好。你可以用Audacity等免费软件进行转换。修改灯光模式adafruit_led_animation库提供了丰富动画如ColorCycle颜色循环、Sparkle闪烁、Comet彗星等。你可以尝试替换Pulse或者根据不同的状态组合多种动画。增加新功能例如你可以通过增加一个模式切换按钮加入第三个“诊断模式”在屏幕上滚动显示加速度计的实时数据或电池电压。RP2040 Prop-Maker Feather的VOLTAGE_MONITOR引脚可以读取电池电压。优化功耗如果你希望道具续航更久可以在代码中加入休眠逻辑。例如长时间无操作后关闭LCD背光和NeoPixel进入深度睡眠直到有按钮按下时再唤醒。6. 机械组装全流程与精调技巧当所有电子部分测试无误后就可以开始最终的组装了。这个过程像在组装一个精密的模型需要耐心和细心。6.1 模块化预组装不要试图一次性把所有东西都塞进底壳。我建议分模块进行预组装和固定显示模块将LCD屏幕用M2.5x6mm螺丝固定到前壳内部的支架上。连接好长STEMMA线并预留出足够长度到主板位置。输入模块将旋转编码器板用M2.5x6mm螺丝固定到其专属支架上。将两个按钮穿过前壳的孔从内部用螺母锁紧。确保按钮正面与外壳表面平齐或略微凹陷手感舒适。主板与灯光模块将Feather主板用M2和M2.5螺丝固定到主板支架上。将焊接好导线的5颗NeoPixel LED卡入灯光导光支架中确保LED发光面正对导光柱。然后将这个灯光模块也固定到主板支架的相应位置。电源模块将电池放入电池仓支架并用M2.5螺丝将支架固定到后壳内部。将滑动开关安装到后壳侧面的开口处。6.2 内部走线与理线艺术混乱的线缆是组装的天敌不仅影响美观更可能妨碍外壳闭合甚至导致线材被挤压断裂。规划路径在最终合盖前先规划好每条线缆的走向。原则是尽量让线缆沿着外壳内壁的凹槽或空隙走避开运动部件如编码器旋钮和螺丝柱。使用扎带或胶带对于较长的线缆如连接按钮的杜邦线可以用微型扎带或一小段电工胶带将其捆扎整齐固定在不碍事的地方。连接顺序建议先连接所有“硬连接”即用螺丝端子固定的线如扬声器、NeoPixel电源线再插接所有“插拔连接”如STEMMA QT接头、JST接头。最后处理那些用杜邦线连接的GPIO信号线。最后检查在合上外壳之前做最后一次全面的检查所有螺丝是否拧紧所有接插件是否插到底、锁紧线缆是否都被规整好没有卡在上下壳的结合缝处电池插头是否牢固滑动开关是否能在开口中顺畅拨动6.3 合盖与最终测试小心翼翼地将上下壳对齐。此时可能有线缆被挤出需要用手轻轻将其推入壳内。先用手将几个主要的卡扣扣合确保外壳基本对齐。使用M3x8mm的螺丝从底部将上下壳紧固。采用对角线顺序逐步拧紧避免外壳受力不均产生翘曲或裂缝。合盖后不要立刻装上装饰天线。先进行最终的功能测试拨动开关开机测试两个按钮、旋转编码器、倾斜感应、声音和灯光是否全部正常工作。确认一切无误后最后将两个装饰天线拧到顶部的RP-SMA转接头上。整个Faz-Wrench道具就制作完成了7. 常见问题排查与解决方案即使按照教程一步步操作也可能会遇到一些意想不到的问题。下面是我在制作和帮助他人制作过程中总结的一些常见故障及其解决方法。现象可能原因排查步骤与解决方案上电后无任何反应1. 电池电量耗尽或未充电。2. 滑动开关未打开或接线错误。3. Feather主板损坏或Bootloader丢失。1. 用USB线直接连接电脑看CIRCUITPY盘是否出现。如果能给电池充电。2. 用万用表检查开关通断确保接线是“电池 → 开关 → Feather EN”。3. 尝试进入Bootloader模式按住BOOTSEL键再插USB重新刷写CircuitPython UF2文件。LCD屏幕不亮或乱码1. I2C地址不对或接线松动。2. 背光未开启或对比度问题。3. 库文件缺失。1. 检查STEMMA QT线是否插紧。可以运行一个简单的I2C扫描程序查看是否能找到设备通常地址是0x27或0x3F。2. 在代码中确认lcd.backlight True。有些屏幕侧面有电位器可调对比度试着微调。3. 确认lib文件夹下有adafruit_character_lcd库。按钮按下无反应1. 按钮开关引脚接错接到了LED引脚。2. GPIO引脚定义错误或内部上拉未启用。3. 接线虚焊或杜邦线接触不良。1. 用万用表确认按下按钮时连接GPIO和GND的两根线是否导通。2. 检查代码中keypad.Keys初始化时pullTrue参数是否设置这启用了内部上拉电阻。3. 重新插拔杜邦线或检查焊点。NeoPixel不亮或颜色异常1. 电源接反或电压不足。2. 数据线Din接错引脚或顺序反了。3. 焊接时高温损坏了LED。1. 确认电源是5V且正负极正确。用万用表测量电压。2. 确认数据线接到了EXTERNAL_NEOPIXELS引脚且LED链的数据流向正确Din接信号源Dout接下一个Din。3. 尝试单独测试一颗LED排除损坏可能。没有声音或音效错乱1. 扬声器正负极接反。2. WAV文件格式不支持。3. 音频文件路径或名称错误。1. 交换扬声器两根线的位置试试。2. 确保WAV文件是单声道、22050Hz、16位PCM。用音频软件转换。3. 检查faz_sounds文件夹是否在根目录且代码中读取的文件名与实际一致。可以在REPL中打印wavs列表查看。旋转编码器调节音量不灵敏或反向编码器A/B相序接反对于I2C编码器模块此问题较少。对于I2C编码器方向通常在代码中处理。可以尝试修改代码中pos0 -enc0.position的负号或者交换旋转方向判断逻辑pos0 last_pos0的条件。加速度计感应不准确1. 模块安装方向与代码预期不符。2. 需要校准。1. 在REPL中打印lis3dh.acceleration的值分别保持道具水平、竖直、倒置观察X, Y, Z值的变化规律据此调整代码中的判断条件例如if z 0.5:。2. 虽然LIS3DH通常出厂已校准但可以在水平静止时读取数值作为偏移量在代码中减去这个偏移。合盖后某个功能失效内部线缆被压住导致短路或断路。重新打开外壳检查在合盖过程中可能被挤压的线缆特别是穿过狭窄区域的线。重新整理并固定。完成整个Faz-Wrench的制作其意义远超于拥有一个酷炫的游戏道具。它是一次从3D建模、打印后处理、电路设计、嵌入式编程到机械组装的完整项目实践。每一个环节遇到的问题和解决的思路都是宝贵的经验。当你亲手拧上最后一颗螺丝拨动开关看到屏幕亮起、听到熟悉的音效时那种由自己双手创造出来的交互式体验所带来的满足感是无可替代的。这个项目就像一个完美的模板你完全可以在此基础上修改代码、更换外壳模型、增加新的传感器来创造属于你自己的独一无二的交互设备。

相关新闻