Перейти к содержанию

Лабораторная работа 7. Тактовая кнопка

Цель работы:

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

Теоретическая часть

Кнопка - механическое устройство, которое может замыкать и размыкать электрическую цепь по желанию человека. Есть множество видов кнопок, работающих по разным правилам. Например, тактовая кнопка (push button) замыкает цепь, только пока палец давит на неё. Кнопка на размыкание, напротив, разрывает цепь при нажатии.

Существуют также кнопки с группой контактов, одни из которых разрывают цепь при нажатии на кнопку, а другие в это время цепь замыкают. Маленькие версии таких кнопок часто называют микропереключателями (Рисунок 7.1). Рисунок 7.1. Микропереключатель

Рисунок 7.2. Кнопка с фиксацией Тактовые кнопки можно найти практически в каждом электронном приборе: в клавиатуре компьютера, в телефоне, в пульте от телевизора, и т.д. Существуют кнопки с фиксацией (Рисунок 7.2), работающие как кнопка на шариковой ручке: при нажатии на кнопку один раз — цепь замыкается, при нажатии второй раз — размыкается. Кнопки с фиксацией используют для переключения режима работы устройства. Примером такого применения кнопки с фиксацией является переключатель источ- ника питания между батареей и блоком питания.

Существуют и другие механизмы по механическому управлению то- ком, кроме кнопок, такие как тумблеры и рубильники.

Практическая часть

В данной лабораторной работе необходимо разработать программу, которая будет поочередно управлять включением и выключением светодиода при помощи механического нажатия на кнопку. Для опроса состсояния кнопки в среде Arduino IDE используется функция digitalRead.

Функция digitalRead.

Описание:

Функция digitalRead считывает значение с заданного входа – HIGH или LOW.

Синтаксис:

digitalRead (pin);

Параметры:

pin – номер входа/выхода пина, который необходимо считать.

Возвращаемое значение:

HIGH или LOW

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

К данной рабочей программе используется следующая схема под- ключения (Рисунок 7.3). Для реализации проекта потребуются следую- щие компоненты: макетная плата, резистор на 220 Ом (1 шт), резистор на 10 кОм (1 шт), светодиод (1 шт), тактовая кнопка (1 шт) и провода.

Рисунок 7.3. Схема подключения

После сборки

схема имеет следующий вид (Рисунок 7.4):

Рисунок 7.4. Внешний вид схемы после сборки

Рабочая программа:

#define button_pin 7
#define led_pin 8

// Определение булевой переменной flag, котора
// будет меняться при нажатии на кнопку. bool flag = LOW;
// Определение булевой переменной lastButton, которая
// будет запоминать предыдущее состояние кнопки. 
bool lastButton = LOW;
void setup() {
pinMode (led_pin, OUTPUT); 
}
void loop() {
// Считывание состояние кнопки
int currentButton = digitalRead(button_pin);
// Если кнопка нажималась и больше не нажимается,
// происходит исполнение функции с флагом.
if (lastButton == LOW && currentButton == HIGH) {
// Изменение состояния флага. 
flag = !flag;
// В зависимости от состояния флага включается
// или выключается светодиод 
digitalWrite(led_pin, flag); 
}
// Запоминание последнего состояния кнопки. 
lastButton = currentButton; 
}

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

Рисунок 7.5. Управление устроенными в плату светодиодами

Помимо этого, контроллер КПМИС позволяет воспользоваться уже встроенными в плату кнопками и светодиодами. Всего на плате имеется шесть кнопок и шесть светодиодов. В коде программы следующего при- мера идёт обращение к первой встроенной кнопке, подключенной к 35 пину и к светодиоду, подключенному к 22 пину (Рисунок 7.5).

Рабочая программа:

#define button_pin 35
#define led_pin 22
// Определение булевой переменной flag, которая
// будет меняться при нажатии на кнопку. bool flag = LOW;
// Определение булевой переменной lastButton, которая
// будет запоминать предыдущее состояние кнопки. 
bool lastButton = LOW;
void setup() {
pinMode (led_pin, OUTPUT); 
}
void loop() {
// Считывание состояние кнопки.
int currentButton = digitalRead(button_pin);
// Если кнопка нажималась и больше не нажимается,
// происходит исполнение функции с флагом. 
if (lastButton == LOW && currentButton == HIGH)
{
// Изменение состояния флага. 
flag = !flag;

// В зависимости от состояния флага включается

// или выключается светодиод. 
digitalWrite(led_pin, flag);

}

// Запоминание последнего состояния кнопки. 
lastButton = currentButton;

}

Список контрольных вопросов:

  1. Что такое кнопка?
  2. Какие виды кнопок бывают?
  3. Что такое микропереключатель?
  4. Какие еще существуют механизмы по управлению током механически?
  5. В каких устройствах используют кнопки?
  6. Как работает тактовая кнопка?
  7. Как на электрических схемах изображают кнопку?

Список дополнительных задач:

  1. Изменить схему, чтобы обеспечить аппаратное устранение дребезга.
  2. Подключить к схеме потенциометр, и изменить программу так, чтобы яркостью диода можно было управлять с помощью этого потенциометра.