在没有shield的情况下,也就只有玩玩LED了,看上去LED的口正好还是PWM口,看来调光有希望。去import里面找了pwm,很多,可是光从描述上看很难看出具体什么玩意,那算了,自己摸索一下新建试试。mbed的新建也很有意思,有很多模板可以选择。
下拉菜单很多,我们先选output a pwm。打开一看,发现有点骗人,其实就是在while外面初始化了一个duty为10%的pwm,PB_3输出,那个LED只是在while里面一闪一闪表示工作的。
我们要改进一下,首先尝试把PWM输出到LED1上去。把最前面两句注释掉,改成PwmOut myled(LED1);同时对duty也做相应替换,duty的值改成一个变量i,这样可以在循环里面修改i的值,可以实现亮度的循环变化。main.cpp代码修改如下,很简单。结果不错,LED1开始呼吸灯效果咯。啦啦啦,视频就不上了,大家编译一下,就可以看到效果了。mbed真神奇,现在颇有点亲切的感觉了。附上代码,不长的
#include "mbed.h"
//PwmOut mypwm(PWM_OUT);
//DigitalOut myled(LED1);
PwmOut myled(LED1);
int main() {
unsigned char i=0;
//mypwm.period_ms(10);
//mypwm.pulsewidth_ms(1);
myled.period_ms(10);
myled.pulsewidth_ms(i);
printf("pwm set to %.2f %%\n", myled.read() * 100);
while(1) {
//myled = !myled;
i++;
if (i>10) i=0;
myled.pulsewidth_ms(i);
wait(0.2);
}
}