【Follow me第二季第1期】基础任务二:监测环境温度和光线,通过板载LED展示舒适程度
[复制链接]
任务理解
热敏电阻温度传感器 A9 和 光线传感器 A8 ,都已经集成在了主板,获取两个传感器的值映射到NeoPixel灯带
代码部分
- 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)
-
主要逻辑
1. 初始化传感器前的部分,和任务一 是基本一致
2. 初始化 光线传感器 和 温度传感器
3.1 大循环 中,首先把两个传感器的值 在 范围内映射到 5 个灯珠
3.2 按照2个传感器的值,分别显示在左右两排 NeoPixel灯带
展示
补光灯开启
尾巴
CircuitPython 开发无需 编写大量的 驱动,甚至连针脚都已经被环境定义好,使用起来很方便
|