Переключатель Arduino и код диммера светодиода

Мне нужно создать программу, в которой переключатель заставляет светодиод менять яркость при каждом нажатии переключателя. В приведенном ниже коде яркость светодиода изменяется по мере необходимости, но она не перестает изменяться, если переключатель удерживается нажатым. Мне нужно, чтобы он менялся только один раз при каждом нажатии переключателя. Как сделать так, чтобы при щелчке он менялся один раз и не переходил через другие значения яркости?

const int ledPin = 10;

int brightness = 0;
boolean up = 1;
int steps = 0;
int inpin = 2;
int reading;

void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode (inpin, INPUT);
}

void loop() {

  do{
    reading = digitalRead(inpin);
  }while (reading != HIGH);


    analogWrite(ledPin, brightness);
    delay(1000);
    if (up) 
    {
      brightness = brightness + 63;

    }
    else {
      brightness = brightness - 63;
    }
    steps = steps + 1;

    if (steps == 4)
      { 
        up = !up;
        steps = 0;
      }
}

person Rufus    schedule 06.01.2014    source источник


Ответы (1)


После изменения яркости дождитесь отпускания переключателя.

person Ignacio Vazquez-Abrams    schedule 06.01.2014