arduino旋转编码器控制LED灯,调光台
arduino学习及使用
前言
使用arduino对旋转编码器进行控制,达到LED灯的慢慢亮起及慢慢熄灭。
一、旋转译码器型号及引脚接线图
旋转编码器接线:
VCC ----------------------------5V
GND ---------------------------GND
CLK ---------------------------7号引脚
DT -----------------------------6号引脚
LED接线:
VCC ----------------------------9号引脚
GND ---------------------------GND
二、代码示例
arduino代码
代码如下(示例):
#define encoderOutA 6 // CLK
#define encoderOutB 7 // DT
#define LED 9 // LED , must connect to pwm pin
int brightness = 0;
int State;
int old_State;
int val;
void setup() {
pinMode (encoderOutA, INPUT);
pinMode (encoderOutB, INPUT);
pinMode (LED, INPUT);
Serial.begin (9600);
//Read First Position of Channel A
old_State = digitalRead(encoderOutA);
}
void loop() {
State = digitalRead(encoderOutA);
if (State != old_State)
{
if (digitalRead(encoderOutB) != State)
{
brightness ++;
}
else {
brightness --;
}
if (brightness >= 100) brightness = 100;
if (brightness <= 0) brightness = 0;
val = brightness;
val = map(val,0,50,0,100);
Serial.print("brightness: ");
Serial.println(brightness);
}
old_State = State;
analogWrite(LED , val);
}
总结
map函数是为了将LED灯的 0~255 映射到 0-100,如有需要可自行更改。