Найти тему
Simple Radio

ATtiny 13 подключаем кнопку

Приветствую уважаемые читатели! В этой статье мы продолжим работать с микроконтроллером ATtiny13 в среде Arduino IDE. Разберем цифровые пины микроконтроллера, кратко пробежимся по некоторым моментам работы с ними и подключим кнопку.

В ATtiny13 нам доступно 6 цифровых пинов. На распиновке они обозначены синим цветом. Обращаться к ним можно как просто по номеру (0 – 5) так и по обозначению порта (PB0 – PB5).

Обозначение выводов ATtiny13
Обозначение выводов ATtiny13

Цифровой пин может находиться в одном из двух режимов, вход или выход. В режиме входа пин может считывать значение HIGH или LOW, то есть напряжение 0в или напряжение питания микроконтроллера. В нашем случае, это около 5 вольт. В режиме выхода пин выдает такие же значения.

Режим работы выбирается при помощи функции pinMode(pin, mode), где pin номер вход/выхода, для которого устанавливается режим. А mode – режим, то есть одно из двух значений: INPUT или OUTPUT. Вход или выход соответственно. По умолчанию все пины работают как входы. Так же стоит обратить внимание, что цифровые выходы микроконтроллера не предназначены для подключения мощной нагрузки. Они должны использоваться для управления другими устройствами и подключение к цифровому пину, чего-то мощнее чем светодиод, может вывести микросхему из строя. Так же, нельзя подавать на пин напряжение, выше, чем напряжение питания микроконтроллера.

Вывод и чтение цифрового сигнала, осуществляется с помощью функций digitalWrite(pin, value) и digitalRead(pin). Где pin – пин микроконтроллера, а value – значение HIGH или LOW, ну или включен, выключен.

Далее попробуем пару простых примеров. Подключим кнопку согласно схеме.

Схема подключения кнопки
Схема подключения кнопки

И пишем следующее.

-4

Теперь если нажать кнопку, светодиод будет гореть, если отпустить – погаснет.

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

Код
Код

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

Более правильный код
Более правильный код

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

Ниже представлен скетч, использующий функцию millis(). Такая конструкция занимает больше памяти (23%), но позволяет уйти от delay().

Код без delay()
Код без delay()

Таким образом, работа с цифровыми пинами ATtiny13 практически не отличается от работы с цифровыми пинами платы Arduino. Ссылки на скетч в конце статьи.

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

Спасибо, что дочитали статью до конца! Если вам понравилось, пожалуйста поставьте лайк. Если вам нравится данная тематика, подписывайтесь на мой канал. До новых встреч!

Скетч с delay()

Скетч с millis()

Предыдущие статьи:

  • Программирование ATtiny13 в Arduino IDE
  • ATtiny13 аналоговые входы, ШИМ