使用Rotary Encoder控制LED亮度:单灯正常多灯失效问题
旋转编码器控制LED亮度故障排查
问题现象
- 单个LED时,旋转编码器可正常调节亮度;接入额外6个LED后,电路无法正常运行
- 仅引脚9能实现PWM亮度控制,更换其他引脚后无法正常工作
电路背景
基础电路参考5引脚旋转编码器的接线逻辑(实际仅能获取到6引脚款编码器,接线遵循对应引脚定义),LED通过引脚9连接到控制器。
当前使用代码
int Brightness = 120; int StepBrightness = 10; unsigned long RealTime; unsigned long CyclicTime; const int pin_A = 2; // pin 2 连接旋转编码器的CLK引脚 const int pin_B = 3; // pin 3 连接旋转编码器的DT引脚 unsigned char encoder_A; unsigned char encoder_B; unsigned char encoder_A_vorige=0; void setup() { pinMode(9, OUTPUT); //只有pin9能正常工作,换其他引脚不行 pinMode(pin_A, INPUT); pinMode(pin_B, INPUT); RealTime = millis(); CyclicTime = RealTime; } void loop() { RealTime = millis(); if(RealTime >= (CyclicTime + 5)){ encoder_A = digitalRead(pin_A); encoder_B = digitalRead(pin_B); if((!encoder_A) && (encoder_A_vorige)){ if(encoder_B) { if(Brightness + StepBrightness <= 255) Brightness += StepBrightness; } else { if(Brightness - StepBrightness >= 0) Brightness -= StepBrightness; } } encoder_A_vorige = encoder_A; analogWrite(9, Brightness); CyclicTime = RealTime; } }
内容的提问来源于stack exchange,提问作者JohnDoe12
相关产品推荐
相关产品推荐

