Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions servo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
from microbit import *

class SERVO:
def __init__(self, pin):
"""基本描述

舵机控制类

Args:
pin: 连接舵机的引脚

Returns:
None
"""
self._pin = pin
self._angle = 90 # 初始角度

def write(self, angle):
"""

设置舵机角度

Args:
angle: 角度值,范围 0-180

Returns:
None
"""
# 确保角度在有效范围内
if angle < 0:
angle = 0
elif angle > 180:
angle = 180

self._angle = angle
# 映射角度到PWM值 (0°=26, 90°=78, 180°=130)
# 公式: pwm = (angle * 104 / 180) + 26
pwm_value = int((angle * 104 / 180) + 26)
self._pin.write_analog(pwm_value)

def set_angle(self, angle):
"""

设置舵机角度

Args:
angle: 角度值,范围 0-180

Returns:
None
"""
self.write(angle)

def get_angle(self):
"""

获取当前舵机角度

Returns:
int: 当前角度值
"""
return self._angle


if __name__ == '__main__':
# 初始化舵机(假设连接到pin1)
servo = SERVO(pin1)

while True:
# 测试舵机转动
servo.set_angle(0)
sleep(1000)
servo.set_angle(90)
sleep(1000)
servo.set_angle(180)
sleep(1000)
64 changes: 64 additions & 0 deletions tmp36.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from microbit import *

class TMP36:
def __init__(self, pin):
"""基本描述

TMP36温度传感器

Args:
pin: 连接TMP36的模拟引脚

Returns:
temperature 摄氏温度
"""
self._pin = pin
self._temperature = 25.0 # 初始温度值

def read(self, unit='C'):
"""

读取温度

Args:
unit: 温度单位, 'C' 表示摄氏温度, 'F' 表示华氏温度

Returns:
float: 温度值
"""
# 读取模拟值 (0-1023)
analog_value = self._pin.read_analog()
# 转换为电压 (0-3.3V)
voltage = analog_value * 3.3 / 1023.0
# 应用TMP36公式: 温度 = (电压 - 0.5) * 100
self._temperature = (voltage - 0.5) * 100

if unit.upper() == 'F':
# 转换为华氏温度
return self._temperature * 9 / 5 + 32
else:
# 返回摄氏温度
return self._temperature

def get_temperature(self, unit='C'):
"""

读取温度

Args:
unit: 温度单位, 'C' 表示摄氏温度, 'F' 表示华氏温度

Returns:
float: 温度值
"""
return self.read(unit)


if __name__ == '__main__':
sensor = TMP36(pin1) # 假设TMP36连接到pin1
while True:
temp_c = sensor.get_temperature('C')
temp_f = sensor.get_temperature('F')
print("TMP36_temperature_C: {:.2f}C".format(temp_c))
print("TMP36_temperature_F: {:.2f}F".format(temp_f))
sleep(1000)