crimsonsnow 发表于 2024-9-27 08:29

【Follow me第二季第1期】任务汇总,代码下载

本帖最后由 crimsonsnow 于 2024-10-21 05:18 编辑

<div></div>

<div>ee3719609b0a090fb6bd63b6f3be35cd</div>

<div>本次使用的产品是Circuit Playground Express,它是由 Adafruit Industries LLC 设计并生产的一款多功能入门级开发板。Adafruit 提供了很丰富的教育支持来帮助入门编程它们的开发板。</div>

<div>可以在adafruit的官方网站上搜索进入circuit playground的产品界面。<a href="https://www.adafruit.com/product/3333">Circuit Playground Express:ID 3333:Adafruit Industries,独特且有趣的DIY电子产品和套件</a></div>

<div>在描述中,可以找到一个帮助开始的链接。<a href="https://learn.adafruit.com/adafruit-circuit-playground-express">Overview | Adafruit Circuit Playground Express | Adafruit Learning System</a></div>

<div>这块开发板是express版本。支持运行 MakeCode、CircuitPython、Arduino 和&nbsp;Code.org CS Discoveries。</div>

<div>我使用了thonny和MU两个针对初学者级别的python IDE开发。</div>

<div>express开发板使用的连接端口是micro端口,因此要准备良好的micro数据线。</div>

<div>
<div style="text-align: center;"></div>
</div>

<div>这款开发板有很多的传感器外设,在任务中,体验了光线传感器,温度传感器,运动传感器。它还有一个小麦克风和一个迷你扬声器,扬声器通过引脚#11上的关机控制能够将其关闭。</div>

<div>它还有一个红外接收器和传输器,在&ldquo;距离检测&rdquo;任务中,很多人尝试使用红外来进行处理,但是效果不太好。</div>

<div>跟随开始教程,官方提供了固件,直接通过USB下载,就可以进行烧录。</div>

<div>教程特别提示了如果你是MAC系统,最好跟随教程更新bootloader。而如果你是windows系统,你应该先下载驱动。如果你是win10,可能内置驱动已经包含了,所以如果没有安装驱动的步骤但是能成功烧录,也是有可能的。在设备管理器能成功看到COM口信息即可。</div>

<div><a href="https://learn.adafruit.com/adafruit-circuit-playground-express/adafruit2-windows-driver-installation">Windows 驱动程序安装 |Adafruit Circuit 游乐场快车 |Adafruit 学习系统</a></div>

<div>有一些开发板进入boot模式需求上电的同时按下reset软件。至于express,我没有搞清楚。按照官网的说明,新板子连接USB线之后,再按一到两下reset就能进入boot模式,我尝试的结果似乎是连续按两下,虽然这么小的按键按动起来需要一点运气。。总而言之,最后是能够成功的,看到所有灯同时闪烁绿色就是进入了boot模式。</div>

<div>这个板子还有个很优秀的故障提示,如果彩色 LED 指示灯变为红色,请检查 USB 电缆,尝试使用其他电缆或其他 USB 端口。可以提醒你是否是线缆和电脑的问题。</div>

<div>接下来就是各个任务部分</div>

<div>&nbsp;</div>

<div>入门任务:配置开发环境,点灯</div>

<div><a href="https://bbs.eeworld.com.cn/thread-1292198-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1292198-1-1.html</a></div>

<div>物料:circuit playground express开发板的D13 LED灯</div>

<div>流程:下载官方固件,进入boot模式,自动烧录</div>

<div>烧录成功之后会齐闪黄灯。</div>

<div>08c90bf6a7872f46bb18a36f1a1f542e<br />
点灯程序</div>

<div>
<pre>
<code>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)
</code></pre>

<p>&nbsp;</p>
</div>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>基础任务一,炫彩LED跑马灯</p>

<p><a href="https://bbs.eeworld.com.cn/thread-1292210-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1292210-1-1.html</a></p>

<p>物料:circuit playground express开发板的neopixel灯带</p>

<p>流程: &nbsp;</p>

<p>&nbsp;</p>

<pre>
<code>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 = 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 = colorwheel(rc_index &amp; 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)'''

</code></pre>

<p><img src="https://bbs.eeworld.com.cn/data/attachment/forum/202409/01/194153qd00y0wmlw1wzrj2.jpg.thumb.jpg" /></p>

<p>&nbsp;</p>

<p>基础任务二,检测环境温度和光线</p>

<p><a href="https://bbs.eeworld.com.cn/thread-1292215-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1292215-1-1.html</a></p>

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

<p>流程: &nbsp;</p>

<pre>
<code># 在这里写上你的代码 :-)
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 =
temperature_colors =
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 &lt;= peak_light:
            pixels = GREEN
            if peak_light &gt; 2 and i &gt;= 2:
                pixels = YELLOW
            if peak_light &gt; 3 and i &gt;= 3:
                pixels = RED
      else:
            pixels = OFF

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

    time.sleep(0.1)



</code></pre>

<p><img src="https://bbs.eeworld.com.cn/data/attachment/forum/202409/01/214749vh7pv4dz4a66616p.jpg.thumb.jpg" /></p>

<p>&nbsp;</p>

<p>基础任务三,入侵检测报警</p>

<p><a href="https://bbs.eeworld.com.cn/thread-1292649-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1292649-1-1.html</a></p>

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

<p>使用光线检测的效果,比红外检测的效果明显</p>

<p>流程: &nbsp;</p>

<pre>
<code>import time
from adafruit_circuitplayground import cp

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

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

    # 检查光线强度是否低于阈值
    if light_value &lt; LIGHT_THRESHOLD:
      # 点亮所有LED灯
      cp.pixels.brightness = 0.5# 设置LED亮度
      for i in range(10):
            cp.pixels = (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)


</code></pre>

<p>5487ca0fce8a4044362681ec01340d70<br />
&nbsp;</p>

<p>&nbsp;</p>

<p>进阶任务一,不倒翁</p>

<p><a href="https://bbs.eeworld.com.cn/thread-1294921-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1294921-1-1.html</a></p>

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

<p>流程: &nbsp;</p>

<pre>
<code>import math
import time
from adafruit_circuitplayground import cp

# 定义颜色轮函数
def color_wheel(position):
    if position &lt; 0 or position &gt; 255:
      return (0, 0, 0)
    if position &lt; 85:
      return (int(position * 3), int(255 - position * 3), 0)
    if position &lt; 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 = (0, 255, 0)
      else:
            # 根据LED位置计算颜色
            color = color_wheel(255 * i // 10)
            cp.pixels = color

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


</code></pre>

<p><img src="https://bbs.eeworld.com.cn/data/attachment/forum/202409/27/094812js4oduodsuncrjs8.jpg.thumb.jpg" /></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

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

<p><br />
&nbsp;</p>
页: [1]
查看完整版本: 【Follow me第二季第1期】任务汇总,代码下载