Тактовая кнопка
- Войдите на сайт для отправки комментариев
Сб, 22/12/2018 - 13:38
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 раз нажал,отпустил светодиод зажегся-нажал,отпустил светодиод потух.Я так понимаю дело в цикле, но не могу понять где че менять.Заранее спасибо
Здравствуйте формумчане.
Здравствуйте.
А Вы можете нормальными словами прокомментировать, что Вы делаете. Вставьте комментарии в программу. Глядишь, пока вставляете и разберётесь. А не разберётесь, опубликуете с комментариями.
Притормозите программу - и все получится.
И еще - у Вас в строках 5-7 такие красивые переменные (зачем правда переменные не понятно, можно было обойтись #define), а Вы их не используете.
Повторите 3 раза #29 . Но сначала рекомендую разобраться
Чтобы работало так как Вы описали, ножно как минимум свой флаг на каждую кнопку!
#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; } }