Доброго времени суток народ. Вот в чём вопрос: Имеется полный скетч: void setup() { pinMode(9, INPUT); pinMode(10, INPUT); pinMode(11, INPUT); pinMode(12, INPUT); pinMode(8, INPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); } void loop() { boolean Q1 = digitalRead(8); boolean Q2 = digitalRead(12); boolean Q3 = digitalRead(11); boolean Q4 = digitalRead(10); boolean Q5 = digitalRead(9); if (Q1 && !Q2 && !Q3 && !Q4 && Q5) { digitalWrite(2, LOW); } if (!Q1 && Q2 && !Q3 && !Q4 && Q5) { digitalWrite(3, LOW); } if (Q1 && Q2 && !Q3 && !Q4 && Q5) { digitalWrite(4, LOW); } if (!Q1 && !Q2 && Q3 && !Q4 && Q5) { digitalWrite(5, LOW); } else { { digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); } } } Железка UNO & DTMF декодер mt8870. Хрень такая: Значит делаю только if (Q1 && !Q2 && !Q3 && !Q4 && Q5) { digitalWrite(2, LOW); } else { { digitalWrite(2, HIGH); } } } Реле на 4 группы (первое) срабатывает четко. Подключаю if (!Q1 && Q2 && !Q3 && !Q4 && Q5) { digitalWrite(3, LOW); }.... Первое перестаёт включаться, лишь слабенько загорается светодиод. Подключаю третье if (Q1 && Q2 && !Q3 && !Q4 && Q5) { digitalWrite(4, LOW); }..... И 1 и 2 реле горит слабенько светодиод, 3 включается. И так далее. WTF народ?! Полтергейст?
Дублировать вопросы не надо. Код надо оформлять правильно. У выходов Q очень малый допустимый нагрузочный ток (2,5 мА), еле хватает на светодиоды, поэтому надо усиливать транзисторными ключами.
Ок, извиняюсь. Так и подумал.... То есть декодер даже не может открыть атмеловский контроллер? Или я не понял? А что в коде не так?
3.39 миллиампер и 3.65 вольта на выходе дает DTMF декодер. А сколько надо, надо сколько.... Что то задумался я ...Для открытия порта ATMEL контроллера?
Просто умиляюсь глядя на все эти потуги. Взять готовый шилд с микроконтроллером на теле с 16 каналами вход/выход и аппаратным конфигурированием режимов, религия не позволяет? Цена вопроса и время на реализацию здесь отдыхают. И без единого скрипта
Релюхи вешаете прямо на выходы Ардуины между +5V и выходом ? И сколько они кушают при включении (каждая) ? Поставьте буферные транзисторы. Так, чтобы токи реле не текли через процессор Ардуины. Не забудьте демпферные диоды на реле и резисторы 1 ком между выходами Ардуины и базами тр-ров. Ваша Ардуина работает от 5 вольт ? Возможно причина в слишком малом напряжении "единицы" декодера - на грани стандарта (3.6 вольт) для 5-вольтовой логики. Если заработает - отпишитесь.
Ардуиной здесь и не пахнет, все управление по входам исключительно от DTMF генератора (Шим) и встроенного микроконтроллера класса 8051. На выходе получаем до 8 вариантов открытия 1 (5V, 60mA) или 0 длительностью входного импульса не менее 70ms. В вашем случае в качестве генератора ардуино и в Вашем скрипте нарушение DTMF протокола.