Тактовая кнопка

Max777
Offline
Зарегистрирован: 27.11.2018
int flag=0;
int pin1=A0;
int pin2=A1;
int pin3=A2;
int led1=4;
int led2=5;
int led3=6;
void setup()

{
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  pinMode(A2,INPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);

}

void loop()
{
  if (digitalRead(A0)==HIGH&&flag==0)
  {
   digitalWrite(4,!digitalRead(4));
   flag=1;
  }
  if (digitalRead(A0)==LOW&&flag==1)
  {
   flag=0;                               
  }
  if (digitalRead(A1)==HIGH&&flag==0)
  {
   digitalWrite(5,!digitalRead(5));
   flag=1;
   digitalWrite(6,!digitalRead(6));
   flag=1;
  }
  if (digitalRead(A1)==LOW&&flag==1)                                      
  {
   flag=0; 
   if (digitalRead(A2)==HIGH&&flag==0)
  {
  digitalWrite(4,!digitalRead(4));
   flag=1;
   digitalWrite(5,!digitalRead(5));
   flag=1;
   digitalWrite(6,!digitalRead(6));
   flag=1;
  }
  if (digitalRead(A2)==LOW&&flag==1)                                      
  {
   flag=0; 
  }
  if (digitalRead(A2)==LOW&&flag==1)                                      
  {                              
  }
}
}

Здравствуйте формумчане.Помогите пожалуйста разобраться со скетчем.Имеется 3 светодиода,3 кнопки(нефиксируемые) Проблема заключается в том, что необходимо нажать на кнопку несколько раз чтобы включился свтеодиод.Нужно чтобы 1 раз нажал,отпустил светодиод зажегся-нажал,отпустил светодиод потух.Я так понимаю дело в цикле, но не могу понять где че менять.Заранее спасибо

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Max777 пишет:

Здравствуйте формумчане.

Здравствуйте.

А Вы можете нормальными словами прокомментировать, что Вы делаете. Вставьте комментарии в программу. Глядишь, пока вставляете и разберётесь. А не разберётесь, опубликуете с комментариями.

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Притормозите программу - и все получится.

И еще - у Вас в строках 5-7 такие красивые переменные (зачем правда переменные не понятно, можно было обойтись #define), а Вы их не используете.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Повторите 3 раза #29   . Но сначала рекомендую разобраться

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Чтобы работало так как Вы описали, ножно как минимум свой флаг на каждую кнопку!

#define pin1 A0
#define pin2 A1
#define pin3 A2
#define led1 4
#define led2 5
#define led3 6

bool flag1;
bool flag2;
bool flag3;

void setup()
{
  pinMode(pin1,INPUT);
  pinMode(pin2,INPUT);
  pinMode(pin3,INPUT);
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
}

void loop()
{
  if (digitalRead(pin1)==HIGH&&flag1==0)
  {
    digitalWrite(led1,!digitalRead(led1));
    flag1=1;
  }
  if (digitalRead(pin1)==LOW&&flag1==1)
  {
    flag1=0;                               
  }

  if (digitalRead(pin2)==HIGH&&flag2==0)
  {
    digitalWrite(led2,!digitalRead(led2));
    digitalWrite(led3,!digitalRead(led3));
    flag2=1;
  }

  if (digitalRead(pin2)==LOW&&flag2==1)                                      
  {
    if (digitalRead(pin3)==HIGH&&flag3==0)
    {
      digitalWrite(led1,!digitalRead(led1));
      digitalWrite(led2,!digitalRead(led2));
      digitalWrite(led3,!digitalRead(led3));
      flag3=1;
      flag2=0;
    }
  }
  if (digitalRead(pin3)==LOW&&flag3==1)                                      
  {
    flag3=0; 
  }
}