Ви не увійшли.
Вот как раз запятые вмето do while(0), и скобки никчему, не?
Хотя, конечно, по красивому нужно do while и без запятых. Но для сельской местности пойдёт.)
Я бы писал примерно так:
#define PIN_A A0
#define PIN_B A1
#define PIN_C A2
#define high(x) digitalWrite(x, HIGH), pinMode(x, OUTPUT)
#define low(x) digitalWrite(x, LOW), pinMode(x, OUTPUT)
#define off(x) pinMode(x, INPUT)
#define DC0() off(PIN_A), off(PIN_B), off(PIN_C)
#define DC1() high(PIN_A), low(PIN_B), off(PIN_C)
#define DC2() low(PIN_A), high(PIN_B), off(PIN_C)
// ... и т.д. до DC6(), а в программе:
if (CONDITION1)
DC1();
else if (CONDITION2)
DC2();
// ...
else
DC0(); Сойдёт?
TTL уровни дальше на ключи и коммутируй хоть печку через гальваническую развязку
3-ми пинами элементарно управляется 6 оптронов, 4-мя - 12, 5-ю - 20 и т.д.
DDS пише:
Можно будет переназначить А0 и А6, провести рокировку так сказать. Или ставить дешифратор, вот только как его прописать пока не знаюЕсли не хватает цифровых выходов, то для вашей задачи (с взаимно исключающими сигналами), применить дешифратор будет наиболее разумно. Хотя перенос проекта на Ардуино Мега, сделать не сложно. Но врядли это оправдано.
Обычно всегда хватает, если просто подумать.) Например, 0 и 1 свободны. Либо LCD пустить через I2C. А там ещё, наверняка, вариантов несколько.) Полосовые фильтры что коммутируются TTL уровнями, либо там дальше ещё что-то?
A6, A7 - только аналоговые входа.(
Если неизвестно время исполнения (чужих) функций, заряжайте системный тик через прерывание по таймеру, в котором легко реализуются все клавишные фантазии.
А кормить разве нет? Не может быть!)
Короче , я понял, тут хрен дождешься реальной помощи, в основном все советуют учить язык, напрягать мозги и т.п. GREENу еще раз спасибо за реальную помощь, благодаря его коду я понял работу millis(). Куда пиво отправлять?)
Ну а как Вы хотите? Не напрягая мозги получить всё готовое?
Вы поймите правильно. Никто не будет просто ТАК на Вас тратить своё время. Заради чего? Если только уж совсем делать нечего (бывают исключения), либо на минуту делов.) Направление дали - а дальше уж сами, но разжовывать... Обижаться не надо - это жИзнь.) И дело не в пиве. Пиво - это чисто для приличия.)
Как минимум. И не только кормить, но и ухаживать. Но спросите об это лучше...)
А вы, что ожидали, что за вас здесь уроки сделают? Пиво отправляйте зеленому, я по пустякам не пью.
А зелёному пиво - как слону дробина!)))
А что делать! Это жИзнь!
- Вы знаете, что такое гусь?
- Знаю.
- Вы знаете, что такое шейка, ножка, крылышко! Вы знаете, как я люблю гуся!
))
Извините, я далеко не идеальный программист. Поэтому, считаю понятность текста программы первостепенной задачей ее изложения, даже если необходимо написать больше букв.
Согласен. Но я ленивый (как и все мы). Поэтому, зачем делать лишние телодвижения? Вопрос риторический.)
Я всегда говорю что один из вариантов научиться - это посмотреть как твою задачу решают другие. Пусть даже за деньги/пиво/водку...)
Вячеслав Азаров, а я обычно пишу типа next(state), дабы не придумывать метки для каждого (следующего) состояния автомата, особенно когда их много.)
Ну надо же! Беру свои слова обратно.)
А пивасик пож. Вячеславу Азарову. А лучше водка!)
) Осталось выбить у Лесной Вороны. Только, похоже, что там даже спасибо не дождёшься.((
Да простит меня, Вячеслав Азаров)
void loop(){ /////////LOOP/////////
if (digitalRead(button1Pin) == HIGH) { //Кнопка1 нажата, лед включен, статус вкл,
digitalWrite(led1Pin, HIGH);
led1OnTime = millis();
}
if(led1OnTime && millis() - led1OnTime > 10000) {
digitalWrite(led1Pin, LOW);
led1OnTime = 0;
digitalWrite(led2Pin, HIGH);
led2OnTime = millis();
}
if(led2OnTime && millis() - led2OnTime > 10000) {
digitalWrite(led2Pin, LOW);
led2OnTime = 0;
}
if (digitalRead(button2Pin) == HIGH) {
digitalWrite(led1Pin, LOW);
led1OnTime = 0;
digitalWrite(led2Pin, LOW);
led2OnTime = 0;
}
}
Пиво?
Ну да, судя по темпам их развития, мы дураки! Только не конкретно инженеры, а так, в целом.((
Как то покупаю почему то однотипные, китайские
, свои делать не рентабельно
с точки зрения затрат времени
, а Вам не по душе "пикантности"
? У ТС возникли "непонятки" и я попытался объяснить. Я что, что то не правильно написал? Не возражаю, подправьте
. По моему я написал что бывают в продаже разные, но судя по ситуации у ТС с опторазвязкой
. А почему "МодулЯ", а не модули
?
Все пользуются китайской продукцией, только я с возможностью инверсии не встречал просто. Правда и релейных модулей как то не приобретал ещё.) Пикантные - потому что углубились до переходов (а там и до дырок недалеко)).
А развязка там действительно не лишняя. Так значит, не такие уж и дураки китайские инженеры!))) Скорее, наоборот, за них можно порадоваться)). Только я бы сделал включение высоким уровнем, ибо низким многих вводит в ступор.(
ДО 2,5 кВ.) Не иметь гальванической связи с другим источником всегда приятно.)
С этой гальванической развязкой ключей реле, просто, какой-то нонсенс. Зачем она там нужна? У реле, и так, отличная изоляция катушки от коммутируемых цепей! Творчество, наверно.
Просто джампер между землёй и минусом релейной цепи забыли поставить.(
Всё нормально.) Там развязка от цепи питания реле. Нарисовано немного по дурному.
По поводу реле то тут все понятно, модули реле для ардуино как правило можно подключать в двух режимах с гальванической развязкой и без, при подключении через оптопару происходит инверсия, когда светодиод светится (1) то фототранзистор открывается сопротивление перехода эмиттер - коллектор маленькое поэтому напряжение на коллекторе тоже маленькое (равно падению на переходе) тем самым запирает ключ (транзистор) реле. При подключении без оптопары (переключается джампером на модуле) все работает "правильно"
.
Такие пикантные подробности.)) МодулЯ бывают разные. Может у Вас какой то свой?
Сима, хороший ты парень. Жаль что по русски не понимаешь.))
Единичка да единичка, одни единички... Кошмар. Дешифратор это называется.