Технический форум по робототехнике.
Master » 24 июн 2008, 13:36
Ну он получается... хотя ХЗ может ничего и не случилось, если порты были настроены как входа.
snayperAlfa » 24 июн 2008, 13:38
Проверил тока шо тестером.Выставляется и 0 и 1 на ножках.
Добавлено спустя 1 минуту 29 секунд:Народ выложите ктото плиз пример обработки нажатий кнопок матрицы.Бо я уже запарился.

$ilent » 24 июн 2008, 13:45
1. Настраиваешь три ноги на выход, четыре на вход.
2. на одну из трёх 1, на остальных 0.
3. проверяешь на какой из четырёх появился 1.
Если на какой-то появился, значит была нажата клавиша соединяющая эти ноги.
И т.д по остальным двум ногам.
И всё это дело в бесконечный цикл.
Не забывая проверять удержание и избываление от дребезга.
snayperAlfa » 24 июн 2008, 13:49
Спасибо щас попробую этот алгоритм
blindman » 24 июн 2008, 15:44
А на фига там лишняя нога к клавиатуре? Для матрицы 3х4 достаточно 7 ног, для 4х4 - 8
snayperAlfa » 24 июн 2008, 17:24
Если я использую 7 проводов то резисторы цеплять на каждый провод?
У меня такой прикол с наводками:тока подношу руку и сразу сигнал как будто я нажал на кнопку
Добавлено спустя 5 минут 59 секунд:
Киньте ктото кусок кода на Си для определения нажатых кнопок.
blindman » 24 июн 2008, 17:29
Выходы МК к матрице через диоды, входы - через резисторы. Диоды катодом в выходам, входы подтянуть к плюсу внутренними резисторами МК
$ilent » 24 июн 2008, 17:42
snayperAlfa писал(а):Если я использую 7 проводов то резисторы цеплять на каждый провод?
У меня такой прикол с наводками:тока подношу руку и сразу сигнал как будто я нажал на кнопку
Добавлено спустя 5 минут 59 секунд:
Киньте ктото кусок кода на Си для определения нажатых кнопок.
1. Земли нет.
2. В сети их полно. Лентяев ни кто не любит.
snayperAlfa » 24 июн 2008, 19:14
Вот я тут накидал схему клавы
Потом такой код
- Код: Выделить всё • Развернуть
void main(void)
{
DDRC= 0b11110000;
PORTC=0b00001110;
// LCD module initialization
lcd_init(16);
lcd_clear();
while (1)
{
int i;
if(!PINC.1 && !PINC.5 && !PINC.6 && !PINC.7 )
{
delay_ms(50);
lcd_clear();
printf("%d BT 1 PRESSED",i);
i++;
}
if(PINC.4==0 && PINC.2==0)
{
delay_ms(50);
lcd_clear();
printf("%d BT 2 PRESSED",i);
i++;
}
};
}
Я не могу додумать нормальное условие проверки
AlexCH » 24 июн 2008, 19:47
Апноут 242 на русском языке посмотри. Вроде на gaw.ru лежит. Там нет в схеме диодов.
Работает отлично.
snayperAlfa » 25 июн 2008, 00:25
СПАСИБО!!!!!Сделал для одной строчки.Завтра сганяю на радиобазар, куплю резисторов,бо не хватило. Оказвывается МК переключает состояние ног с DDRC= 0b11110000; PORTC=0b00001110; на DDRC= 0b00001110;PORTC=0b11110000; не за 0 секунд.Пришлось ввести задержку 50мс.
Добавлено спустя 3 часа 16 минут 34 секунды:
Тут вопрос образовался НЕ по теме.По поводу программатора от протосса.Размер файла прошивки hex 13 Кб.Памяти на Мега8 8 Кб. Логичный вопрос:как он туда залез?
Victorovych » 25 июн 2008, 00:37
Читай Маркса

snayperAlfa » 25 июн 2008, 00:48
Ниче там не понял.
Myp » 25 июн 2008, 01:33
аааа
клёво
я тоже об этом думал но стеснялся спросить
а теперь всё ясно

Master » 25 июн 2008, 10:46
И что тебе ясно? Я лично тоже нифига не понял.