[资料分享与下载] 【YL-KL26Z试用】+ MBED下的记事本调试

[复制链接]
1296|4
 楼主| Tennasi 发表于 2015-10-24 16:26 | 显示全部楼层 |阅读模式
首选感谢小七和社区,收到这块板子,研究了几天。和大家分享一下。这块板子和KL25Z差不多,所以可以在mbed下选择KL25Z模块使用了。

今天我们要使用这块板子,在mbed下使用RTOS做一个呼吸灯和使用ADC输入来控制一人LED灯的亮度,最后把ADC的输入值在 “串口”中打印出来,由于串口的一些特殊性,所以这里我换了windows记事本,没错就是在windows自带的记事本中输出调试信息。
电路:

实现思路:
RTOS下两个线程,利用PWM控制LED0,LED1,主函数里采集ADC的值。
实现代码:
话不多说,代码做了详细的注释,大家看吧。
  1. #include "mbed.h"
  2. #include "rtos.h"
  3. #include "USBKeyboard.h"

  4. //led线程信号
  5. #define LEDSIGNAL   0x55

  6. AnalogIn sw(PTE20);
  7. PwmOut   led0(PTB18);
  8. PwmOut   led1(PTB19);
  9. USBKeyboard key;

  10. int swValue,swOldValue;

  11. //led0工作线程,呼吸灯效果
  12. void led0Work(void const *argumnt)
  13. {
  14.     int i;
  15.     while(true)
  16.     {
  17.         for(i=0;i<=1000;i+=10)
  18.         {
  19.             //设置PWM脉宽
  20.             led0.pulsewidth_us(i);
  21.             //等待2ms
  22.             Thread::wait(2);
  23.         }
  24.         Thread::wait(500);
  25.         for(i=1000;i>0;i-=10)
  26.         {
  27.             led0.pulsewidth_us(i);
  28.             Thread::wait(2);
  29.         }
  30.     }
  31. }
  32. //led1工作线程
  33. void led1Work(void const* argumnt)
  34. {
  35.     while(true)
  36.     {
  37.         //等待信号触发
  38.         Thread::signal_wait(LEDSIGNAL);
  39.         int orgVal = *(int*)argumnt;
  40.         int pVal = orgVal / 65500.0 * 1000;;
  41.         //退格输出
  42.         key.printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
  43.         key.printf("Led Value:%5d",orgVal);
  44.         //设置新的脉宽
  45.         led1.pulsewidth_us(pVal);
  46.         swOldValue = orgVal;
  47.     }
  48. }


  49. int main()
  50. {
  51.     //设置PWM周期
  52.     led0.period_us(1000);
  53.     led1.period_us(1000);
  54.    
  55.     Thread t1(led0Work);
  56.     Thread t2(led1Work,&swValue);
  57.    
  58.     while(1)
  59.     {
  60.         swValue = sw.read_u16();
  61.         //消除抖动
  62.         if(abs(swOldValue - swValue)>65)
  63.             t2.signal_set(LEDSIGNAL);
  64.         wait(0.01);
  65.     }
  66. }


cowboy2014 发表于 2015-10-24 16:41 | 显示全部楼层
这个呼吸灯用到pwm了吗?
芙蓉洞 发表于 2015-10-24 21:04 | 显示全部楼层
硬件的呼吸灯和用软件写的呼吸灯哪个好些呢?
Luis德华 发表于 2015-10-25 09:41 | 显示全部楼层
记事本调试是啥意思呢,不是太懂
跟屁虫 发表于 2015-10-25 21:04 | 显示全部楼层
PWM可以控制电流的大小吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

169

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部