Урок №3. Работа с кнопками и джойстиком

Доброго времени суток, это третий урок и сейчас мы научимся работать с кнопками и джойстиком которые имеются на нашей плате. Так как моргать светодиодами мы научились в предыдущем уроке, то сейчас мы будем опрашивать наши кнопки на факт нажатия и будем зажигать соответствующий светодиод. Задача не сложная, но перед тем как добиться результата, нужно понять много тонкостей при инициализации порта.

Приступим

.

Рассмотрим плату, сразу становится понятно что кнопки подключены к микроконтроллеру через перемычки "KEY JMP" и выведены на порт PD6, PD7 и PE6, PE7 на фото я отметил их зелёным цветом. Кнопку RESET мы использовать не сможем, так как она служит для перезагрузки нашего микроконтроллера.

Рассмотрим джойстик, видим что он также подключен к микроконтроллеру через перемычки "JOYSTICK JMP" и выведен на порты PG0-PG4 на фото отметил красным цветом. У джойстика 4 положения Вверх, Вниз, Влево, Вправо и имеется возможность нажать на него как на кнопку это мы тоже используем в нашей программе.

Если вы установили все нужные нам перемычки в замкнутое состояние как это показано на фотографиях выше, то можем приступать к программированию и разбираться с инициализацией портов.

Открываем Atmel Studio 6 и создаём новый проект называем его "3.Buttons_and_Joystick", сохраняем его там же "X:/OpenM128_Step_by_Step/". Микроконтроллер выбираем ATMega128, так как на борту нашей платы имеется именно этот МК.

В первой программе я покажу как реагировать на изменение состояния ножки порта в каждом цикле программы.

В данном примере мы инициализировали нужные нам порты для работы с кнопками и джойстиком. Что такое подтяжка на логическую единицу? Это состояние в котором микроконтроллер будет подавать положительный контакт на ножку порта у которой включена подтяжка, но если туда подключить светодиод гореть он не будет, потому что сила тока там минимальная. А так как кнопки у нас одной ногой подключены к GND то есть минусовому контакту, а второй ногой подключены к ножке МК которая имеет положительный контакт мы получаем понятную нам картину "Плюс на минус замыкание". Но в нашем случае это не так. Так как со стороны GND у нас нет сопротивления, а со стороны ножки МК у нас большое сопротивление ограничивающее силу тока до минимума, собственно когда мы нажмем на кнопку, ток убежит в сторону наименьшего сопротивления и вся цепь станет GND. Наша задача заключается в том, чтобы увидеть 0 на выводе порта.

На примере одной кнопки показано как отлавливать 0 на выводе порта D и зажигать светодиод.

Ну собственно весь листинг программы для работы со всеми кнопками и положениями джойстика.

Как это выглядит на плате можно убедиться ниже на фотографиях.

   

    

Я надеюсь Вам понятен смысл работы программы в данном уроке, если нет, прошу задавать вопросы комментариях, я постараюсь ответить и дополнить материал урока, чтобы максимально раскрыть всю суть.

Спасибо за внимание!

Традиционно, советы и вопросы в оставляйте в комментариях...

[ Предыдущий урок: Первая программа Hello World и прошивка платы ] [ Оглавление ] [ Следующий урок: Подключаем LCD 12864 и выводим текст ]



Комментарии 0
[ Написать ]