跳至主要內容

电风扇控制系统

大约 2 分钟约 692 字

电风扇控制系统

适用教材浙教版《义务教育教科书 信息科技》
资源名称电风扇控制系统
使用产品信息科技(浙教版教具资源包)
课程参考五年级下册 第21页
  搭建动画
  搭建动画

  本次实验采用了信息科技实验板,配备了按键(板载)、风扇、舵机,实现电风扇常见功能,并采用了PWM脉冲调制技术。通过按键控制,可以实现对风扇风速的分档调节。风扇的速度分为三个档位,起始风速为零。每按一次按键B,风扇的速度就会提升一个档位,而每按四次按键后,风扇的速度会重置为零。此外,按下按键A可以使小风扇进入摇头模式。

from npython import *  # 导入npython模块

CYCLE = 100  # 周期,单位为毫秒,频率为5 Hz
gear_level = 0

servo_angle = 90
angle_increment = 1
swing_mode = False
swing_count = 0  # 初始化 swing_count

servos.write_angle(1, servo_angle) # 初始化舵机角度

while True:
	if button.get_b():
		# 等待按键释放
		while button.get_b():
			pass
		gear_level = (gear_level + 1) % 4

	if button.get_a():
		# 等待按键释放
		while button.get_a():
			pass
		swing_mode = not swing_mode  # 切换摇头模式
		
			oled.print(1, 1, "电风扇控制系统", 1)  # 屏幕显示
			oled.print(1, 2, "挡位:" + str(gear_level), 1)  # 屏幕显示
			if swing_mode:
				oled.print(1, 3, "摇头模式:开", 1)  # 屏幕显示
			else:
				oled.print(1, 3, "摇头模式:关", 1)  # 屏幕显示
		
			while True:
				if swing_mode:
					swing_count = (swing_count + 1) % 3  # 对摇头频率进行3分频,相当于摇头的速度为原来的1/3
					if swing_count == 0:
						servos.write_angle(1, servo_angle)  # 舵机控制
						servo_angle += angle_increment
						if servo_angle >= 180:
							angle_increment = -1
						elif servo_angle <= 0:
							angle_increment = 1
		
				if gear_level <= 0:
					pin0.write_digital(0)  # 0挡
					time.sleep_ms(6)
				elif gear_level >= 3:
					pin0.write_digital(1)  # 3挡
					time.sleep_ms(6)
				else:
					pin0.write_digital(1)  # 设置高电平
					time.sleep_ms(gear_level * 2)  # 高电平时间
					pin0.write_digital(0)  # 设置低电平
					time.sleep_ms(6 - gear_level * 2)  # 低电平时间
		
				if button.get_b() or button.get_a():
					break
上次编辑于: