题目:
条件1:豪华洗衣模式,需完成所有洗衣步骤(等待开始->清水洗->脱水->烘干->停止)。
条件2:简易洗衣模式,跳过烘干的步骤(等待开始->清水洗->脱水->停止)。
条件3:每个步骤需停留2秒钟。
条件4:该步骤执行中会有Boolean 灯号作表示并且显示目前步骤字串于Status 显示元件中
条件5:按下Stop 按键,须立即停止洗衣步骤(不论在何种洗衣步骤,即时停止)
题目解答:
解题工程师:Howard
本题目写法其实有非常多种,在此提出的只是其中的一种普遍的作法,关于题目二的程式,主要是利用State Machine架构来做程式的流程控制,而每个State请记得使用Type Definition的方式来管理Enum ,这样你的程式比较容易在未来增加新的State ,相关的教学可以先参考下列文章讲解。
我们先来看看题目二的程式架构,如下图所示,程式使用Select 来决定下个状态的走向,而每个状态的停留时间,其实是使用类似轮询的方式来确认每个状态的停留时间,但”开始”被按下时,程式就开始执行。
而以下列的程式码来看,每隔100ms 会确认一次是否有”停止”按钮被按下,并利用减法的方式去计算目前执行的时间是否已达二秒,接着再切换至下一个状态。
以下是脱水动作的程式码,程式是由Select 来决定是否需要执行”烘干”动作。
以下是烘干动作的程式码。
以下是停止动作的程式码。
|