- Forums
- Resources
- About
- Groups
Close
上一节我们通过光敏电阻来进行模拟调光效果还不错,帖子的最后想着可以通过单片机来进行更精确的控制。所以这篇帖子就用上了单片机进行控制。
上次活动控制电机的板子TLE9869又可以派上用场了,基本的思路是这样的:调光部分我们可以通过CCU6模块输出一定频率的方波然后通过调整占空比把输出电压控制在0-1.6V之间,这样就可以实现LED的电流在0-300mA之间变化实现对亮度的控制。另一部分我使用VS1838一体化红外接收头接收苹果红外遥控器的按键指令,用左右键循环切换灯条的颜色,上下键调整亮度。
然后我们看看都需要哪些东西吧,下图1是苹果的红外遥控器和VS1838一体化红外接收头,下图2是RGB灯条,下图3是社区上次活动申请的电机控制的板子TLE9869,下图4是就是这次申请的板子TLD5098EL了。照片是连线之后拍的有点乱乱的大家多多包涵。
介绍一下TLE9869都使用到了哪些外设及管脚:串口2连接到虚拟串口的打印调试信息用到了P1.1和P1.2,外红接收头使用外部中断用到了P1.3,定时器Timer2,CCU6模块输出到P0.4管脚调整VSET,RGB灯条控制颜色用到了P0.1 P0.3 P1.0这三个端口。程序写的有点乱有空再整理吧。
int main(void) { // int i; /***************************************************************************** ** initialization of the hardware modules based on the configuration done ** ** by using the IFXConfigWizard ** *****************************************************************************/ SCU_Init(); Port_Init(); UART2_Init(); Timer2_Init(); INT_Init(); CCU6_Init(); /***************************************************************************** ** place your application code here ** *****************************************************************************/ Port_ChangePin(LED1, PORT_ACTION_OUTPUT); Port_ChangePin(LED3, PORT_ACTION_OUTPUT); Port_ChangePin(LED5, PORT_ACTION_OUTPUT); Port_ChangePin(LED7, PORT_ACTION_OUTPUT); Timer2_Start(); CCU6_StartTmr_T12(); Port_ChangePin(LED7, PORT_ACTION_SET); /***************************************************************************** ** main endless loop ** *****************************************************************************/ while (1) { /*************************************************************************** ** main watchdog1 (WDT1) service ** ***************************************************************************/ WDT1_Service(); /*************************************************************************** ** place your application code here ** ***************************************************************************/ switch(RGB){ case 0: RGB_R_OFF; RGB_G_OFF; RGB_B_OFF; break; case 1: RGB_R_OFF; RGB_G_OFF; RGB_B_ON; break; case 2: RGB_R_OFF; RGB_G_ON; RGB_B_OFF; break; case 3: RGB_R_OFF; RGB_G_ON; RGB_B_ON; break; case 4: RGB_R_ON; RGB_G_OFF; RGB_B_OFF; break; case 5: RGB_R_ON; RGB_G_OFF; RGB_B_ON; break; case 6: RGB_R_ON; RGB_G_ON; RGB_B_OFF; break; case 7: RGB_R_ON; RGB_G_ON; RGB_B_ON; break; } if(receiveComplete){ receiveComplete = FALSE; Ir_Server(); switch(remote_code[2]){ case up: light--; if(255 == light) light = 21; printf("down key is Press ,key_code = %#x light is %d ",remote_code[2],light); break; case down: light++; if(21 == light) light = 0; printf("down key is Press ,key_code = %#x light is %d ",remote_code[2],light); break; case left: RGB++; if(8 == RGB) RGB = 0; printf("left key is Press ,key_code = %#x ",remote_code[2]); break; case right: RGB--; if(255 == RGB) RGB = 7; printf("right key is Press ,key_code = %#x ",remote_code[2]); break; } } // CCU6_LoadShadowRegister_CC60(520+light*20); CCU6_EnableST_T12(); CCU6_StartTmr_T12(); } }
下边两张GIF图片第一张是亮度调整,第二张是颜色切换。社区不能上传视频,贴上优酷的链接看高清版的吧。
只有注册用户才能在此添加评论。 如果您已经注册,请登录。 如果您还没有注册,请注册并登录。