三、数字公交
第11课 单刷卡机扣费

一、任务目标
车费为 2:刷到卡就把余额减 2 写回,成功显示新余额并蜂鸣 988,失败显示叉。完整代码还要新卡号不等于旧卡号且余额≥车费,才能扣费。
二、我们要学什么
- 学习要点:扣费前先有余额;防重复刷是加严条件
- 本课过关:能指出体验每刷一次就尝试扣 2;换卡号才扣是完整代码。
- 示例对齐:体验题对应 「3-3-1 单刷卡机扣费」;完整代码对应 「3-3-2 防重复单刷卡机扣费」。
三、本节要点
体验没有读卡号、没有余额≥车费判断。
1读场景明确真实任务
2对要点刷卡减 2 写回
3载入运行本课积木/代码
四、解题思路
- 输入:RFID 内容;完整代码另读卡号。
- 输出:点阵新余额或叉,蜂鸣。
- 生活对照:闸机扣次票;同一张卡按住不应连扣。
- 验证现象:刷一次余额少 2。
本课主要用到:RFID、点阵、蜂鸣器。
- 1车费 = 2。
- 2读到内容则余额-=车费 写回。
- 3成功 shows 新余额。
- 4完整代码加卡号变化和余额判断。
流程示意(可对照左侧文字)
五、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 板载传感 | 读取射频卡唯一编号。 | 完整代码 新卡号 = read_card(..., id)。 |
![]() | 逻辑 | 组合多个条件。 | 完整代码 新卡号!=旧卡号 and 余额>=车费。 |
六、知识点讲解
本课核心是定额扣费。体验不判断够不够、会不会连扣。
车费
写死 2。
失败
shows(NO),体验还蜂鸣 165。
防重复
完整代码记下旧卡号。
- 过关:能说出为什么要比卡号。
先弄清本课输入与输出,再进编程练习对照现象。
七、编程练习
点「载入」打开 MixVM(board=mixgo_zero_design)。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。
3-3-1 单刷卡机扣费.mix。载入后运行。
正在载入编程环境
正在载入 MixGo ZERO 仿真编程环境…
八、课堂练习
先完成两道判断题,再完成选择题;全部选定后点「检查」。
判断:体验会先判断余额是否大于等于车费再扣款。
判断:车费变量是 2。
体验扣费成功后点阵显示?
完整代码允许扣费还要求?
九、本节小结
记住:体验每次刷卡扣 2;防重复扣是完整代码。

