Задержек не нужно
Вид для печати
Задержек не нужно
Chip, уже неудобно просить. :) помогай.
Вариант расширение кол-ва входов... Вроде разобрался, спаял. Запустил, написал тестовую прожку...
...но не работает. А конкретно:
1) терминал всегда кажет, что считывается единица, какой бы адрес ты не записывал.
2) прибором мерял выход мульт-ора, все подтверждается.
3) после подачи на входы 5в (в MUX), за диодами напр-е = 0,5в. Т.е. лог 0. Т.е. на входы высокий уровень не проникает, диоды режут.
4) Диоды поставлены 1N4148, те которые ты в свои проекты ставил.
5) ВСЕГДА на выходе мультиплекора лог 1.
:(
Прикрепляю схему подключения. И прогу:
Код:int addr_out_0 = 5;
int addr_out_1 = 6;
int addr_out_2 = 4;
int addr_in_state = 7;
void setup()
{
pinMode(addr_out_0, OUTPUT);
pinMode(addr_out_1, OUTPUT);
pinMode(addr_out_2, OUTPUT);
pinMode(addr_in_state, INPUT);
digitalWrite(addr_in_state, HIGH);
Serial.begin(115200);
}
int get_port_state(int index)
{
int b[3];
if (index == 0) {b[0] = 0; b[1] = 0; b[2] = 0;}
if (index == 1) {b[0] = 0; b[1] = 0; b[2] = 1;}
if (index == 2) {b[0] = 0; b[1] = 1; b[2] = 0;}
if (index == 3) {b[0] = 0; b[1] = 1; b[2] = 1;}
if (index == 4) {b[0] = 1; b[1] = 0; b[2] = 0;}
if (index == 5) {b[0] = 1; b[1] = 0; b[2] = 1;}
if (index == 6) {b[0] = 1; b[1] = 1; b[2] = 0;}
if (index == 7) {b[0] = 1; b[1] = 1; b[2] = 1;}
digitalWrite(addr_out_0, b[0]);
digitalWrite(addr_out_1, b[1]);
digitalWrite(addr_out_2, b[2]);
delay(5);
return (digitalRead(addr_in_state));
}
void loop()
{
Serial.println("");
for (int i=0; i<=7; i++)
{
Serial.print(get_port_state(i), BIN);
Serial.print(" ");
}
delay(500);
}
Ну ты даешь!!!
А подтягивать входы кто будет? В кардуине есть внутренние подтягивающие резисторы , а у мультиплексора их нет, так что 10к резистор на каждый вход и на +5в
Спасибо) А почему к плюсу подтягивать надо, а не к земле?
Потому что при таком включении диода он будет пропускать только (-)
А если развернуть диоды наоборот и подтянуть землю, то мона будет подавать на входы + ?
Будет много дыма :)
+12в на вход нельзя подавать
%) ойойой. У меня датчик скорости, там как я понял надо ловить импульс с плюсом. Как развязать, чтобы + подать?
off:
Execpt, а у тебя Consult I или II?