Stap 4: Roterende Encoder + Arduino
Sluit de draden zoals afgebeeld in foto's en test circuit op arduino. Gebruik een PWM-uitgang.
Hier is de code:
//
int helderheid;
unsigned long currentTime;
unsigned long 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;
Boole lastButton = hoog;
Boole currentButton = hoog;
VOID Setup {}
pinMode (ledPin, OUTPUT);
pinMode (pin_A, INPUT_PULLUP);
pinMode (pin_B, INPUT_PULLUP);
pinMode (buttonPin, INPUT_PULLUP);
currentTime = millis();
loopTime = currentTime;
}
Booleaanse debounce(boolean last)
{
Booleaanse huidige = digitalRead(buttonPin); Als (laatste! = huidige) {delay(5); huidige = digitalRead(buttonPin);} terug huidige; }
void loop {}
currentButton = debounce(lastButton);
Als (lastButton == HIGH & & currentButton == laag)
{
helderheid = helderheid + 255;
}
lastButton = currentButton;
Als de helderheid (helderheid > 255) = 0;
currentTime = millis();
Als (currentTime > = (loopTime + 5))
{
encoder_A = digitalRead(pin_A);
encoder_B = digitalRead(pin_B);
if((!encoder_A) & & (encoder_A_prev))
{
if(encoder_B)
{
Als (helderheid + 5 < = 255) helderheid += 5;
}
anders
{
Als (helderheid - 5 > = 0) helderheid-= 5;
}
}
encoder_A_prev = encoder_A;
analogWrite (ledPin, helderheid);
loopTime = currentTime;
}
}
//