Rotary Encoder LED Strip ljusstyrka Controller (4 / 7 steg)
Steg 4: Rotary Encoder + Arduino
Anslut trådarna som visas i bilder och test krets på arduino. Använda någon PWM utdata.
Här är koden:
//
int ljusstyrka;
osignerade långa currentTime;
osignerade långa loopTime;
CONST int pin_A = 2;
CONST int pin_B = 3;
int buttonPin = 4;
CONST int ledPin = 9;
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev = 0;
booleska lastButton = hög;
booleska currentButton = hög;
void setup() {
pinMode (ledPin, produktionen);
pinMode (pin_A, INPUT_PULLUP);
pinMode (pin_B, INPUT_PULLUP);
pinMode (buttonPin, INPUT_PULLUP);
currentTime = millis();
loopTime = currentTime;
}
Boolean debounce(boolean last)
{
booleska ström = digitalRead(buttonPin); om (sista! = nuvarande) {delay(5); ström = digitalRead(buttonPin);} returnera aktuell; }
void loop() {
currentButton = debounce(lastButton);
om (lastButton == hög & & currentButton == låg)
{
ljusstyrka = ljusstyrka + 255;
}
lastButton = currentButton;
om (ljusstyrka > 255) ljusstyrka = 0;
currentTime = millis();
om (currentTime > = (loopTime + 5))
{
encoder_A = digitalRead(pin_A);
encoder_B = digitalRead(pin_B);
IF((!encoder_A) & & (encoder_A_prev))
{
IF(encoder_B)
{
om (ljusstyrka + 5 < = 255) ljusstyrka + = 5.
}
annat
{
om (ljusstyrka - 5 > = 0) ljusstyrka-= 5.
}
}
encoder_A_prev = encoder_A;
analogWrite (ledPin, ljusstyrka);
loopTime = currentTime;
}
}
//