Загрузка данных


#define BUTTON_PIN 3
#define LED_PIN 5

int buttonState = 0;
int lastButtonState = 0;
int count = 0;
int i = 0;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  buttonState = digitalRead(BUTTON_PIN);

  // Ловим нажатие без использования символа & (через вложенные if)
  if (buttonState == 0) {
    if (lastButtonState == 1) {
      delay(50); // антидребезг
      count = count + 1;

      // Если это ровно 3-е нажатие
      if (count == 3) {
        i = 0;
        
        // Набираем яркость пока кнопка удерживается (до 3 секунд / 300 шагов по 10 мс)
        while (i < 300) {
          if (digitalRead(BUTTON_PIN) == 0) {
            analogWrite(LED_PIN, map(i, 0, 300, 0, 255));
            delay(10);
            i = i + 1;
          } else {
            break;
          }
        }
        
        // Когда отпустили кнопку или вышло время — выключаем и сбрасываем
        analogWrite(LED_PIN, 0);
        count = 0;
      }
    }
  }

  // Сброс счетчика, если нажали больше 3 раз
  if (count > 3) {
    count = 0;
  }

  lastButtonState = buttonState;
}