Микроэлектроника и Робототехника

...мы делаем сложные вещи простыми

  • Increase font size
  • Default font size
  • Decrease font size

РАБОТА С КНОПКОЙ МИКРОПАСКАЛЬ

E-mail Print PDF

В ряде соревнований по робототехнике судья дает команду на старт и с этого момента начинается отсчет времени, затрачиваемого роботом на прохождение трассы. Конечно, можно просто его включить, а можно запустить работу программы, просигнализировав роботу "пора" нажатием кнопки. Кнопок у нас две: СБРОС, ее нажатие приводит к немедленной перезагрузке микроконтроллера, и ПРОГ, которая используется при переводе робота в режим обновления программы. Ее можно использовать в своих целях.

На рисунке изображен фрагмент схемы, показывающий подключение кнопки ПРОГ:

Как видим, вывод 25 микроконтроллера (Порта Б, 4 разряд) подтянут резистором R3 к источнику напряжением 5 вольт, то есть 4 разряд Порта Б (он сконфигурирован как цифровой вход) равен 1. Если мы нажимаем кнопку ПРОГ, то вывод оказывается замкнут на землю и 4 разряд Порта Б становится равным 0. Обратите внимание, что короткого замыкания при этом не происходит, между источником напряжения и землей включен резистор сопротивлением 10 килоОм и ток через него, по закону Ома, будет равен всего 0,5 миллиампера.

То есть, для определения момента нажатия на кнопку нам надо проверять, чему равен 4 разряд порта Б. Мы сделаем это с использованием оператора ветвления:

IF УСЛОВИЕ THEN ОПЕРАТОР1 ELSE ОПЕРАТОР2;

Если значение условия истинно, то выполняется ОПЕРАТОР1, если ложно, то выполняется ОПЕРАТОР2. Для наглядности будем зажигать светодиод, если нажата кнопка ПРОГ и гасить его, если кнопка отпущена:

IF PORTB.4 = 0 THEN PORTB.0 := 1 ELSE PORTB.0 := 0;

Интересно, что точно такой же эффект получим при следующей записи выражения:

IF PORTB.4 = 1 THEN PORTB.0 := 0 ELSE PORTB.0 := 1;

Для того, что бы программа работала все время, заключим наше выражение в цикл по предусловию:

WHILE TRUE DO // делать всегда

IF PORTB.4 = 0 THEN PORTB.0 := 1 ELSE PORTB.0 := 0;          // если нажата кнопка, включить светодиод, если кнопка не нажата, выключить светодиод

 

(продолжение следует)

 

Last Updated on Tuesday, 01 November 2016 16:02  
Яндекс.Метрика