Wolf_Yout
@Wolf_Yout

Не могу сделать смену режима кнопкой, как?

Три сайта переехал, не то что мне надо, мой код:
int mode = 1;

void setup() {
  // put your setup code here, to run once:
  pinMode(3, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(mode==0) {
    digitalWrite(3, 1); //Зажигаем красный светодиод
    for(int i=0;i<=255;i++) { // Плавно добавляем зелёный
      analogWrite(6, i);
      delay(15);
    }
    delay(500);
    for(int i=255;i>=0;i--) { //Плавно выключаем красный
      analogWrite(3, i);
      delay(15);
    }
    delay(500);
    for(int i=0;i<=255;i++) { //Плавно добавляем синий
      analogWrite(9, i);
      delay(15);
    }
    delay(500);
    for(int i=255;i>=0;i--) { //Плавно выключаем зелёный
      analogWrite(6, i);
      delay(15);
    }
    delay(500);
    for(int i=0;i<=255;i++) { //Плавно Включаем красный
      analogWrite(3, i);
      delay(15);
    }
    delay(500);
    for(int i=255;i>=0;i--) { //Плавно выключаем синий
      analogWrite(9, i);
      delay(15);
    }
    delay(500);
  }
  if(mode==1) {
    digitalWrite(3, 1);
    delay(100);
    digitalWrite(3,0);
    digitalWrite(6,1);
    delay(100);
    digitalWrite(6,0);
    digitalWrite(9,1);
    delay(100);
    digitalWrite(9,0);
    digitalWrite(3,1);
  }
}

Я уже пытался сделать самую дефолтную смену, но проблема в том, что она не срабатывала из-за того, что прямо сейчас уже выполняется режим, побежал в интернет смотреть, как обычно с интеллектом гугла ничего не нашёл.
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
@kalapanga
Типичная беда начинающих. Всё это описано на каждом шагу. Очень удивительно, что ничего не нашли. Проблема в многочисленных вызовах delay() в этом коде. В это время реакции на кнопку нет. Решение проблемы можно посмотреть в примере "Blink without delay" идущем в поставке Arduino IDE. Основная трудность в том, что тут нельзя как-то быстро поправить этот скетч. Его нужно переписать заново, в другой логике, без использования функции delay().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы