282|0

59

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【Follow me第二季第1期】任务汇总,代码下载 [复制链接]

  本帖最后由 crimsonsnow 于 2024-10-21 05:18 编辑
code1.rar (3.23 KB, 下载次数: 2)
WeChat_20241014084250
本次使用的产品是Circuit Playground Express,它是由 Adafruit Industries LLC 设计并生产的一款多功能入门级开发板。Adafruit 提供了很丰富的教育支持来帮助入门编程它们的开发板。
可以在adafruit的官方网站上搜索进入circuit playground的产品界面。Circuit Playground Express:ID 3333:Adafruit Industries,独特且有趣的DIY电子产品和套件
在描述中,可以找到一个帮助开始的链接。Overview | Adafruit Circuit Playground Express | Adafruit Learning System
这块开发板是express版本。支持运行 MakeCode、CircuitPython、Arduino 和 Code.org CS Discoveries。
我使用了thonny和MU两个针对初学者级别的python IDE开发。
express开发板使用的连接端口是micro端口,因此要准备良好的micro数据线。
这款开发板有很多的传感器外设,在任务中,体验了光线传感器,温度传感器,运动传感器。它还有一个小麦克风和一个迷你扬声器,扬声器通过引脚#11上的关机控制能够将其关闭。
它还有一个红外接收器和传输器,在“距离检测”任务中,很多人尝试使用红外来进行处理,但是效果不太好。
跟随开始教程,官方提供了固件,直接通过USB下载,就可以进行烧录。
教程特别提示了如果你是MAC系统,最好跟随教程更新bootloader。而如果你是windows系统,你应该先下载驱动。如果你是win10,可能内置驱动已经包含了,所以如果没有安装驱动的步骤但是能成功烧录,也是有可能的。在设备管理器能成功看到COM口信息即可。
有一些开发板进入boot模式需求上电的同时按下reset软件。至于express,我没有搞清楚。按照官网的说明,新板子连接USB线之后,再按一到两下reset就能进入boot模式,我尝试的结果似乎是连续按两下,虽然这么小的按键按动起来需要一点运气。。总而言之,最后是能够成功的,看到所有灯同时闪烁绿色就是进入了boot模式。
这个板子还有个很优秀的故障提示,如果彩色 LED 指示灯变为红色,请检查 USB 电缆,尝试使用其他电缆或其他 USB 端口。可以提醒你是否是线缆和电脑的问题。
接下来就是各个任务部分
 
入门任务:配置开发环境,点灯
物料:circuit playground express开发板的D13 LED灯
流程:下载官方固件,进入boot模式,自动烧录
烧录成功之后会齐闪黄灯。

点灯程序
import board
import digitalio
import time

led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT

while True:
    led.value = not led.value
    time.sleep(0.1)

 

 

 

基础任务一,炫彩LED跑马灯

https://bbs.eeworld.com.cn/thread-1292210-1-1.html

物料:circuit playground express开发板的neopixel灯带

流程:

 

 

import time
import board
import neopixel
from rainbowio import colorwheel
import digitalio


# 自定义常量
BOARD_NEO_QTY = 10
BOARD_NEQ_BRI = 0.2

RED = (255, 0, 0)
YELLOW = (255, 150, 0)
GREEN = (0, 255, 0)
CYAN = (0, 255, 255)
BLUE = (0, 0, 255)
PURPLE = (180, 0, 255)
WHITE = (255, 255, 255)
OFF = (0, 0, 0)

# 初始化 NeoPixel
pixels = neopixel.NeoPixel(board.NEOPIXEL, BOARD_NEO_QTY, brightness=BOARD_NEQ_BRI,auto_write=False)


# 每0.5秒,按顺序改变一个灯珠的颜色
def color_chase(color, wait):
    for i in range(10):
        pixels[i] = color
        time.sleep(0.1)
        pixels.show()
    time.sleep(0.4)

