Необходимо по кнопке включить / выключить устройство.
Причем программисту неизвестно к какому пину подключили это устройство.
Что исправить в этом коде, чтоб независимо от пина включилось устройство?
int LED ;
int i;
int BUTTON=2;
int val=0;
void setup()
{
for (i=1; i<=13;i++);{
LED=i;
pinMode(LED, OUTPUT); }
pinMode(BUTTON, INPUT);
}
void loop()
{ for (i=1; i<=13;i++);{
LED = i;
val=digitalRead(BUTTON);
if (val==HIGH)
{
digitalWrite(LED, HIGH);
}
else
{
digitalWrite(LED, LOW);
}
}
}
При данных вводных - никакие исправления не приведут к гарантированному результату.
b707
27.Ноябрь.2022 12:53:23
4
Прям представляю злорадную улыбку препода:
" - Ага… А устройство подключено к GND - не сдал!!"
1 лайк
b707
27.Ноябрь.2022 12:56:32
5
@Lopatin , у вас ведь код уже есть… вопрос-то в чем? Работает?
Это первая публикация Lopatin — поприветствуем его в нашем сообществе!
думаю, последняя
Код есть, только он не работает. При указании конкретного пина светодиод загорается
А мне нужно, чтоб загорался при любом пине
Если ещё и ; расставите правильно, то уже будет хорошо)))
1 лайк
b707
27.Ноябрь.2022 13:32:27
9
Для начала сформулируйте задание четко.
К каким пинам может быть подключено устройство - укажите диапазон или список.
Светодиод должен гореть пока кнопка нажата? Или при первом нажатии должен включится, при втором выключится?
Может проблема в том, что вы кнопку мало держите ?
ua6em
27.Ноябрь.2022 13:50:52
10
для начала строку 10 перенести на строку после 6
в простейшем случае так видимо:
int BUTTON = 2;
void setup()
{
pinMode(BUTTON, INPUT);
for (int i = 1; i <= 13; i++)
{
pinMode(i, OUTPUT);
}
}
void loop()
{
for (int j = 1; j <= 13; j++) {
if (digitalRead(BUTTON))
digitalWrite(j, !digitalRead(j));
}
delay(300);
}
b707
27.Ноябрь.2022 14:08:05
11
ну вот, началось
Давайте теперь любому лентяю, который даже букв не удосужился выучить - будем сообща писать поэмы.
ТС бери мой код, точно пятёрку получишь.
constexpr uint8_t BUTTON=2;
void setup() {
for (uint8_t i=3; i<=13;i++)
pinMode(i, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop() {
static bool click = 0;
click = digitalRead(BUTTON) ? 1 : 0;
for (uint8_t i=3; i<=13; i++)
digitalWrite(i, click);
delay(20);
}
ua6em
27.Ноябрь.2022 14:22:59
13
если сможет объяснить, но твой кот не работает по схеме нажал включил, нажал выключил
Может кнопка с фиксацией, кто же его знает.
b707
27.Ноябрь.2022 14:55:44
16
AndreyD:
static bool click = 0;
Представь, что тебя на экзамене спросили - зачем тут статик? Что ответишь?
Добавка - я уж не говорю про тернарный оператор…
b707
27.Ноябрь.2022 15:03:02
19
ааааа…
я в такие игры не играю.
Если вы у меня видите ошибку в коде - можете быть уверены, она настоящая, а не посаженная специально.
Я бы спросил зачем там ноль…