在函数init_button_sensor()中实现代码,将开发板的相应数字引脚配置为输入端,以便在按下按钮时能够检测到。该函数应适当利用Atmega328P的内部上拉电阻,以保证该引脚的状态始终保持良好。
在函数read_button_sensor()中实现代码,读取开发板相应数字引脚的状态。如果按钮被按下,该函数应返回0,否则返回1。
实现函数read_knob_sensor(),利用开发板上相应的ADC来读取旋转电位器的位置。该函数应该接受一个整数值knob作为输入,其中knob可以取值0,如果需要从knob0读取,则取值1,如果需要从knob1读取。它应该返回一个浮点值,对应于旋钮在0(即旋钮在最小位置)和1(即旋钮在最大位置)之间的位置。
实现函数init_arm_motors(),配置Atmega328P的定时器1,使其能够实现脉宽调制,其特点如下。(i)它应能在快速PWM模式下从同一个定时器产生两个PWM波,(ii)PWM波的周期应为20 ms,(iii)应能调整占空比,以0.5 μs的分辨率实现1 ms至2 ms的脉冲。
在函数read_button_sensor()中实现代码,读取开发板相应数字引脚的状态。如果按钮被按下,该函数应返回0,否则返回1。
实现函数read_knob_sensor(),利用开发板上相应的ADC来读取旋转电位器的位置。该函数应该接受一个整数值knob作为输入,其中knob可以取值0,如果需要从knob0读取,则取值1,如果需要从knob1读取。它应该返回一个浮点值,对应于旋钮在0(即旋钮在最小位置)和1(即旋钮在最大位置)之间的位置。
实现函数init_arm_motors(),配置Atmega328P的定时器1,使其能够实现脉宽调制,其特点如下。(i)它应能在快速PWM模式下从同一个定时器产生两个PWM波,(ii)PWM波的周期应为20 ms,(iii)应能调整占空比,以0.5 μs的分辨率实现1 ms至2 ms的脉冲。