pildio

  • 2024-10-13
  • 回复了主题帖: 【Follow me第二季第1期】任务汇总!

    对本次活动的心得体会与建议: 参加这次电子开发板试玩活动,我收获颇丰。 我的技术水平通过这次学习得到提升,我通过实际操作,我对这款开发板的特性和使用方法有了全面的了解,提升了我的硬件编程和调试技能。 对我的创新思维也有启发作用。看到其他同学的创意项目,激发了我的创新思维,启发我在未来的项目中尝试更多新的想法。 团队合作:通过与小组成员的合作,我学会了如何在团队中有效沟通和协作,这对于任何项目都是非常重要的。 社区交流:活动中认识了很多志同道合的朋友,建立了宝贵的联系。这些交流不仅有助于技术上的成长,也为未来可能的合作打下了基础。 总之,这次活动不仅让我学到了新的知识和技术,更重要的是激发了我对电子开发的热情。我相信这些经验和心得将对我的未来发展大有裨益。 我希望后面可以推出更多相关的活动,更高难度的工作,并且可以有相关更详尽的课程学习。

  • 2024-09-01
  • 发表了主题帖: 【Follow me第二季第1期】任务汇总!

    本帖最后由 pildio 于 2024-10-18 13:53 编辑 【Follow me第二季第1期】+开发环境的搭建 https://bbs.eeworld.com.cn/thread-1289010-1-1.html   大家好,我是pildio,今天向大家分享一下我参与Follow me第一期的任务汇总 项目简介:搭配必购板子Adafruit Circuit Playground Express完成下方任务。   首先是全部的物料清单   开发环境的搭建 本文提供基于Arduino IDE的开发环境搭建 如果CircuitPython请看我下一篇文章 1、设置 Arduino IDE 参考文献:https://learn.adafruit.com/adafruit-circuit-playground-express/set-up-arduino-ide 安装 SAMD 支持   通过导航到 Tools->Board 菜单打开 Boards Manager     进入搜索界面后输入Arduino SAMD   确保Arduino SAMD 版本为1.6.16 或更高     退出并重新打开 Arduino IDE,以确保所有板都已正确安装。现在应该能够选择并上传到 Tools->Board 菜单中列出的新板。       安装驱动程序 参考文献:https://learn.adafruit.com/adafruit-circuit-playground-express/adafruit2-windows-driver-installation 下载正确的驱动程序 下载地址如下:也可以看我本文附件内容 https://github.com/adafruit/Adafruit_Windows_Drivers/releases/latest   如果您是windows10和 Windows 11 只需要则根本不需要运行安装程序   插入硬件让电脑读取 插入 Circuit Playground Express 并等待它作系统识别(只需几秒钟)。它将创建一个串行/COM 端口,您现在可以从下拉列表中选择它,它甚至会被“指示”为 Circuit Playground Express 板  正确选择串口号即可连接成功       成功上传 将示例程序上传并下载会得到一堆红色文本,告诉你设备已被找到,并且已经编程、验证和重置 【Follow me第二季第1期】 开发环境的搭建-基于CircuitPython  https://bbs.eeworld.com.cn/thread-1289017-1-1.html   二、开发环境的搭建(基于CircuitPython) 安装或更新CircuitPython 单击上面的链接并下载最新的 UF2 文件这里选择中文拼音 Circuit Playground Express Download (circuitpython.org)     或者您可以在本文的末尾找到该文件 但是请注意版本如果需要更新版本 请随时去上述地址下载 使用一根具有数据传输功能的 USB 电缆将 Circuit Playground Express 插入电脑后 双击Circuit Playground Express中间的小重置按钮,您将看到所有 LED 都变为绿色。如果它们全部变为红色,请检查 USB 电缆,尝试另一个 USB 端口等。如果双击不起作用,请尝试单击一次! 您将看到一个名为 CPLAYBOOT的新磁盘驱动器出现 拖动刚才下载的文件到它上面     4、CPLAYBOOT驱动器将消失,并出现一个名为CIRCUITPY的新磁盘驱动器     5、安装vscode 我选用的开发工具为vscode+Circuitpython插件实现对开发板进行编程 在vscode界面点击 扩展 安装如下插件     然后将开发板连接到电脑上用vscode打开开发板u盘文件夹即可   在code.py文件即是本次开发板您需要编写的代码   这里提供一个测试代码 复制   import boardimport digitalioimport timeled = digitalio.DigitalInOut(board.LED   led.direction = digitalio.Direction.OUTPU   while True   led.value = Trutime.sleep(0.1led.value = Falstime.sleep(0.5) 若您成功安装LED 将会亮起和熄灭 【Follow me第二季第1期】 开发过程用到的库与支持包 https://bbs.eeworld.com.cn/thread-1290533-1-1.html   三、如何确定CircuitPython需要的库文件 1、我们在使用CircuitPython时需要用到库文件 这些库文件在这里下载https://circuitpython.org/libraries或者您可以从我的附件中获取  adafruit-circuitpython-bundle-9.x-mpy-20240728.zip (14.85 MB, 下载次数: 0)  adafruit-circuitpython-bundle-8.x-mpy-20240728.zip (14.84 MB, 下载次数: 0)   2、现在打开 lib 文件夹。当您打开该文件夹时,您会看到大量的 .MPY 文件和文件夹。     3、如何导入我需要的库 首先打开 CIRCUITPY 驱动器上的 lib 文件夹。然后,打开从下载的 zip 中提取的 lib 文件夹。在里面,你会发现许多文件夹和.mpy文件。找到您要使用的库,并将其复制到 CIRCUITPY 上的 lib 文件夹中。 如果库是一个包含多个 .mpy 文件的目录,请确保将整个文件夹复制到 CIRCUITPY/lib。 4、我们需要安装那些库  一般来说我们需要导入代码中import 后面的名称 例如import library_or_module 即 我们需要library_or_module这个库 5、如何创建自己的 .mpy 文件 mpy-cross 请参考一下连接 https://adafruit-circuit-python.s3.amazonaws.com/index.html?prefix=bin/mpy-cross/ 若要创建 .mpy 文件,请运行以在与原始文件相同的目录中创建 yourfile.mpy。./mpy-cross path/to/yourfile.py 四、如何卸载CircuitPython 也许您尝试了 CircuitPython 并想回到 MakeCode 或 Arduino 备份您的代码在替换 CircuitPython 之前,不要忘记备份 CIRCUITPY 驱动器上的代码。这意味着您的 code.py 任何其他文件、lib 文件夹等   迁移到Arduino 如果你想改用Arduino,你只需使用Arduino IDE来加载Arduino程序。首先插入您的电路板,然后双击重置,直到您获得绿色的板载 LED。在Arduino IDE中,选择匹配的板,例如Circuit Playground Express。确保 LED 仍为绿色,然后单击 Upload 以上传 Blink。成功上传后,串行端口将更改,因此请重新选择新端口! 上传 Blink 后,您应该不再需要双击以进入引导加载程序模式。当您上传时,Arduino将自动重置。 五、CircuitPython中本次历程我们用到的库 以上为在本次活动中我锁使用到的全部库文件这些库文件将会依这种形式进行调用 from adafruit_circuitplayground import cp     adafruit_ble adafruit_bluefruit_connect adafruit_bus_device adafruit_circuitplayground adafruit_gizmo adafruit_hid adafruit_lis3dh.mpy adafruit_thermistor.mpy neopixel.mpy   你可以在我所提供的压缩包中找到这些文件 如果想依源码格式请使用                                    默认格式请使用                        这里我在提供一份我使用到的lib整合包  见附件 六、上诉库文件用途 adafruit_ble   蓝牙模块 adafruit_bluefruit_connect  蓝牙连接手机模块 adafruit_bus_device  外部总线访问模块管理i2c与spi总线 adafruit_circuitplayground  本次板子的专属包 adafruit_gizmo   本次板子的tft显示模块 adafruit_hid   驱动程序模拟 USB HID 设备 adafruit_lis3dh.mpy  加速度传感器lis3dh的库文件 adafruit_thermistor.mpy  ntc热敏温度电阻的库文件 neopixel.mpy  条带灯的库文件 USB接口处的一个红色LED标为D13  代码如下 import array import math import audiobusio import board import neopixel import pwmio import time from adafruit_circuitplayground import cp while 1: cp.red_led = 1 任务完成 我们还可以尝试下控制灯的闪烁可以用到 time.sleep(1)这个方法来实现 这里辅一张完成图片 【Follow me第二季第1期】基础任务一(必做):控制板载炫彩LED,跑马灯点亮和颜色... [复制链接]   板载的炫彩LED是WS2812的rgb灯珠在其中我们可以通过调用neopixel库 来实现这个目标可以参考这个官方网站Adafruit CircuitPython NeoPixel — Adafruit CircuitPython NeoPixel Library 1.0 documentation   我们首先需要对灯珠进行初始化   初始化函数定义如下   classneopixel.NeoPixel(pin: Pin, n: int, *, bpp: int = 3, brightness: float = 1.0, auto_write: bool = True, pixel_order: str = None)[source]¶ A sequence of neopixels.   Parameters: pin (Pin) – The pin to output neopixel data on. n (int) – The number of neopixels in the chain bpp (int) – Bytes per pixel. 3 for RGB and 4 for RGBW pixels. brightness (float) – Brightness of the pixels between 0.0 and 1.0 where 1.0 is full brightness auto_write (bool) – True if the neopixels should immediately change when set. If False, show must be called explicitly. pixel_order (str) – Set the pixel color channel order. GRBW is set by default. 但经过查阅资料了解到python已经封装好了无需自己写驱动直接调用即可这里附上详细代码 import time # 导入时间模块 from adafruit_circuitplayground import cp # 定义颜色映射字典,将颜色名称映射到RGB元组 color_mapping = { "black": (0, 0, 0), # 黑色 "white": (255, 255, 255), # 白色 "green": (0, 255, 0), # 绿色 "red": (255, 0, 0), # 红色 "blue": (0, 0, 255), # 蓝色 "cyan": (0, 255, 255), # 青色 "magenta": (228, 0, 127), # 品红色 "yellow": (255, 150, 0), # 黄色 } a = 0 cp.detect_taps = 1 cp.pixels.brightness = 0.05 # 设置像素的亮度为0.05 pixel_count = 10 # 定义像素数量为10 def scale_range(value): return round(value / 320 * 9) # 定义一个颜色轮函数,根据输入位置返回对应颜色的RGB值 def color_wheel(position): # 如果位置不在0到255范围内,返回黑色 if (position < 0) or (position > 255): return color_mapping["black"] # 根据位置计算颜色值并返回RGB元组 if position < 85: return (int(255 - position * 3), int(position * 3), 0) # 红-绿渐变 elif position < 170: position -= 85 return (0, int(255 - (position * 3)), int(position * 3)) # 绿-青渐变 else: position -= 170 return (int(position * 3), 0, int(255 - position * 3)) # 青-蓝渐变 current_pixel = 0 # 初始化当前像素为0 # 无限循环,用于不断更新LED灯 while True: #检查敲击状态 if cp.tapped: cp.red_led = 1 print("Tapped!") a=a+0.01 # 检查开关状态 if cp.switch: current_pixel += 1 # 开关开启,当前像素增加1 if current_pixel > pixel_count - 1: # 如果当前像素超出范围,重置为0 current_pixel = 0 else: current_pixel -= 1 # 开关关闭,当前像素减少1 if current_pixel < 0: # 如果当前像素小于0,重置为最大值 current_pixel = pixel_count - 1 if cp.button_b: print("lingh+!") cp.pixels.brightness = cp.pixels.brightness +0.01 if cp.button_a: cp.pixels.brightness = cp.pixels.brightness -0.01 print("lingh-!") time.sleep(a) cp.red_led = 0 print(cp.light) for index in range(pixel_count): # 遍历每个像素 # 计算当前像素的虹彩颜色 rainbow_color = color_wheel(255 // pixel_count * ((current_pixel + index) % pixel_count)) # 设置当前像素的颜色,使用tuple生成RGB值 cp.pixels[index] = tuple( int(c * ((pixel_count - (current_pixel + index) % pixel_count)) / pixel_count) for c in rainbow_color ) 如视频中展示按下a按键增加亮度 按下b按键减小亮度中间拨码开关可以控制RGB轮换方向,敲击板子使能加速度传感器会让旋转速度变慢   Follow me第二季第1期基础任务二(必做)监测环境温度和光线,通过板载LED展示舒... [复制链接]     需要获取的数据有两个环境温度和光线,MMBT2222  ALSPT1931这里我定义的是光照越强亮起的灯就越多 因为在当地环境温度变化难度高于环境光线变化 本质上都是一个东西 环境温度我将会通过串口进行打印 light输出是l0-320 代码如下 from adafruit_circuitplayground import cp import time # 定义颜色映射字典,将颜色名称映射到RGB元组 color_mapping = { "black": (0, 0, 0), # 黑色 "white": (255, 255, 255), # 白色 "green": (0, 255, 0), # 绿色 "red": (255, 0, 0), # 红色 "blue": (0, 0, 255), # 蓝色 "cyan": (0, 255, 255), # 青色 "magenta": (228, 0, 127), # 品红色 "yellow": (255, 150, 0), # 黄色 } # 基础任务二(必做):监测环境温度和光线,通过板载LED展示舒适程度 pixel_count = 10 # 定义像素数量为10 current_pixel = 0 # 初始化当前像素为0 cp.pixels.brightness = 0.05 # 灯珠亮度为0.05 while True: temperature_value = cp.temperature light_value = cp.light print( "Temperature: %0.1f *C; Light Level: %d;"% (temperature_value, light_value)) case_val=light_value/10 for i in range(5): if i <= light_value: cp.pixels[i] = (0, 128, 128) else: cp.pixels[i] = (0, 0, 0) for i in range(9,4,-1): #循环变量从9递减到5 if i >= 10 - temperature_value: cp.pixels[i] = (0, 128, 128) else: cp.pixels[i] = (0, 0, 0) cp.pixels.show() #pixels显示使能 效果图如下             Follow me第二季第1期二基础任务三(必做):接近检测 [复制链接]   这里我们使用到了板载的两颗红外LED 一个发射一个接受去判断设定阈值需要注意的是红外发光管应采用闪烁方式发光,避免过热烧毁 代码如下     展示 由于图片无法展示靠近过程请参考展示视频 【Follow me第二季第1期】制作不倒翁——展示不倒翁运动过程中的不同灯光效果 [复制链接]   这个任务中我们需要利用加速度传感器读取到xyz三方面的加速度 然后给出对应的灯光效果。我实现的是根据板子的倾斜方向亮起对应的灯 我还没太学习过加速度传感器的应用 这里参考了大佬的代码 如下   import math from adafruit_circuitplayground import cp # 如果需要改变颜色,请在这个字典中修改颜色值 colors = { "black": (0, 0, 0) } # 定义一个颜色轮函数 def color_wheel(position): if position < 0 or position > 255: return (0, 0, 0) if position < 85: return (int(position * 3), int(255 - position * 3), 0) if position < 170: position -= 85 return (int(255 - position * 3), 0, int(position * 3)) position -= 170 return (0, int(position * 3), int(255 - position * 3)) while True: accel_x, accel_y, accel_z = cp.acceleration inclination = (2 - (math.atan2(accel_x, accel_y) / math.pi + 1)) * 180 force = math.sqrt((accel_x * accel_x) + (accel_y * accel_y)) print( "Accelerometer: (%0.1f, %0.1f, %0.1f) m/s^2; Angle: %0.1f, Magnitude: %0.1f" % (accel_x, accel_y, accel_z, inclination, force) ) if force > 2: force = min(force, 9.8) for pos in range(10): if pos == (inclination * 10 // 360): cp.pixels[pos] = tuple( int(comp * ((10 - pos % 10)) / 10.0) for comp in color_wheel(25 * (pos % 10)) ) else: cp.pixels[pos] = colors["black"]   【Follow me第二季第1期】-水果钢琴——通过触摸水果弹奏音乐,并配合灯光效果 [复制链接]   水果钢琴 代码如下 while 1: if cp.touch_A1: cp.pixels.fill((256, 0, 0)) cp.start_tone(262) elif cp.touch_A2: cp.pixels.fill((256, 128, 0)) cp.start_tone(294) elif cp.touch_A3: cp.pixels.fill((256, 256, 128)) cp.start_tone(330) elif cp.touch_A4: cp.pixels.fill((128, 256, 256)) cp.start_tone(349) elif cp.touch_A5: cp.pixels.fill((0, 128, 256)) cp.start_tone(392) elif cp.touch_A6: cp.pixels.fill((0, 0, 256)) cp.start_tone(440) elif cp.touch_A7: cp.pixels.fill((256, 256, 256)) cp.start_tone(494) elif cp.touch_A8: cp.pixels.fill((0, 0, 0)) cp.start_tone(523) else: cp.pixels.fill((0, 0, 0)) cp.stop_tone() 只需要通过判断引脚电平的变化 调用touch_A1—touch_A8引脚,即可判断出哪里的电极被触发对应调用pixels与start_tone方法即可响起声音跟灯光 项目视频演示 本项目完成了本期活动的全部内容,所有任务的展示如下:分成两个视频一个专享项目展示 [localvideo]401d232ebb5284c2bc7a6e51d6d72fcf[/localvideo][localvideo]d7007edf47b79bc678f8020b3117c15a[/localvideo]     我的技术水平通过这次学习得到提升,我通过实际操作,我对这款开发板的特性和使用方法有了全面的了解,提升了我的硬件编程和调试技能。 对我的创新思维也有启发作用。看到其他同学的创意项目,激发了我的创新思维,启发我在未来的项目中尝试更多新的想法。 团队合作:通过与小组成员的合作,我学会了如何在团队中有效沟通和协作,这对于任何项目都是非常重要的。 社区交流:活动中认识了很多志同道合的朋友,建立了宝贵的联系。这些交流不仅有助于技术上的成长,也为未来可能的合作打下了基础。 总之,这次活动不仅让我学到了新的知识和技术,更重要的是激发了我对电子开发的热情。我相信这些经验和心得将对我的未来发展大有裨益。 我希望后面可以推出更多相关的活动,更高难度的工作,并且可以有相关更详尽的课程学习。 这里附上全部代码给大家参考

  • 2024-08-26
  • 发表了主题帖: 【Follow me第二季第1期】-水果钢琴——通过触摸水果弹奏音乐,并配合灯光效果

    水果钢琴 代码如下 while 1: if cp.touch_A1: cp.pixels.fill((256, 0, 0)) cp.start_tone(262) elif cp.touch_A2: cp.pixels.fill((256, 128, 0)) cp.start_tone(294) elif cp.touch_A3: cp.pixels.fill((256, 256, 128)) cp.start_tone(330) elif cp.touch_A4: cp.pixels.fill((128, 256, 256)) cp.start_tone(349) elif cp.touch_A5: cp.pixels.fill((0, 128, 256)) cp.start_tone(392) elif cp.touch_A6: cp.pixels.fill((0, 0, 256)) cp.start_tone(440) elif cp.touch_A7: cp.pixels.fill((256, 256, 256)) cp.start_tone(494) elif cp.touch_A8: cp.pixels.fill((0, 0, 0)) cp.start_tone(523) else: cp.pixels.fill((0, 0, 0)) cp.stop_tone() 只需要通过判断引脚电平的变化 调用touch_A1—touch_A8引脚,即可判断出哪里的电极被触发对应调用pixels与start_tone方法即可响起声音跟灯光

  • 2024-08-21
  • 发表了主题帖: 【Follow me第二季第1期】制作不倒翁——展示不倒翁运动过程中的不同灯光效果

    这个任务中我们需要利用加速度传感器读取到xyz三方面的加速度 然后给出对应的灯光效果。我实现的是根据板子的倾斜方向亮起对应的灯 我还没太学习过加速度传感器的应用 这里参考了大佬的代码 如下 import math from adafruit_circuitplayground import cp # 如果需要改变颜色,请在这个字典中修改颜色值 colors = { "black": (0, 0, 0) } # 定义一个颜色轮函数 def color_wheel(position): if position < 0 or position > 255: return (0, 0, 0) if position < 85: return (int(position * 3), int(255 - position * 3), 0) if position < 170: position -= 85 return (int(255 - position * 3), 0, int(position * 3)) position -= 170 return (0, int(position * 3), int(255 - position * 3)) while True: accel_x, accel_y, accel_z = cp.acceleration inclination = (2 - (math.atan2(accel_x, accel_y) / math.pi + 1)) * 180 force = math.sqrt((accel_x * accel_x) + (accel_y * accel_y)) print( "Accelerometer: (%0.1f, %0.1f, %0.1f) m/s^2; Angle: %0.1f, Magnitude: %0.1f" % (accel_x, accel_y, accel_z, inclination, force) ) if force > 2: force = min(force, 9.8) for pos in range(10): if pos == (inclination * 10 // 360): cp.pixels[pos] = tuple( int(comp * ((10 - pos % 10)) / 10.0) for comp in color_wheel(25 * (pos % 10)) ) else: cp.pixels[pos] = colors["black"] 效果 如下图所示  

  • 发表了主题帖: Follow me第二季第1期二基础任务三(必做):接近检测

    这里我们使用到了板载的两颗红外LED 一个发射一个接受去判断设定阈值需要注意的是红外发光管应采用闪烁方式发光,避免过热烧毁 代码如下   展示 由于图片无法展示靠近过程请参考展示视频

  • 2024-08-16
  • 回复了主题帖: 【Follow me第二季第1期】基础任务一(必做):控制板载炫彩LED,跑马灯点亮和颜色...

    Jacktang 发表于 2024-8-15 07:25 如视频中展示按下a按键增加亮度 按下b按键减小亮度中间拨码开关可以控制RGB轮换方向 链接中没看到视频 [localvideo]623af781458d9c134543fb8687e96bb8[/localvideo]  

  • 2024-08-14
  • 发表了主题帖: Follow me第二季第1期基础任务二(必做)监测环境温度和光线,通过板载LED展示舒...

      需要获取的数据有两个环境温度和光线,MMBT2222  ALSPT1931这里我定义的是光照越强亮起的灯就越多 因为在当地环境温度变化难度高于环境光线变化 本质上都是一个东西 环境温度我将会通过串口进行打印 light输出是l0-320 代码如下 from adafruit_circuitplayground import cp import time # 定义颜色映射字典,将颜色名称映射到RGB元组 color_mapping = {     "black": (0, 0, 0),          # 黑色     "white": (255, 255, 255),    # 白色     "green": (0, 255, 0),        # 绿色     "red": (255, 0, 0),          # 红色     "blue": (0, 0, 255),         # 蓝色     "cyan": (0, 255, 255),       # 青色     "magenta": (228, 0, 127),    # 品红色     "yellow": (255, 150, 0),     # 黄色 } # 基础任务二(必做):监测环境温度和光线,通过板载LED展示舒适程度 pixel_count = 10  # 定义像素数量为10 current_pixel = 0  # 初始化当前像素为0 cp.pixels.brightness = 0.05 # 灯珠亮度为0.05          while True:     temperature_value = cp.temperature     light_value = cp.light     print( "Temperature: %0.1f *C; Light Level: %d;"% (temperature_value, light_value))     case_val=light_value/10         for i in range(5):         if i <= light_value:             cp.pixels[i] = (0, 128, 128)         else:             cp.pixels[i] = (0, 0, 0)         for i in range(9,4,-1): #循环变量从9递减到5         if i >= 10 - temperature_value:             cp.pixels[i] = (0, 128, 128)         else:             cp.pixels[i] = (0, 0, 0)             cp.pixels.show()    #pixels显示使能     效果图如下          

  • 发表了主题帖: 【Follow me第二季第1期】基础任务一(必做):控制板载炫彩LED,跑马灯点亮和颜色...

    板载的炫彩LED是WS2812的rgb灯珠在其中我们可以通过调用neopixel库 来实现这个目标可以参考这个官方网站Adafruit CircuitPython NeoPixel — Adafruit CircuitPython NeoPixel Library 1.0 documentation   我们首先需要对灯珠进行初始化   初始化函数定义如下   classneopixel.NeoPixel(pin: Pin, n: int, *, bpp: int = 3, brightness: float = 1.0, auto_write: bool = True, pixel_order: str = None)[source]¶ A sequence of neopixels.   Parameters: pin (Pin) – The pin to output neopixel data on. n (int) – The number of neopixels in the chain bpp (int) – Bytes per pixel. 3 for RGB and 4 for RGBW pixels. brightness (float) – Brightness of the pixels between 0.0 and 1.0 where 1.0 is full brightness auto_write (bool) – True if the neopixels should immediately change when set. If False, show must be called explicitly. pixel_order (str) – Set the pixel color channel order. GRBW is set by default. 但经过查阅资料了解到python已经封装好了无需自己写驱动直接调用即可这里附上详细代码 import time  # 导入时间模块 from adafruit_circuitplayground import cp # 定义颜色映射字典,将颜色名称映射到RGB元组 color_mapping = {     "black": (0, 0, 0),          # 黑色     "white": (255, 255, 255),    # 白色     "green": (0, 255, 0),        # 绿色     "red": (255, 0, 0),          # 红色     "blue": (0, 0, 255),         # 蓝色     "cyan": (0, 255, 255),       # 青色     "magenta": (228, 0, 127),    # 品红色     "yellow": (255, 150, 0),     # 黄色 } a = 0 cp.detect_taps = 1 cp.pixels.brightness = 0.05   # 设置像素的亮度为0.05 pixel_count = 10  # 定义像素数量为10 def scale_range(value):     return round(value / 320 * 9) # 定义一个颜色轮函数,根据输入位置返回对应颜色的RGB值 def color_wheel(position):     # 如果位置不在0到255范围内,返回黑色     if (position < 0) or (position > 255):         return color_mapping["black"]         # 根据位置计算颜色值并返回RGB元组     if position < 85:         return (int(255 - position * 3), int(position * 3), 0)  # 红-绿渐变     elif position < 170:         position -= 85         return (0, int(255 - (position * 3)), int(position * 3))  # 绿-青渐变     else:         position -= 170     return (int(position * 3), 0, int(255 - position * 3))  # 青-蓝渐变 current_pixel = 0  # 初始化当前像素为0 # 无限循环,用于不断更新LED灯 while True:     #检查敲击状态     if cp.tapped:         cp.red_led = 1         print("Tapped!")         a=a+0.01      # 检查开关状态     if cp.switch:         current_pixel += 1  # 开关开启,当前像素增加1         if current_pixel > pixel_count - 1:  # 如果当前像素超出范围,重置为0             current_pixel = 0     else:         current_pixel -= 1  # 开关关闭,当前像素减少1         if current_pixel < 0:  # 如果当前像素小于0,重置为最大值             current_pixel = pixel_count - 1         if cp.button_b:         print("lingh+!")         cp.pixels.brightness = cp.pixels.brightness +0.01     if cp.button_a:         cp.pixels.brightness = cp.pixels.brightness -0.01         print("lingh-!")         time.sleep(a)     cp.red_led = 0     print(cp.light)     for index in range(pixel_count):  # 遍历每个像素         # 计算当前像素的虹彩颜色         rainbow_color = color_wheel(255 // pixel_count * ((current_pixel + index) % pixel_count))                  # 设置当前像素的颜色,使用tuple生成RGB值         cp.pixels[index] = tuple(             int(c * ((pixel_count - (current_pixel + index) % pixel_count)) / pixel_count) for c in rainbow_color         )          如视频中展示按下a按键增加亮度 按下b按键减小亮度中间拨码开关可以控制RGB轮换方向,敲击板子使能加速度传感器会让旋转速度变慢

  • 发表了主题帖: 【Follow me第二季第1期】 入门任务(必做):开发环境搭建,板载LED点亮

    USB接口处的一个红色LED标为D13  代码如下 import array import math import audiobusio import board import neopixel import pwmio import time from adafruit_circuitplayground import cp while 1:         cp.red_led = 1 任务完成 我们还可以尝试下控制灯的闪烁可以用到 time.sleep(1)这个方法来实现 这里辅一张完成图片  

  • 发表了主题帖: 【Follow me第二季第1期】 开发过程用到的库与支持包

    三、如何确定CircuitPython需要的库文件 1、我们在使用CircuitPython时需要用到库文件 这些库文件在这里下载https://circuitpython.org/libraries或者您可以从我的附件中获取 2、现在打开 lib 文件夹。当您打开该文件夹时,您会看到大量的 .MPY 文件和文件夹。   3、如何导入我需要的库 首先打开 CIRCUITPY 驱动器上的 lib 文件夹。然后,打开从下载的 zip 中提取的 lib 文件夹。在里面,你会发现许多文件夹和.mpy文件。找到您要使用的库,并将其复制到 CIRCUITPY 上的 lib 文件夹中。 如果库是一个包含多个 .mpy 文件的目录,请确保将整个文件夹复制到 CIRCUITPY/lib。 4、我们需要安装那些库  一般来说我们需要导入代码中import 后面的名称 例如import library_or_module 即 我们需要library_or_module这个库 5、如何创建自己的 .mpy 文件 mpy-cross 请参考一下连接 https://adafruit-circuit-python.s3.amazonaws.com/index.html?prefix=bin/mpy-cross/ 若要创建 .mpy 文件,请运行以在与原始文件相同的目录中创建 yourfile.mpy。./mpy-cross path/to/yourfile.py 四、如何卸载CircuitPython 也许您尝试了 CircuitPython 并想回到 MakeCode 或 Arduino 备份您的代码在替换 CircuitPython 之前,不要忘记备份 CIRCUITPY 驱动器上的代码。这意味着您的 code.py 任何其他文件、lib 文件夹等   迁移到Arduino 如果你想改用Arduino,你只需使用Arduino IDE来加载Arduino程序。首先插入您的电路板,然后双击重置,直到您获得绿色的板载 LED。在Arduino IDE中,选择匹配的板,例如Circuit Playground Express。确保 LED 仍为绿色,然后单击 Upload 以上传 Blink。成功上传后,串行端口将更改,因此请重新选择新端口! 上传 Blink 后,您应该不再需要双击以进入引导加载程序模式。当您上传时,Arduino将自动重置。 五、CircuitPython中本次历程我们用到的库 以上为在本次活动中我锁使用到的全部库文件这些库文件将会依这种形式进行调用 from adafruit_circuitplayground import cp   adafruit_ble adafruit_bluefruit_connect adafruit_bus_device adafruit_circuitplayground adafruit_gizmo adafruit_hid adafruit_lis3dh.mpy adafruit_thermistor.mpy neopixel.mpy   你可以在我所提供的压缩包中找到这些文件 如果想依源码格式请使用                                    默认格式请使用                     这里我在提供一份我使用到的lib整合包  见附件 六、上诉库文件用途 adafruit_ble   蓝牙模块 adafruit_bluefruit_connect  蓝牙连接手机模块 adafruit_bus_device  外部总线访问模块管理i2c与spi总线 adafruit_circuitplayground  本次板子的专属包 adafruit_gizmo   本次板子的tft显示模块 adafruit_hid   驱动程序模拟 USB HID 设备 adafruit_lis3dh.mpy  加速度传感器lis3dh的库文件 adafruit_thermistor.mpy  ntc热敏温度电阻的库文件 neopixel.mpy  条带灯的库文件  

  • 2024-08-08
  • 加入了学习《【Follow me第二季第1期】使用circuitpython开发并完成全部任务》,观看 【Follow me第二季第1期】使用circuitpython开发并完成全部任务

  • 加入了学习《【Follow me第二季第1期】视频展示》,观看 得捷电子Follow me第二季第期视频展示

  • 2024-07-29
  • 发表了主题帖: 【Follow me第二季第1期】 开发环境的搭建-基于CircuitPython

    二、开发环境的搭建(基于CircuitPython) 安装或更新CircuitPython 单击上面的链接并下载最新的 UF2 文件这里选择中文拼音 Circuit Playground Express Download (circuitpython.org)   或者您可以在本文的末尾找到该文件 但是请注意版本如果需要更新版本 请随时去上述地址下载 使用一根具有数据传输功能的 USB 电缆将 Circuit Playground Express 插入电脑后 双击Circuit Playground Express中间的小重置按钮,您将看到所有 LED 都变为绿色。如果它们全部变为红色,请检查 USB 电缆,尝试另一个 USB 端口等。如果双击不起作用,请尝试单击一次! 您将看到一个名为 CPLAYBOOT的新磁盘驱动器出现 拖动刚才下载的文件到它上面   4、CPLAYBOOT驱动器将消失,并出现一个名为CIRCUITPY的新磁盘驱动器   5、安装vscode 我选用的开发工具为vscode+Circuitpython插件实现对开发板进行编程 在vscode界面点击 扩展 安装如下插件   然后将开发板连接到电脑上用vscode打开开发板u盘文件夹即可   在code.py文件即是本次开发板您需要编写的代码   这里提供一个测试代码 import board import digitalio import time led = digitalio.DigitalInOut(board.LED) led.direction = digitalio.Direction.OUTPUT while True: led.value = True time.sleep(0.1) led.value = False time.sleep(0.5) 若您成功安装LED 将会亮起和熄灭

  • 发表了主题帖: 【Follow me第二季第1期】+开发环境的搭建

    开发环境的搭建 本文提供基于Arduino IDE的开发环境搭建 如果CircuitPython请看我下一篇文章 1、设置 Arduino IDE 参考文献:https://learn.adafruit.com/adafruit-circuit-playground-express/set-up-arduino-ide 安装 SAMD 支持   通过导航到 Tools->Board 菜单打开 Boards Manager   进入搜索界面后输入Arduino SAMD   确保Arduino SAMD 版本为1.6.16 或更高   退出并重新打开 Arduino IDE,以确保所有板都已正确安装。现在应该能够选择并上传到 Tools->Board 菜单中列出的新板。     安装驱动程序 参考文献:https://learn.adafruit.com/adafruit-circuit-playground-express/adafruit2-windows-driver-installation 下载正确的驱动程序 下载地址如下:也可以看我本文附件内容 https://github.com/adafruit/Adafruit_Windows_Drivers/releases/latest   如果您是windows10和 Windows 11 只需要则根本不需要运行安装程序   插入硬件让电脑读取 插入 Circuit Playground Express 并等待它作系统识别(只需几秒钟)。它将创建一个串行/COM 端口,您现在可以从下拉列表中选择它,它甚至会被“指示”为 Circuit Playground Express 板  正确选择串口号即可连接成功     成功上传 将示例程序上传并下载会得到一堆红色文本,告诉你设备已被找到,并且已经编程、验证和重置    

  • 2024-01-19
  • 发表了主题帖: 【得捷电子Follow Me第二期】【补充】NAU7802 ADC模块与六轴传感器LIS30H模块的使用

    【得捷电子Follow Me第二期】补充NAU7802 ADC模块与六轴传感器LIS30H模块的使用 任务一 NAU7802 ADC  本次任务使用nau7802ADC来获取电压测量值 nau7802模块是一款精密低功耗 24 位模数转换器 (ADC),具有板载低噪声可编程增益放大器 (PGA)、板载 RC 或晶体振荡器,以及精密 24 位 Σ-Δ (Σ-Δ) 模数转换器 (ADC)。该设备能够高达 23 位 ENOB(有效位数)性能。该设备提供了一个完整的前端电桥/传感器测量的解决方案,例如体重秤、应变仪和许多其他高分辨率,低采样率应用。许多内置功能使高性能应用程序的外部部件数量非常少。此外,工作电流和待机电流都非常低,许多电源管理功能包括在内。这些可以只为芯片中需要的那些元件供电,并且此外,如果不需要完整的 23 位 ENOB 性能,则以大大降低的功率运行可编程增益放大器 (PGA) 提供 1 至 128 的可选增益。A/D 转换用 Sigma-Delta 调制器和可编程 FIR 滤波器执行,该滤波器提供同时50Hz和60Hz陷波滤波器,有效提高抗干扰能力。此外,该设备提供了一个与 I2C 协议兼容的标准 2 线接口,用于简单直接地连接到和与各种可能的主机处理器互操作。   通过连接adc与单片机io口 让io口输出高电平将将io口插入 A+端 可以明显看到adc输出数值的变化 代码如下 from adafruit_bitmap_font import bitmap_font import socketpool import adafruit_requests as req import ssl import wifi import time from adafruit_datetime import datetime, date, timezone, timedelta import json import re from adafruit_display_shapes.roundrect import RoundRect import asyncio import rtc from adafruit_esp32spi import adafruit_esp32spi import adafruit_esp32spi.adafruit_esp32spi_socket as sock import adafruit_minimqtt.adafruit_minimqtt as MQTT import neopixel from adafruit_led_animation.animation.blink import Blink import adafruit_led_animation.color as col from cedargrove_nau7802 import NAU7802 sensor_1 = NAU7802(board.I2C(), address=0x2A, active_channels=1) def calibrate_zero():     print("ch %1d calibrate.INTERNAL: %5s" % (sensor_1.channel, sensor_1.calibrate("INTERNAL")))     print("ch %1d calibrate.OFFSET:   %5s" % (sensor_1.channel, sensor_1.calibrate("OFFSET")))     print("...ch %1d zeroed" % sensor_1.channel) def read_raw_samples(samples=2):     sample_sum = 0     sample_count = samples     while sample_count > 0:         while not sensor_1.available():             pass         sample_sum += sensor_1.read()         sample_count -= 1     return int(sample_sum / samples) enabled = sensor_1.enable(True) print("Digital and analog power enabled:", enabled) print("REMOVE WEIGHTS FROM LOAD CELLS") time.sleep(3) sensor_1.channel = 1 display = board.DISPLAY grp = displayio.Group(scale=1) clr = 0xffffff fnt = bitmap_font.load_font("/font/font.pcf") dt = label.Label(fnt, text="", color=clr) dt.x = 0 dt.y = 30 grp.append(dt) display.show(grp) while True:     sensor_1.channel = 1     val = read_raw_samples()     print("ADC Value is %d" % val)     dt.text = "ADC Value is %d" % val 任务二 LIS30HLIS3DH是一个三轴加速度传感器,可用于检测X、Y、Z轴上的加速度,以及设置阈值,在加速度超出阈值时触发中断,支持SPI和IIC读写。   下面主要是IIC方式读写:   SPI方式读写类似,参考手册即可。一般情况下,可以用2根线,没必要用3线或者4线。而且IIC用GPIO模拟很方便,网上例程很多,这里就不贴了,搜一搜就有。 首先硬件连接会决定该模块的IIC地址 如果SAO脚接地,IIC地址为0X30(不包含最低位). 如果接V3.3,则IIC地址为0X32(不包含最低位).     < class="p" style="">这个器件地址很重要,因为读写寄存器都是要先写一下对应的器件地址,然后再执行命令的。   注意先发送的器件地址只是前7位,最后一位决定的是读写位,0是写寄存器,1为读寄存器,所以写寄存器时是先写入“LIS_ADDR|0x00”,读的时候则是先写入“LIS_ADDR|0x01”,(LIS_ADDR这里指上文的IIC地址)。 a、主机向从机写一个字节,下表是通过IIC向LIS3DH寄存器写一个字节的流程。简单来说就是:先写1个字节的写命令+IIC地址,再写一个字节的你要写的寄存器地址,最后写一个字节你要写入寄存器的内容。  代码如下 import time import board import busio import adafruit_lis3dh # Hardware I2C setup. Use the CircuitPlayground built-in accelerometer if available; # otherwise check I2C pins. if hasattr(board, "ACCELEROMETER_SCL"):     i2c = busio.I2C(board.ACCELEROMETER_SCL, board.ACCELEROMETER_SDA)     lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, address=0x19) else:     i2c = board.I2C()     lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c) lis3dh.range = adafruit_lis3dh.RANGE_2_G while True:     x, y, z = [value / adafruit_lis3dh.STANDARD_GRAVITY for value in lis3dh.acceleration]     print("x = %0.3f G, y = %0.3f G, z = %0.3f G" % (x, y, z))     time.sleep(0.1)  

  • 2024-01-17
  • 加入了学习《FollowMe视频任务》,观看 第二期视频任务

  • 加入了学习《FollowMe视频任务》,观看 第二期视频任务

  • 加入了学习《Digi-Key: Follow Me 系列(2) 直播回放》,观看 Adafruit ESP32-S3 TFT Feather开发板使用入门

最近访客

< 1/1 >

统计信息

已有17人来访过

  • 芯积分:114
  • 好友:--
  • 主题:17
  • 回复:4

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言