隔壁小黑

  • 2024-09-01
  • 加入了学习《【Follow me第二季第1期】任务汇总,选做水果钢琴》,观看 【Follow me第二季第1期】任务汇总,选做水果钢琴

  • 加入了学习《Follow me第二季第1期》,观看 Follow me第二季第1期

  • 上传了资料: Follow me第二季第1期任务代码

  • 上传了资料: Follow me第二季第1期任务代码

  • 发表了主题帖: 【Follow me第二季第1期】任务汇总,选做水果钢琴

    有幸入围了电子工程世界与得捷电子创办的Follow me活动的第二季的第一期的活动。 这次活动提供的开发板是Adafruit Circuit Playground Express,具有NeoPixel LED、运动传感器、温度传感器、光传感器、声音传感器、 红外发射器和接收器 、迷你扬声器体积小巧,配置丰富。   并且Adafruit 官网和 CircuitPython官网都提供了大量的历程,对于新手上手特别友好。 微软的MakeCode可视化的编程和仿真更是实现了所见即所得。美中不足的是使用的是MicroUSB接口。 Adafruit 官网  Circuit Python官网 MakeCode   物料展示   物料全家福(BNO086已经焊接成板子了)     本次活动我主要完成了以下任务: 入门任务:开发环境搭建,板载LED点亮 基础任务一(必做):控制板载炫彩LED,跑马灯点亮和颜色变换 基础任务二(必做):监测环境温度和光线,通过板载LED展示舒适程度 基础任务三(必做):接近检测——设定安全距离并通过板载LED展示,检测到入侵时,发起声音报警 进阶任务(必做):制作不倒翁——展示不倒翁运动过程中的不同灯光效果 创意任务(创意任务三):水果钢琴——通过触摸水果弹奏音乐,并配合灯光效果   首先是入门任务: 我选择的开发环境是CircuitPython,首先按照Adafruit 官网的教程安装CircuitPython。 1、去官网下载对应的固件 2、将开发板用数据线连接电脑后,双击重置按钮,会看到CPLAYBOOT盘符 3、将固件放置到CPLAYBOOT盘中,开发板将自动重启,CircuitPython安装完成 开发工具使用的是Thonny,可以去官网下载 安装完成后,打开软件,在右下角选择接口   使用(help)board可以查看所有的IO资源。   点亮板载LED,对应的是board.LED或者board.D13   所使用的板载元件: LED灯,触摸按键A1 代码: import board import digitalio import touchio led = digitalio.DigitalInOut(board.D13) led.switch_to_output() touch = touchio.TouchIn(board.A1) #为了拍摄效果关闭周围的灯 import neopixel pixels = neopixel.NeoPixel(board.NEOPIXEL, 10) pixels.fill((0,0,0))#关灯 while 1: led.value=touch.value 演示:     基础任务一(必做):控制板载炫彩LED,跑马灯点亮和颜色变换 对应的硬件资源是   这个可以查看官网给的例子 可以使用固件自带的neopixel库驱动炫彩LED 使用rainbowio 的colorwheel来便于颜色转换 流程图:   所使用的板载元件: LED灯,触摸按键A1 代码: import time import board from rainbowio import colorwheel import neopixel import touchio touch = touchio.TouchIn(board.A1) pixels = neopixel.NeoPixel(board.NEOPIXEL, 10) pixels.brightness=0.2# 亮度 pixels.fill((0,0,0))#关灯 color=[colorwheel(0)]*10#创建一个变换的数组 for i in range(10): color[i]=colorwheel(i*23) while 1: for i in range(10): pixels[i]=colorwheel(color[i]) if touch.value: color=color[1:10]+[color[0]] else: color=[color[9]]+color[0:9] time.sleep(0.1) 演示:   基础任务二(必做):监测环境温度和光线,通过板载LED展示舒适程度 这个可以查看官网给的例子 温度传感器 光线传感器 温度传感器官网例程中直接有转化公式,而光线传感器是通过A8接口直接读取模拟量的。   所以要映射一个范围 流程图:   所使用的板载元件: 温度传感器、光照传感器、LED灯 import time import board from rainbowio import colorwheel import neopixel import adafruit_thermistor#温度传感器驱动 import analogio from rainbowio import colorwheel import simpleio pixels = neopixel.NeoPixel(board.NEOPIXEL, 10) pixels.brightness=0.2# 亮度 pixels.fill((0,0,0))#关灯 #初始化温度传感器 thermistor = adafruit_thermistor.Thermistor( board.TEMPERATURE, 10000, 10000, 25, 3950) light = analogio.AnalogIn(board.LIGHT)#获取A8接口电压 peak = simpleio.map_range(light.value, 2000, 62000, 0, 9)#将模拟量的值范围(2000,62000)映射到(0.9) while True: temp_c = thermistor.temperature#获取当前温度 peak = simpleio.map_range(light.value, 2000, 62000, 0, 9)#将模拟量的值范围(2000,62000)映射到(0.9),获取当前光照强度 color=simpleio.map_range(temp_c, 15, 35, 0, 170)#将温度转化为颜色,温度23到33,转化为颜色蓝到红 for i in range(0, 9, 1): if i <= peak: pixels[i] = colorwheel(170-color) else: pixels[i] = (0, 0, 0) time.sleep(0.01) 演示:   基础任务三(必做):接近检测——设定安全距离并通过板载LED展示,检测到入侵时,发起声音报警 这个根据活动界面的提示,使用的是红外发射器和接收器 (DSOP38338),特别需要注意的是不要让红外发射一直发射,一会就会特别烫,可能会烧坏。 流程图   所使用的板载元件: 红外发射、红外接收、LED灯 代码: import board import digitalio import time import simpleio#范围替换 import analogio#模拟量 from rainbowio import colorwheel#颜色 from adafruit_circuitplayground import cp cp.pixels.fill((0, 0, 0)) IR_OUT = digitalio.DigitalInOut(board.IR_TX) IR_OUT.switch_to_output() IR_IN = analogio.AnalogIn(board.IR_PROXIMITY) while True: IR_OUT.value = 1 time.sleep(0.01) IR_OUT.value = 0#一定要开启后关闭,不然会特别热 light = IR_IN.value print(light) distance=simpleio.map_range(light, 1000, 35000, 1, 170)#光强转化为距离范围 print(distance) cp.pixels[1]=colorwheel(170-distance) if distance>160: cp.play_tone(440,0.1) time.sleep(0.1) 演示: 进阶任务(必做):制作不倒翁——展示不倒翁运动过程中的不同灯光效果 这个我使用的是一同购买的BNO086传感器作为姿态传感器,然后通过某立创免得做的PCB手工焊接的。刚开始测试的时候使用的是ESP32 S3 TFT,iic一直通讯不上,查阅官方资料发现ESP32和BNO086的iic通讯问题是硬件的。然后换串口模式成功通讯。切换为这次的开发板后,发现无法加载驱动,应该是硬件资源不够,然后又切换为adafruit_bno08x_rvc驱动才成功的跑起来。 流程图:   所使用的板载元件: LED灯 其他元器件: Bno086测试板、孩子的不倒翁 代码: import time import board import busio from rainbowio import colorwheel import simpleio#范围替换 import neopixel uart = busio.UART(board.TX, board.RX, baudrate=115200, receiver_buffer_size=2048) from adafruit_bno08x_rvc import BNO08x_RVC # pylint:disable=wrong-import-position pixels = neopixel.NeoPixel(board.NEOPIXEL, 10) pixels.brightness=0.2# 亮度 pixels.fill((0,0,0))#关灯 rvc = BNO08x_RVC(uart) print("1111111111111") time.sleep(0.1) yaw_0, pitch_0, roll_0, x_accel_0, y_accel_0, z_accel_0 = rvc.heading #roll_0前后(-,+) #pitch_0左右(-,+) #yaw_0顺时针正,逆时针负 #前4,5 #后0,9 #左2 #右5 while 1: yaw, pitch, roll, x_accel, y_accel, z_accel = rvc.heading front=int(roll-roll_0) lift=int(pitch-pitch_0) hor=int(yaw-yaw_0) color=(255-front,255-lift,255-hor) if front>=0: pixels[4] =color pixels[5] =color pixels[0] =(0,0,0) pixels[9] =(0,0,0) elif front<0: pixels[4] =(0,0,0) pixels[5] =(0,0,0) pixels[0] =color pixels[9] =color if lift>=0: pixels[2] =color pixels[7] =(0,0,0) elif lift<0: pixels[2] =(0,0,0) pixels[7] =color 演示:   创意任务(创意任务三):水果钢琴——通过触摸水果弹奏音乐,并配合灯光效果 选择的是第三个,水果钢琴,这个需要的东西最少,孩子还最感兴趣,只是喇叭的声音太小了。使用的是七个电容式触摸输入和小喇叭。每个按键对应一个音符,从网上查找对应的频率是262,294,330,349,392,440,494. 流程图   所使用的板载元件: 触摸按键 其他器件: 水果和导线 代码: from board import * import digitalio import touchio import time from adafruit_circuitplayground import cp #pixels = neopixel.NeoPixel(board.NEOPIXEL, 10) #pixels.brightness=0.2# 亮度 a=(100,100,100) cp.pixels.fill(a)# touch = [] for i in range(1,8): touch.append(eval(f"touchio.TouchIn(A{str(i)})")) for j in range(100): for i in touch: while i.value: i.threshold+=100 time.sleep(0.01) cp.pixels.fill((0,0,0)) pix=[6,8,9,0,1,3,4] sound=[262,294,330,349,392,400,494] while 1: cp.pixels.fill((0, 0, 0)) for i in range(len(touch)): if touch[i].value: cp.pixels[pix[i]]=a cp.play_tone(sound[i], 0.1) 演示:   活动的心得体会: 这次活动的每个任务我都有和我家孩子展示,可能是孩子太小了,最感兴趣的还是灯。不过小孩子能够感觉到世界的神奇就行。对于我个人来说,官方给的例程和驱动很丰富,完成任务的难度不大,主要问题在于我自选的BNO086,需要自己焊接测试版和测试,消耗了大量的时间,不断的在怀疑是焊接的问题还是测试的问题,主要还是因为前期了解的资料太少,所以自选配件还是要事前好好的了解相关资料。 项目源码   https://download.eeworld.com.cn/detail/%E9%9A%94%E5%A3%81%E5%B0%8F%E9%BB%91/634242   任务视频 【Follow me第二季第1期】任务汇总,选做水果钢琴

  • 加入了学习《【Follow me第二季第1期】全部任务演示》,观看 全部任务演示2.0

  • 2024-08-19
  • 加入了学习《得捷电子Follow me第2期》,观看 得捷电子Follow me第2期

  • 2024-06-19
  • 回复了主题帖: OV2640 摄像头的 micropython 驱动

    学习一下

最近访客

现在还没有访客

< 1/0 >

统计信息

已有--人来访过

  • 芯积分:66
  • 好友:--
  • 主题:2
  • 回复:1

留言

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


现在还没有留言