Arduino踩坑记:LED的PWM设置。解决PWM常亮、突然变暗等问题

猜测原因:受限于人眼感受和LED特性影响,PWM是有一个最佳的调节范围的,超出范围外将不能出现预料中的变化;另外怀疑是硬件bug以本人手上的LED测试为例20000ms周期为例:最佳亮灯周期为1%~18%个周期,亮灯周期低于1%(0.01),或高于18%(0.18),都会表现为中亮。测试代码如下:#define R (3)#define G (4)#define B (...
摘要由CSDN通过智能技术生成

猜测原因:受限于人眼感受和LED特性影响,PWM是有一个最佳的调节范围的,超出范围外将不能出现预料中的变化;另外怀疑是硬件bug

以本人手上的LED测试为例20000ms周期为例:

最佳亮灯周期为1%~18%个周期,亮灯周期低于1%(0.01),或高于18%(0.18),都会表现为中亮。

测试代码如下:

 

#define R (3)
#define G (4)
#define B (2)
#define CYCLE 20000

void setup(){
  Serial.begin(9600);
    while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  Serial.println("Serial OK");
  pinMode(R,OUTPUT);
  pinMode(G,OUTPUT);
  pinMode(B,OUTPUT);

}
float percent=0.0;
boolean state_up=false;
float minper=0.01;//when min is too small(smaller than stepp),it work incorrectly;
float maxper=0.18;//when it's over 0.18,it work incorrectly;
float stepp=0.001;//control stepp , control speed
//G:0.01~0.18 stepp=0.001
int LED=B;

void loop(){
if(state_up){
   if(percent>maxper){
     state_up=false;     
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值