Попытка запрограммировать счетчик светодиодов Требует, чтобы светодиод мигал каждые 5 минут, однако он мигает дважды в секунду

Вот код, который я написал, я чувствую, что проблема заключается в том, как я использовал оператор if

int ledPinS = 13; //Классифицирует вывод 13 как подключенный к светодиоду
                //Мигает каждую секунду
int ledPinM = 12; //Классифицирует вывод 13 как подключенный к светодиоду
                //Мигает каждую минуту

byte seconds;

byte minutes;

  void setup() { 
   pinMode(ledPinS, OUTPUT);
   digitalWrite(ledPinS, LOW);
   pinMode(ledPinM, OUTPUT);
   digitalWrite(ledPinM, LOW);
  }

    void loop() {
     while (seconds<=59){//flash every second and reset when Seconds =59
     delay(900);
     digitalWrite(ledPinS,HIGH);
     delay(100);
     digitalWrite(ledPinS,LOW);
     seconds++;
    }
 delay(200);   // светодиодная вспышка M Один раз, когда секунды = 59
 digitalWrite(ledPinM,HIGH);
 delay(100);
 digitalWrite(ledPinM,LOW);
 seconds = 0;
 minutes++; // add a minute
 if(minutes=5){ // если минуты = 5, дважды мигните светодиодом и сбросьте  
          delay(200);
        digitalWrite(ledPinM,HIGH);
        delay(100);
        digitalWrite(ledPinM,LOW);
        delay(200);
        digitalWrite(ledPinM,HIGH);
        delay(100);
        digitalWrite(ledPinM,LOW);
        minutes = 0;
    }
}

Любая помощь будет признательна.

, 👍0

Обсуждение

ваш код очень плохо отформатирован ... правильный отступ очень важен, особенно для начинающего программиста, @jsotola


1 ответ


Лучший ответ:

0

Хотя ваш код ужасно отформатирован, он кажется в основном правильным.

Я также рекомендую сделать ваши контакты "const int". Это говорит компилятору, что они не могут быть изменены. В противном случае вы можете случайно изменить эти значения в своем коде.

У вас также есть неинициализированные переменные. Наилучшей практикой было бы объявить и инициализировать их одновременно. Например.

byte seconds = 0;

Реквизит для добавления комментариев, однако. Отлично сработано.

Вам нужен дополнительный знак равенства в вашем заявлении if.

if (minutes = 5) {

должно быть

if (minutes == 5) {

Классическая ошибка. Мы все это делали. Вы присваиваете значение 5 минутам вместо проверки на равенство. Это всегда будет возвращать истину.

,

Большое спасибо, я знаю, что я очень новичок в программировании на C++, вы мне очень помогли, спасибо., @Ben Seaman