Как разделить режимы с использованием flag с одной кнопки на три кнопки

а новую схему можно увидеть (не фото, а схему)

Схема проекта нормальная, а код?

Код сейчас выглядит вот так. Подскажите, что в нем не так на данный момент. Как вы до этого советовали поправил.

int R_LedPin = 2;             // Подключаем красный светодиод к порту 2
int Y_LedPin = 3;             // Подключаем зеленый светодиод к порту 3
int ButPin = 7;               // Подключаем кнопку 1 к выходу 7
int ButPin2 = 8;              // Подключаем кнопку 2 к выходу 8
int ButPin3 = 6;              // Подключаем кнопку 3 к выходу 6
int flag = 0;                  // флаг состояния
int regim = 0;                 // Переключалка

void setup()
{
  pinMode(R_LedPin, OUTPUT);   
  pinMode(Y_LedPin, OUTPUT);
  // Установили тип пина
  pinMode(ButPin, INPUT_PULLUP);
  pinMode(ButPin2, INPUT_PULLUP);
  pinMode(ButPin3, INPUT_PULLUP);
 
}  

void loop()
{ 
if(digitalRead(ButPin) == LOW );
  {                                                 
      regim = 0;
        }
if(digitalRead(ButPin2) == LOW );
  {                                                 
      regim = 1;
        }
if(digitalRead(ButPin3) == LOW );
  {                                                 
      regim = 2;
        }          
   
// ======= Вполняем задачу при выборе режима =======
// РЕЖИМ 0: OFF
  if(regim == 0)
    {
      digitalWrite(R_LedPin, LOW);
      digitalWrite(Y_LedPin, LOW);
    }
    
// РЕЖИМ 1: R
  if(regim == 1)
    {
      digitalWrite(R_LedPin, HIGH);
      digitalWrite(Y_LedPin, LOW);
      delay(1000);
      digitalWrite(R_LedPin, LOW);
      digitalWrite(Y_LedPin, HIGH);
      delay(1000);  
    }

// РЕЖИМ 2: Y
  if(regim == 2)
    {
      digitalWrite(R_LedPin, HIGH);
      delay(1000);
      digitalWrite(R_LedPin, LOW);
      delay(1000);
      digitalWrite(Y_LedPin, HIGH);
      delay(100);
      digitalWrite(Y_LedPin, LOW);
      delay(100);

    }
    // РЕЖИМ 3: RY
  if(regim == 3)
    {
      digitalWrite(R_LedPin, HIGH);
      digitalWrite(Y_LedPin, LOW);
      delay(100);
      digitalWrite(R_LedPin, LOW);
      digitalWrite(Y_LedPin, HIGH);
      delay(100);
    }
  }

Режима 3 нет. Остально то работает, чему там не работать

Режим 3 убрал. Но проблема не в этом. Светодиоды уже заведомо моргают, вот в чем беда вся. А на кнопки просто 0 реакции.

Нажми и держи 3 секунды, получилось?

Держу, не получилось, светодиоды мигают дальше.

Странно, тестер есть? Какое напряжение на входе МК когда нажимаешь кнопку.

Тестер увы не нашел.

а что у тебя в первой строчке написано?? точка с запятой откуда??

так напишите… учитывая delay в коде остальное лишнее

(вот, как из примера выше объяснили)

не надо с больной головы на здоровую! Точки с запятой @Гриша у вас скопировал, они появляются у вас в коде сообщения 21. Он просто не обратил внимание.

вам надо повторить синтаксис основыных операторов Си, чтобы не писать бредятину

блин, седня не мой день :slight_smile: торможу… :slight_smile:

Хорошо, допустим это я ошибся, поставил точки с запятой, я их убрал, ничего не изменилось, светодиоды также горят.

показывайте

Просто примите за правило - исправили что-то в коде - тут же новым сообщением в форум

Хорошо

ищите не контакт, должно работать. С дюпонтами вечно засада…

Отличный аватар!!!

int R_LedPin = 2;             // Подключаем красный светодиод к порту 2
int Y_LedPin = 3;             // Подключаем зеленый светодиод к порту 3
int ButPin = 8;               // Подключаем кнопку 1 к выходу 7
int ButPin2 = 7;              // Подключаем кнопку 2 к выходу 8
int ButPin3 = 6;              // Подключаем кнопку 3 к выходу 6
int flag = 0;                  // флаг состояния
int regim = 0;                 // Переключалка

void setup()
{
  pinMode(R_LedPin, OUTPUT);   
  pinMode(Y_LedPin, OUTPUT);
  // Установили тип пина
  pinMode(ButPin, INPUT_PULLUP);
  pinMode(ButPin2, INPUT_PULLUP);
  pinMode(ButPin3, INPUT_PULLUP);
 
}  

void loop()
{ 
if(digitalRead(ButPin) == LOW )
  {                                                 
      regim = 0;
        }
if(digitalRead(ButPin2) == LOW )
  {                                                 
      regim = 1;
        }
if(digitalRead(ButPin3) == LOW )
  {                                                 
      regim = 2;
        }          
   
// ======= Вполняем задачу при выборе режима =======
// РЕЖИМ 0: OFF
  if(regim == 0)
    {
      digitalWrite(R_LedPin, LOW);
      digitalWrite(Y_LedPin, LOW);
    }
    
// РЕЖИМ 1: R
  if(regim == 1)
    {
      digitalWrite(R_LedPin, HIGH);
      digitalWrite(Y_LedPin, LOW);
      delay(1000);
      digitalWrite(R_LedPin, LOW);
      digitalWrite(Y_LedPin, HIGH);
      delay(1000);  
    }

// РЕЖИМ 2: Y
  if(regim == 2)
    {
      digitalWrite(R_LedPin, HIGH);
      delay(1000);
      digitalWrite(R_LedPin, LOW);
      delay(1000);
      digitalWrite(Y_LedPin, HIGH);
      delay(100);
      digitalWrite(Y_LedPin, LOW);
      delay(100);

    }
  }