МК, Матрица кнопок + Светодиоды индикации ?

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Ср мар 06, 2013 08:47:51

Сообщение mega_mozg_13 »

Приветствую гуру. подскажите по такому вопросу.

Есть работающая схема опроса матрицы кнопок:
Изображение
колонки, порты МК AVR Atmega (PD4/PD5/PD6/PD7), иницируются в прошивке

Код: Выделить всё

 PORTB=0b00000000;
 PORTD=0b11110000;
  DDRD=0b00000000;
далее, по месту, пошагово переключаются строки и опрашивается матрица:

Код: Выделить всё

 // первая строка PB0
 btn_val=0; DDRB = (1<<DDB0); nop(); btn_val=(~(PIND>>4))&(0b00001111); DDRB = (0<<DDB0);
 // далее использование "btn_val", выделение статуса первых 4х кнопок
 ....
 // вторая строка PB1
 btn_val=0; DDRB = (1<<DDB1); nop(); btn_val=(~(PIND>>4))&(0b00001111); DDRB = (0<<DDB1);
 // далее использование "btn_val", выделение статуса следующих 4х кнопок
 ...
 // и т.д. опрос всех строк матрицы
Вопрос, можно ли вклинить в эту схему индикацию светодидом?
Что-бы в момент когда опрос матрицы не нужен, "отдавать" наружу свечение или мигание светодиодом.
Программно я смогу описать, помогите пожалуйста, не накосячить со схемой и не получить КЗ где нибудь на микрухе...
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Сообщение blackx »

Можно, просто добавится еще одна строка/столбец матрицы. В вашем случае скорее строка. Светодиод вместе с резистором устанавливается вместо обычного диода. Кстати, не очень хорошо, что ваша схема никак не ограничивает сквозной ток. - не так понял вашу схему :) У вас диоды не перевернуты ли?

Во время "опроса" светодиодов они будут просто загораться в зависимости от значения переменной btn_val (которое нужно перед этим установить).
Изображение only pure true norwegian blackx Изображение
Реклама
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Ср мар 06, 2013 08:47:51

Сообщение mega_mozg_13 »

blackx, уважаемый, задачка без добавления новых строк/колонок, свободных портов нет.
Я думал вот как: когда не включен опрос матрицы кнопок, переключать порты(и соответствующие пины конечно) наоборот:
-если при опросе порты D-вход, B-выход
-вне опроса порты
D-выход с "1" т.е. близким напряжением питания,
B-вход - чтобы его статус никак не влиял на процесс свечения, независимо от нажатой или отжатой кнопки

и к ножке "D-выход" через резистор от земли подкинуть светодиод.

выходит:
когда включен опрос, кнопка отжата, "D-вход" подтянут к питанию через 10ком - светодиод по идее не должен гореть
когда включен опрос, кнопка нажата, "D-вход" прижат к земле - светодиод точно не должен гореть
когда выключен опрос, "D-выход" отдает питание - светодиод горит (или не горит, в зависимости от "программного" назначения)

поправьте, пожалуйста, если не прав?
blackx писал(а): Кстати, не очень хорошо, что ваша схема никак не ограничивает сквозной ток. - не так понял вашу схему :) У вас диоды не перевернуты ли?
увы, я почти совсем не шарю в схемотехнике.
я взял работающее железо, но прошивка была написана на асме, и только заново переписал софтовую часть на си.
можно сказать я на 99% программист и только на 1% схемотехник.
поэтому и обращаюсь к вам сюда.
Последний раз редактировалось mega_mozg_13 Пн июн 03, 2013 17:51:04, всего редактировалось 1 раз.
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Сообщение blackx »

Понятно. Да, если просто зашунтировать кнопку и диод светодиодом с резистором то работать будет :) Нажатия кнопок при этом не будут ни на что влиять (обратный ток нигде не пойдет).
Изображение only pure true norwegian blackx Изображение
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «Теория»