|
答辩老师问1:你的设计明确不涉及硬件,那么如何验证软件逻辑的正确性?特别是人体感应30秒延时关灯功能?
学生答:我将通过Arduino IDE的串口监视器进行模拟验证。为每个功能模块设置对应的模拟输入变量,例如,手动给光强变量赋值来测试调光算法,手动切换有人/无人状态标志位来测试延时逻辑。通过串口打印出关键变量的值和状态变化(如“当前模式:自动”、“光强:350,设定亮度:中档”、“检测到无人,开始计时...”),可以直观地跟踪和调试程序流程,确保逻辑符合设计要求。
答辩老师问2:自动调光算法中,当环境光强在临界值(如200或500)附近轻微波动时,如何避免台灯亮度频繁切换?
学生答:这是一个重要的设计考虑点。我计划在代码中引入简单的“滞回比较”逻辑或“防抖”判断。例如,对于200这个临界点,可以设置一个缓冲区间:当光强从低向高超过220时,才从高亮度切换到中亮度;当光强从高向低低于180时,才从中亮度切换回高亮度。这样可以有效避免在临界点附近因微小波动造成的亮度频繁跳变,提升用户体验。这将在算法实现部分作为设计难点和解决方法在说明书中详细说明。
答辩老师问3:手动模式优先级高于自动模式,请简述一下你在代码中打算如何实现这种优先级逻辑?
学生答:我计划在主程序循环中使用一个全局变量来标记当前模式(如isManualMode)。程序会首先检查这个模式标志。如果处于手动模式,则直接输出预设的固定亮度值,并跳过后续的自动调光和人体感应判断。只有当模式标志为自动模式时,程序才会继续执行光强检测和人体感应逻辑。这样就从结构上保证了手动模式的指令能够被最优先响应,实现优先级控制。
答辩老师问4:PWM调光技术在你的软件设计中是如何体现的?
学生答:虽然本次设计是软件仿真,但代码框架会为实际硬件应用预留接口。在代码中,我会将最终确定的亮度档位(低/中/高)映射到对应的PWM占空比值(例如,分别对应模拟输出引脚analogWrite的数值50、150、250)。在说明书中,我会解释PWM原理,并说明在真实硬件中,这些数值将输出到LED驱动电路来控制亮度。目前阶段,则通过串口输出类似“PWM输出值:150(中亮度)”的信息来模拟这一过程。
|