车闸系统
大约 2 分钟约 719 字
车闸系统
| 适用教材 | 浙教版《义务教育教科书 信息科技》 |
|---|---|
| 资源名称 | 车闸系统 |
| 使用产品 | 信息科技(浙教版教具资源包) |
| 课程参考 | 五年级下册 第37页 |
| 搭建动画 | |
| 搭建动画 | |
![]() |
本次实验采用信息科技实验板,配备了舵机和按键模块,实现车闸控制与扣费功能。当按下按键时,舵机会旋转90度,打开车闸。车闸打开后,系统会等待3秒,让车辆通过,然后自动关闭车闸。同时,液晶屏会更新车位的信息。当车辆进入时,液晶屏会显示车位状态和入场时间;当车辆离开时,液晶屏会显示停车时间和收费金额。

from npython import * # 导入npython模块
# 定义车闸舵机的角度
CLOSED_ANGLE = 35 # 车闸关闭时的角度
OPEN_ANGLE = 120 # 车闸打开时的角度
# 车闸状态
is_brake_active = False
class Parking:
def __init__(self):
# 是否有车在停车
self.status = False
# 车进入时间
self.enter_time = None
# 车离开时间
self.leave_time = None
# 车位费用
self.fee = 0.1
# 有车进入
def enter(self):
self.status = True
self.enter_time = time.ticks_ms()
# 有车离开
def leave(self):
self.status = False
self.leave_time = time.ticks_ms()
# 计算停车时间变量
parking_time = (self.leave_time - self.enter_time) / 1000.0
# 计算费用
fee = parking_time * self.fee
oled.print(1, 3, "停车时间: {:.2f}s".format(parking_time), 1)
oled.print(1, 4, "收费: {:.2f}元".format(fee), 1)
self.enter_time = None
self.leave_time = None
# 显示停车信息
def display_info(self):
if self.status:
oled.print(1, 3, "车位:有车", 1)
oled.print(1, 4, "入场时间:{:.2f}s".format(self.enter_time / 1000), 1)
else:
oled.print(1, 3, "车位:空闲", 1)
oled.print(1, 4, "入场时间:", 1)
oled.print(1, 5, "价格:0.1元/s", 1)
# 创建车位实例
park1 = Parking()
oled.print(3, 1, "车闸控制系统", 1)
oled.print(1, 2, "车闸关闭", 1)
while True:
# 读取车闸状态
if pin0.read_digital() == 1:
time.sleep_ms(30) # 延时以防止抖动
if pin0.read_digital() == 1:
# 等待按键释放
while pin0.read_digital() == 1:
pass
if park1.status: # 判断是车进入还是离开
park1.leave()
else:
park1.enter()
servos.write_angle(1, OPEN_ANGLE) # 打开车闸
is_brake_active = True
oled.print(1, 2, "车闸打开", 1)
time.sleep(5) # 延时3秒,等待车辆离开
# 关闭车闸
servos.write_angle(1, CLOSED_ANGLE)
is_brake_active = False
oled.print(1, 2, "车闸关闭", 1)
# 显示车位信息
park1.display_info()

