кнопка вкл и выкл
- Войдите на сайт для отправки комментариев
Добрый день! использую ардуино уно
есть 10 кнопок и 8 светодиода! Нужно разделить на два режима. Первый режим - при нажатии на одну кнопку загорелись на 2сек первые 4 светодиода
Второй режим - при нажатии на другую кнопку загорелись остальные 4 светодиода на 6сек.
А остальные 8 кнопок при нажатии по отдельносьти на одну кнопку, должно загореться один светодиод на несколько секунд(неважно).
Мой код работает неисправно, подскажите что я написал не так! По отдельности они работатют, но как только соединить их в один код, работает только один режим, второй не работает.
int EM23 = A0;// светодиода
int EM24 = A1;
int EM25 = A2;
int EM26 = A3;
int BUTTON_EM14 = 8;//кнопка
int BUTTON_EM13 = 7;
int BUTTON_EM12 = 6;
int BUTTON_EM11 = 5;
int BUTTON_EM6 = 4;
int HD2 = 3;// светодиода
int HD3 = 2;
int HD4 = A4;
int HD5 = A5;
int BUTTON_HD19 = 13;//кнопка
int BUTTON_HD18 = 12;
int BUTTON_HD17 = 11;
int BUTTON_HD16 = 10;
int BUTTON_HD15 = 9;
void setup()
{
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(8, INPUT);
pinMode(7, INPUT);
pinMode(6, INPUT);
pinMode(5, INPUT);
pinMode(4, INPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
pinMode(13, INPUT);
pinMode(12, INPUT);
pinMode(11, INPUT);
pinMode(10, INPUT);
pinMode(9, INPUT);
}
void loop()
{
if ( digitalRead(8) == HIGH )
{
digitalWrite(A0, HIGH);
digitalWrite(A1, HIGH);
digitalWrite(A2, HIGH);
digitalWrite(A3, HIGH);// включаем светодиод
delay(2000); // ждем 2 секунды
digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);// выключаем светодиод
}
if ( digitalRead(7) == HIGH )
{
digitalWrite(A0, HIGH);
delay(2500);
digitalWrite(A0, LOW);
}
if ( digitalRead(6) == HIGH )
{
digitalWrite(A1, HIGH);
delay(2500);
digitalWrite(A1, LOW);
}
if ( digitalRead(5) == HIGH )
{
digitalWrite(A2, HIGH);
delay(2500);
digitalWrite(A2, LOW);
}
if ( digitalRead(4) == HIGH )
{
digitalWrite(A3, HIGH);
delay(2500);
digitalWrite(A3, LOW);
}
if ( digitalRead(13) == HIGH )
{
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
digitalWrite(A4, HIGH);
digitalWrite(A5, HIGH);// включаем светодиод
delay(6000); // ждем 6 секунд
digitalWrite(3, LOW);
digitalWrite(2, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);// выключаем светодиод
}
if ( digitalRead(12) == HIGH )
{
digitalWrite(3, HIGH);
delay(5000);
digitalWrite(3, LOW);
}
if ( digitalRead(11) == HIGH )
{
digitalWrite(2, HIGH);
delay(5000);
digitalWrite(2, LOW);
}
if ( digitalRead(10) == HIGH )
{
digitalWrite(A4, HIGH);
delay(5000);
digitalWrite(A4, LOW);
}
if ( digitalRead(9) == HIGH )
{
digitalWrite(A5, HIGH);
delay(5000);
digitalWrite(A5, LOW);
}
}
Я конечно так не пробовал, но разве можно использовать digitalWrite для аналогового выхода?:
правельнее было бы:
Поменял на аналог - мертво((((
Изучаем миллис и циклы. С делеем пока незакончится цикл ниодна кнопка работать небудет.
зачем циклы?
этот то код почему не работает? по идее я же не одновременно их включаю, 1 режим закончился, включаю второй режим...а уменя один режим работает, второй мертво
int EM23 = A0;//светодиод
int EM24 = A1;
int EM25 = A2;
int EM26 = A3;
int BUTTON_EM14 = 8;//кнопка
int BUTTON_EM13 = 7;
int BUTTON_EM12 = 6;
int BUTTON_EM11 = 5;
int BUTTON_EM6 = 4;
int HD2 = 3;//светодиод
int HD3 = 2;
int HD4 = A4;
int HD5 = A5;
int BUTTON_HD19 = 13;//кнопка
int BUTTON_HD18 = 12;
int BUTTON_HD17 = 11;
int BUTTON_HD16 = 10;
int BUTTON_HD15 = 9;
//int flag=0;
void setup()
{
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(8, INPUT);
pinMode(7, INPUT);
pinMode(6, INPUT);
pinMode(5, INPUT);
pinMode(4, INPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
pinMode(13, INPUT);
pinMode(12, INPUT);
pinMode(11, INPUT);
pinMode(10, INPUT);
pinMode(9, INPUT);
}
void loop()
{
if ( digitalRead(8) == HIGH )
{
analogWrite(A0, HIGH);
analogWrite(A1, HIGH);
analogWrite(A2, HIGH);
analogWrite(A3, HIGH);// включаем светодиод
delay(2000); // ждем 2 секунды
analogWrite(A0, LOW);
analogWrite(A1, LOW);
analogWrite(A2, LOW);
analogWrite(A3, LOW);// выключаем светодиод
}
if ( digitalRead(7) == HIGH )
{
analogWrite(A0, HIGH);
delay(2500);
analogWrite(A0, LOW);
}
if ( digitalRead(6) == HIGH )
{
analogWrite(A1, HIGH);
delay(2500);
analogWrite(A1, LOW);
}
if ( digitalRead(5) == HIGH )
{
analogWrite(A2, HIGH);
delay(2500);
analogWrite(A2, LOW);
}
if ( digitalRead(4) == HIGH )
{
analogWrite(A3, HIGH);
delay(2500);
analogWrite(A3, LOW);
}
if ( digitalRead(13) == HIGH )
{
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
digitalWrite(A4, HIGH);
digitalWrite(A5, HIGH);// включаем светодиод
delay(6000); // ждем 6 секунд
digitalWrite(3, LOW);
digitalWrite(2, LOW);
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);// выключаем светодиод
}
if ( digitalRead(12) == HIGH )
{
digitalWrite(3, HIGH);
delay(5000);
digitalWrite(3, LOW);
}
if ( digitalRead(11) == HIGH )
{
digitalWrite(2, HIGH);
delay(5000);
digitalWrite(2, LOW);
}
if ( digitalRead(10) == HIGH )
{
analogWrite(A4, HIGH);
delay(5000);
analogWrite(A4, LOW);
}
if ( digitalRead(9) == HIGH )
{
analogWrite(A5, HIGH);
delay(5000);
analogWrite(A5, LOW);
}
}
зачем циклы?
Чтобы опрос кнопок в нем устраивать пока выполнвется действие
А по нормальнтму разместить код можно?
зачем циклы?
чем опрос кнопок в лупе не устраивает?
azamat alimkhan, пожалуйста вставляйте код, как описано в http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
azamat alimkhan, пожалуйста вставляйте код, как описано
я запретил.
на 13 пин лучше ничего не вешать, а подтягивающие резисторы стоят?
Можно до A5 (на процессорах mega8/168/328). A6 и A7 (в корпусе TQFP32) - только входы.
еще раз, кнопку убрать с 13 пина. Есть ли подтягивающие резисторы?
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(8, INPUT);
pinMode(7, INPUT);
pinMode(6, INPUT);
pinMode(5, INPUT);
pinMode(4, INPUT);
не работает этот режим
зачем вообще давать имена портам если в скетче этим не пользоваться?
83 строка сменить пин на любой свободный кроме а6 и а7 и 13. соответственно на него и кнопку повесить.
еще раз. стоят ли подтягивающие резисторы?
ДА,подтягивающие резисторы стоят
да причем тут 13 пин, я говорю не работает режим который подключен к 8 пину
8-ой пин должен включать первые 4 светодиода, он НЕ включает
13 пин включает остальные 4 светодиода, он включает
поставь резистор, резистор , резистор, резистор, подтягивающие резистор, подтягивающие резистор
либо включи внутренний, но тогда при нажатии кнопки (замыкании) будет низкий уровень, соответственнр при отпущенной высокий
azamat alimkhan, Вы бы для начала опубликовали схему включения.
Без нее нет предмета для обсуждения - только домыслы.
Все мужики работает!!!!!Урааа