【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 和 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>它还有一个红外接收器和传输器,在“距离检测”任务中,很多人尝试使用红外来进行处理,但是效果不太好。</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> </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> </p>
</div>
<p> </p>
<p> </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>流程: </p>
<p> </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 & 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> </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>流程: </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 <= peak_light:
pixels = GREEN
if peak_light > 2 and i >= 2:
pixels = YELLOW
if peak_light > 3 and i >= 3:
pixels = RED
else:
pixels = OFF
# 左侧灯珠表示 温度
for j in range(9, 4, -1):
if j >= 9 - peak_temp:
pixels = BLUE
if peak_temp > 2 and j <= 7:
pixels = YELLOW
if peak_temp > 3 and j <= 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> </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>流程: </p>
<pre>
<code>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 = (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 />
</p>
<p> </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>流程: </p>
<pre>
<code>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 = (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> </p>
<p> </p>
<p>Circuit Playground Express是一款设计精良的电子编程学习工具,它以其紧凑的设计和丰富的功能赢得了用户的喜爱。这款设备集合了多种传感器和LED灯,为学习编程和电子制作提供了便利。它的用户界面友好,使得即使是初学者也能轻松上手。Circuit Playground Express在教育和娱乐之间取得了良好的平衡,让学习过程变得更加有趣和互动。此外,它的稳定性和兼容性也赢得了用户的信赖,是一款值得推荐的电子学习工具。</p>
<p><br />
</p>
页:
[1]