.


: : admin


, ( ) .

Arduino.

.

  1. Arduino;
  2. ;
  3. ;
  4. ;
  5. 220 ;
  6. 2 10 ;
  7. .

, wikipwdia, )

, wikipedia .

:

  1. D11 D12 10 5V;
  2. GND;
  3. 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


:
Arduino


:



! !

.