Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.07.2010, 21:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
Сообщение от AVL
|
и "враги" не смогут легко "передрать" конструкцию .
|
Очень даже смогут. Это смотря какие враги попадутся ))))))))
Сообщение от niXto
|
Можно сделать все гораздо проще. Обычно на одних рядах матрицы висят единицы через подтягивающие резисторы, на других - появляются нули (или наоборот).
|
То же самое прекрасно делается и на биполярных транзючках. Нужно тольк оразобратся в полярностях импульсов. Коллектор к ножкам по которым считывается состояние, а эмитеры к ножкам которые формируют импульсы опроса. В базу подаём сигнал на замыкание через резистор, опять же соблюдая полярность.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
Последний раз редактировалось picavr; 20.07.2010 в 21:03.
|
|
|
|
20.07.2010, 21:23
|
|
Временная регистрация
Регистрация: 12.06.2006
Адрес: Україна
Сообщений: 95
Сказал спасибо: 19
Сказали Спасибо 19 раз(а) в 9 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
niXto, спасибо, понял.
Вот я набросал програмку для тиньки.
Если кому не сложно, гляньте, плз, не намутил-ли я с входами-выходами. Я о том, не будет-ли наш проц коротить клаву радиостанции.
// Пины Атиньки:
// 0 - вход датчика тревоги
// 1 - вход с клавиатуры
// 2 - выход на управление передатчиком
// 3 - выход на клавиатуру
while (1)
{
// Place your code here
if (PINB.0==0) // Если замкнут контакт датчика
{
PORTB.2=0; //Включаем передатчие
delay_ms(250); // Немного ждём
DDRB.3=0; // Делаем пин сканирования цифровой кнопки выходом
PORTB.3=PINB.1; // Копируем сигнал с входа на выход
}
else {
PORTB.2=1; // выключаем передатчик
PORTB.3=0; // Делаем выход входом, что б не коротил клавиатуру.
DDRB.3=0;
};
}
|
|
|
|
20.07.2010, 21:31
|
|
Прописка
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
Сообщение от AVL
|
if (PINB.0==0) // Если замкнут контакт датчика
|
А может разомкнут?
Сообщение от AVL
|
DDRB.3=0; // Делаем пин сканирования цифровой кнопки выходом
|
А может входом?
Сообщение от AVL
|
PORTB.3=0; // Делаем выход входом, что б не коротил клавиатуру.
|
Это регистр порта, а не направления он не может делать выход входом.
|
|
|
Сказали "Спасибо" harchenko_pavel
|
|
|
20.07.2010, 21:38
|
|
Временная регистрация
Регистрация: 12.06.2006
Адрес: Україна
Сообщений: 95
Сказал спасибо: 19
Сказали Спасибо 19 раз(а) в 9 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
Сообщение от harchenko_pavel
|
А может разомкнут?
|
Вроде замкнут, ибо замыкается он на "ноль", а в разомкнутом состоянии к плюсу резистором притянут.
С остальным написанным иду разбираться, читая даташит. Ибо последний раз что-то программил более года наза, всё забыл уже
|
|
|
|
20.07.2010, 23:25
|
|
Вид на жительство
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
Я кому рассказывал про замыкание в НУЖНОЕ время. нужно замыкать тогда когда скан приходит на нужную кнопку.
Ведь приемная линия строки матрицы обслуживает еще 4-6 столбцов.
Если мы просто замкнем и сделаем задержку, то будут "коротить"
все соседние кнопки!!
Так что никаких delay_ms
Все задержки делать нужно в цикле!!
PHP код:
|
// Пины Атиньки:
// 0 - вход датчика тревоги
// 1 - вход с клавиатуры для линии тангенты
// 4 - вход с клавиатуры для линии кнопки DTFM. Линии то могут быть разные там. Матрица!
// 2 - выход на управление передатчиком
// 3 - выход на клавиатуру
//зададим "зерно" частоты для задержки в цикле на нужное количество миллисекунд
#define XTALFQ 4000
//это значение множим на миллисекунды, получаем
примерную задержку для циклов.
unsigned long int delay_ms_custom;
///бла бла бла все дела по инициализации
// и тут кстати пишем наши первые значения для портов
DDRB.1=0; DDRB.4=0; //Входы делаем высокоомными
PORTB.1=0; PORTB.4=0;//И больше не трогаем!!!
DDRB.2=0; DDRB.3=0; //Выходы делаем для начала также
PORTB.3=0; PORT3.4=0;//высокоомными
while (1)
{
// Place your code here
if (PINB.0==0) // Если замкнут контакт датчика
{
delay_ms_custom=XTALFQ*250; //первый цикл по нажатию тангенты будет 0.25 секунды для подавления "дребезга"
PORTB.1=0; PORTB.4=0;
DDRB.2=1; DDRB.3=1; //Теперь выходы делаем выходами
PORTB.3=0; PORT3.4=0;// нулевым значением. Возможно в самом
//устройстве нужно будет первое значение задать единичное. В
//зависимости от того как работает скан в устройстве
//Т.Е. сканируются состояния перехода из высокого в
// низкие уровни или или из низкого в высокий
while(delay_ms_custom--)
{
// Жмем тангенту
PORTB.2=PINB.1;
}
delay_ms_custom=XTALFQ*1000; //Второй цикл будет держать и тангенту и DTFM. Будет это дело держаться целую секунду!.
while(delay_ms_custom--)
{
// Жмем тангенту
PORTB.2=PINB.1;
// и DTFM
PORTB.3=PINB.4;
}
DDRB.2=0; DDRB.3=0; //Вырубаем передатчик
PORTB.3=0; PORT3.4=0;//и DTFM методом переброса выходов в
//высокоомное состояние
}
|
__________________
Найди путь или проложи сам!
|
|
|
|
21.07.2010, 08:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
Сообщение от picavr
|
То же самое прекрасно делается и на биполярных транзючках
|
У биполярного ток базы может проникать через переходы на матрицу, особенно если разность напряжений больше 7 В. У полевика изолированный затвор и достаточно ничтожные емкости, если конечно не ставить 0,05-Ом канал
|
|
|
|
21.07.2010, 12:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
Сообщение от niXto
|
У биполярного ток базы может проникать через переходы на матрицу, особенно если разность напряжений больше 7 В. У полевика изолированный затвор и достаточно ничтожные емкости, если конечно не ставить 0,05-Ом канал
|
Но ТОК этот очень мал. Если нагрузкой (подтяжкой) является скажем резюки по 10 кОм. То 5В/10000= 0,5мА. Это ток коллектора. Ток базы будет в h21э (коэфициент усиления транзистора) раз меньше. Например коэф равен 200-500 (КТ3102 3107 или BC557 547)
Итого ток базы будет 0,5 мА / 300 = 1,6 мка. Для выходов PIC 20 мА, 1,6 мкА. НИЖТОЖНО МАЛ.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
Последний раз редактировалось picavr; 21.07.2010 в 12:24.
|
|
|
|
21.07.2010, 14:20
|
|
Временная регистрация
Регистрация: 12.06.2006
Адрес: Україна
Сообщений: 95
Сказал спасибо: 19
Сказали Спасибо 19 раз(а) в 9 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
MasterMushi, спасибо за замечание, но пока-что с твои кодом я не разбирался, ибо рискну с тобой не согласиться с тем, что будут коротить соседние кнопки. Ибо, на мой взгляд, нет принципиальной разницы чем мы коротим столбик и строчку и на сколько времени. Принципиально то, что б сигнал с одной шины переходил во вторую, а как и на сколько - без разныцы. Я пока-что ТАК думаю. Будет ОЧЕНЬ стындо, если я ошибаюсь ![Улыбка](images/smilies/icon_smile.gif) .
Зашил я в Тиньку свою прошивку. на макетке работает тинька так, как запланировано. Ближе к вечеру впузырю её в рацию и всё станет на свои места и я отпишусь о результатах. Ещё раз спасибо.
|
|
|
|
21.07.2010, 14:40
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
Сообщение от AVL
|
Ибо, на мой взгляд, нет принципиальной разницы чем мы коротим столбик и строчку и на сколько времени. Принципиально то, что б сигнал с одной шины переходил во вторую, а как и на сколько - без разныцы. Я пока-что ТАК думаю.
|
Та ну!? ![Рот до ушей](images/smilies/icon_doushei.gif)
Ключами мы просто замыкаем, а процом мы подаём определённый уровень в нужный момент, который, быстрее всего, ещё и согласовывать надо. ![Рот до ушей](images/smilies/icon_doushei.gif)
А то можно "подключиться и проститься".
|
|
|
|
21.07.2010, 15:39
|
|
Временная регистрация
Регистрация: 12.06.2006
Адрес: Україна
Сообщений: 95
Сказал спасибо: 19
Сказали Спасибо 19 раз(а) в 9 сообщении(ях)
|
Re: Как нажать на кнопку в матрице 4х4?
st_1, не согласен с тем, что процом мы подаём определённый уровень. Мы подаём сигнал на выход процы снятый со входа проца. То-есть дублируем на выходе вход, и если задержка прохождения через проц небольшая,то, возможно и нажмём НУЖНУЮ кнопку. Ближе к вечеру всё будет ясно
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:06.
|
|