def rainbow_cycle(wait):
    for j in range(255):
        for i in range(10):
            rc_index = (i * 256 // 10) + j * 5
            pixels[i] = colorwheel(rc_index & 255)

        time.sleep(0.1)
        pixels.show()


while True:
    rainbow_cycle(0.1)
    '''color_chase(RED, 0.1)
    color_chase(YELLOW, 0.1)
    color_chase(GREEN, 0.1)
    color_chase(CYAN, 0.1)
    color_chase(BLUE, 0.1)
    color_chase(PURPLE, 0.1)
    color_chase(OFF, 0.1)'''

 

基础任务二,检测环境温度和光线

https://bbs.eeworld.com.cn/thread-1292215-1-1.html

物料:circuit playground express开发板的温度传感器与光线传感器,灯带

流程:

 

# 在这里写上你的代码 :-)
import time
import board
import neopixel
import analogio
import simpleio
import adafruit_thermistor

# 自定义常量
BOARD_NEO_QTY = 10
BOARD_NEQ_BRI = 0.008

RED = (255, 0, 0)
YELLOW = (255, 150, 0)
GREEN = (0, 255, 0)
CYAN = (0, 255, 255)
BLUE = (0, 0, 255)
PURPLE = (180, 0, 255)
WHITE = (255, 255, 255)
OFF = (0, 0, 0)

# 灯带初始化
pixels = neopixel.NeoPixel(board.NEOPIXEL, BOARD_NEO_QTY,brightness=BOARD_NEQ_BRI,auto_write=False)
pixels.fill((0, 0, 0))
pixels.show()
# 传感器
sensor_light = analogio.AnalogIn(board.LIGHT)
sensor_temp = adafruit_thermistor.Thermistor(board.TEMPERATURE, 10000, 10000, 25, 3950)


# 定义颜色序列
brightness_colors = [GREEN, YELLOW, RED]
temperature_colors = [BLUE, YELLOW, RED]
while True:
    # 获取环境的亮度和温度
    peak_light = simpleio.map_range(sensor_light.value, 2000, 62000, 0, 5)
    peak_temp = simpleio.map_range(sensor_temp.temperature, 33, 33.5, 0, 5)
    print("light.value:", sensor_light.value)
    print("--peak_light ", int(peak_light))
    print("temp.value:", sensor_temp.temperature)
    print("**peak_temp ", int(peak_temp))

    # 右侧灯珠表示 亮度
    for i in range(0, 5, 1):
        if i <= peak_light:
            pixels[i] = GREEN
            if peak_light > 2 and i >= 2:
                pixels[i] = YELLOW
            if peak_light > 3 and i >= 3:
                pixels[i] = RED
        else:
            pixels[i] = OFF

    # 左侧灯珠表示 温度
    for j in range(9, 4, -1):
        if j >= 9 - peak_temp:
            pixels[j] = BLUE
            if peak_temp > 2 and j <= 7:
                pixels[j] = YELLOW
            if peak_temp > 3 and j <= 6:
                pixels[j] = RED
        else:
            pixels[j] = OFF
    pixels.show()

    time.sleep(0.1)



 

基础任务三,入侵检测报警

https://bbs.eeworld.com.cn/thread-1292649-1-1.html

物料:circuit playground express开发板的光线传感器,灯带

使用光线检测的效果,比红外检测的效果明显

流程:

 

import time
from adafruit_circuitplayground import cp

# 设定一个阈值来表示光线强度低时的值
LIGHT_THRESHOLD = 100

while True:
    # 读取板载光线传感器数据
    light_value = cp.light

    # 检查光线强度是否低于阈值
    if light_value < LIGHT_THRESHOLD:
        # 点亮所有LED灯
        cp.pixels.brightness = 0.5  # 设置LED亮度
        for i in range(10):
            cp.pixels[i] = (255, 0, 0)  # 红色表示警告

        # 发出声音报警
        # 播放一个简单的警报音
        for _ in range(3):
            cp.start_tone(2000)  # 发出2000Hz的音调
            time.sleep(0.1)
            cp.stop_tone()
            time.sleep(0.1)
    else:
        # 关闭LED灯
        cp.pixels.brightness = 0.0  # 关闭LED灯
        cp.stop_tone()  # 停止声音

    # 稍微延迟后再次检测
    time.sleep(0.1)


WeChat_20241021050359

 

 

进阶任务一,不倒翁

https://bbs.eeworld.com.cn/thread-1294921-1-1.html

物料:circuit playground express开发板的运动传感器,neopixel灯带

流程:

 

import math
import time
from adafruit_circuitplayground import cp

# 定义颜色轮函数
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 = math.atan2(accel_x, accel_y)  # 获取倾角
    inclination_deg = inclination * (180 / math.pi)  # 将倾角转换为度
    # 限制倾角在-90到90度之间
    inclination_deg = max(min(inclination_deg, 90), -90)
    # 映射倾角到LED索引
    led_index = int((inclination_deg + 90) / 18)

    # 确保led_index在0到9之间
    led_index = max(min(led_index, 9), 0)

    # 更新LED灯颜色
    for i in range(10):
        if i == led_index:
            # 当前倾角对应的LED显示绿色
            cp.pixels[i] = (0, 255, 0)
        else:
            # 根据LED位置计算颜色
            color = color_wheel(255 * i // 10)
            cp.pixels[i] = color

    # 稍微延迟后再次检测
    time.sleep(0.1)


 

 

Circuit Playground Express是一款设计精良的电子编程学习工具,它以其紧凑的设计和丰富的功能赢得了用户的喜爱。这款设备集合了多种传感器和LED灯,为学习编程和电子制作提供了便利。它的用户界面友好,使得即使是初学者也能轻松上手。Circuit Playground Express在教育和娱乐之间取得了良好的平衡,让学习过程变得更加有趣和互动。此外,它的稳定性和兼容性也赢得了用户的信赖,是一款值得推荐的电子学习工具。


 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表