Другие языки программирования и технологии

Нужно написать код на Arduino IDE

‌При включении ардуино включается реле (1) через n-время нажимается кнопка-концевик (1) и реле (1) останавливается. Через n-время включается реле (2) и так же через n-время останавливается кнопкой-концевиком (2). И снова через n-время проделываются действия (1). Также есть реле (3) которое должно включиться в n-время (1) и выключится в n-время (2) независимо от реле (1) и реле (2)
я не уверен что это все подходит ну написал.

void loop()
{
// свет включил
digitalWrite(Relay3 свет, HIGH); // или LOW // реле включено
// включил двиг
digitalWrite(Relay1 двиг, HIGH);
// проверка нажал ли двигатель на кнопку
// если кнопка была нажат то двигатель выключается
if (digitalRead(button кнопка 1) == HIGH) // или LOW // нажата ли кнопка
{
// если кнопка была нажат то двигатель выключается
digitalWrite(Relay1 двиг = LOW выкл)
// если нет то двигатель не выключается и код выполняется далее
}
// задержка 10 секунд как я понимаю
delay(10000);
// прошло 10 секунд
// включение реле2
digitalWrite(Relay2 двиг, HIGH);
// как это сделать я не знаю
// тут может быть if (relay2 = HIGH) {то двигаем двиг туда >}
// не знаю че дальше тут доходит до кнопки 2 и все не знаю че там
// или как проверить не знаю
// Выполнилась проверка или просто реле2 двигатель два включился
// и выполняем код
digitalWrite(Relay1 двиг, HIGH); // двигатель бежит куда то что ли
// доходит до кнопки 1 и останавливается как это проверить я не догоняю
// через 5 секунд выключается реле 3 свет
delay(5000);
// Выключение Реле3 свет
digitalWrite(Relay3 свет, LOW); //может LOW может HIGHT
// а вот N время или именно в нужное время как включить
// не знаю если вообще то что я написал тут это нормально
// то могу узнать наверно и как сверять часы там или
// как включить в N время если все это подходит.
// и может быть где тут выход из цикла или что то еще тоже хрен знает как все это делать.
}
Сергей Степанов
Сергей Степанов
3 061
Лучший ответ
.ниязбек. .эшбаев. Ну, спасибо и на том добр человек. Приду домой буду пытаться.
для концевиков нужно использовать прерывания...
Павел Петриков
Павел Петриков
85 055
Ничего не понял из данного запутанного ТЗ, но основные схемы просты

if (digitalRead(button) == HIGH) // нажата кнопка

digitalWrite(relay, HIGH); // включение реле
digitalWrite(relay, LOW); // выключение реле

time=millis(); // "засечка времени"
if(millis()>time+N) // "сработка" таймера

а теперь из этих "кубиков" собирай необходимые действия
.ниязбек. .эшбаев. Это я и сам нарыл, мне нужно как-то это все во едино собрать. Там одно if перекрывает другое.
Камо Даллакян Заведи одно или двухбайтные переменные для каждого из реле и крути из в таймере. Настрой скажем TIMER0 по переполнению. задай частоту и получишь что скажем каждые n переполнений счетчик увеличится на 1. Я не писал для ардуино. Пишу для меги и пиков, в основном на асме, но принцип один и тот же и да реле у тебя и так независимо включаются, ониже на отдельных пинах завязаны.
.ниязбек. .эшбаев. Более подробно: включается реле (3)"свет". Включается реле1(ход двигателя < ). Двигатель доходит до кнопки (1) и нажимает на неё. Эта кнопка останавливает реле (1). Проходит допустим 10секунд включается реле (2, ход двигателя >) доходит до кнопки (2) и останавливается. Проходит 10с
И реле (1 двигатель<) включается, доходит до кнопки 1и останавливается. Через 5 секунд выключается реле 3(свет)
Duman Tumetov ты ему китайские кубики дал у него ничего не будет работать или сломается сразу.