, ( ) .

.
- Arduino;
- ;
- ;
- ;
- 220 ;
- 2 10 ;
- .
, wikipwdia, )
, wikipedia .
:
- D11 D12 10 5V;
- GND;
- D9 220 , , GND.
:
, , )
enum {LED_PIN = 9, ENC_PIN1 = 11, ENC_PIN2 = 12};
int brightness = 120; //
int change = 10; //
void setup() {
pinMode(ENC_PIN1, INPUT);
pinMode(ENC_PIN2, INPUT);
pinMode(LED_PIN, OUTPUT);
}
//
// wilipedia
unsigned graydecode(unsigned gray) {
unsigned bin;
for (bin = 0; gray; gray >>= 1)
bin ^= gray;
return bin;
}
// grayValue -
// value -
// oldValue -
void loop() {
static uint8_t oldValue = 0;
uint8_t grayValue = digitalRead(ENC_PIN1) | (digitalRead(ENC_PIN2) << 1), value = graydecode(grayValue);
if (value == 0) //
{
if (oldValue == 3) { //
if (brightness + change <= 255) brightness += change;
}
else if (oldValue == 1) { //
if (brightness - change >= 0) brightness -= change;
}
}
analogWrite(LED_PIN, brightness); //
oldValue = value;
delay(1);
}
arduino