Arduino UNO PWM LED呼吸灯程序源码 (软件模拟PWM发生器+1ms定时器中断实现)
#define u8 unsigned char
#define u16 unsigned int
#include "MsTimer2.h"
#define LED 13 //13号引脚
void setup() {
pinMode(LED, OUTPUT); //输出引脚
MsTimer2::set(1,ms1); //1ms定时器
MsTimer2::start(); //开定时器中断
}
u8 pwm = 0; //LED亮度 值越大越亮
void loop() {
static u8 i=0;
digitalWrite(LED,(i < pwm) ? 1 : 0);
if(++i == 255) i=0;
}
void ms1(){ //1ms定时器中断
static u8 ms=0;
static char k=1;
if(++ms >= 10){
ms=0;
if(k){
pwm++;
} else {
pwm--;
}
if(pwm == 0 || pwm == 255){
k = !k;
}
}
}
页:
[1]