Arduino:Примеры/Button

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Перевел 364226 статей для сайта.</br>Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Кнопка [1]

Кнопки и переключатели, когда вы их используете, соединяют в электрической цепи две точки. В данном примере будет показано, как заставить светодиод (присоединенный к 13-му контакту) загораться каждый раз при нажатии на кнопку.

Необходимое оборудование

  • Плата Arduino;
  • Кнопка или переключатель;
  • Резистор на 10кОм;
  • Макетная плата Breadboard;
  • Провода-перемычки;

Цепь

Button Circuit.png

Подсоедините к Arduino три провода. Первые два (красный и черный) подключите к двум вертикальным рядам на крайней стороне макетной платы Breadboard, чтобы обеспечить доступ к контактам с «землей» (GND) и 5-вольтным напряжением. Третий провод протяните от 2-го цифрового контакта к одной из ног кнопки. Ту же ногу через стягивающий резистор подключите к «земле». Вторую же ногу подсоедините к 5-вольтовому напряжению.

Теперь, допустим, что на кнопку никто не нажимает – в этом случае связи между ногами кнопки не будет, поэтому 2-ой цифровой контакт будет по-прежнему подсоединен к «земле», и Arduino сочтет эту ситуацию как LOW. Теперь, допустим, на кнопку все же кто-то нажимает – это создает связь между обоими ногами, тем самым соединяя 2-ой цифровой и 5-вольтовый контакты, и Arduino сочтет эту ситуацию как HIGH.

Цепь можно построить и по-другому, поставив туда не стягивающий, а подтягивающий резистор, который будет постоянно держать входной контакт в значении HIGH, а LOW будет считываться только при нажатии на кнопку. В этом случае скетч нужно будет переписать таким образом, чтобы светодиод был по умолчанию в значении «вкл» и выключался лишь от нажатия на кнопку.

Если отсоединить цифровой контакт ото всего, то светодиод примется хаотично мигать. Это значит, что выходное значение будет «плавающим», т.е. беспорядочно переключающимся из LOW в HIGH и наоборот. Именно поэтому в цепи и нужны стягивающие/подтягивающие резисторы.

Схема

Button Schematic.png

Код

 1 /*
 2   Кнопка
 3  
 4  При нажатии на кнопку, подсоединенную ко 2-му контакту, включает и выключает светодиод, подключенный к 13-му цифровому контакту. 
 5  
 6  
 7  Цепь:
 8  * Светодиод подсоединен к 13-му контакту и «земле» 
 9  * Кнопка подсоединена ко 2-му и 5-вольтовому контактам
10  * Ко 2-му контакту через «землю» подключен резистор на 10 кОм 
11 
12  * Примечание: на большинстве Arduino уже есть светодиод, подключенный к 13-му контакту. 
13  
14  
15  создан в 2005 пользователем DojoDave <http://www.0j0.org>,
16  модифицирован 30 августа 2011 Томом Иго (Tom Igoe)
17  
18  Данный пример кода не защищен авторским правом.
19  
20  http://www.arduino.cc/en/Tutorial/Button
21  */
22 
23 // Тут вписываем константы – это постоянные (т.е. не меняющиеся) значения. Используем их, чтобы задать номера контактов: 
24 const int buttonPin = 2;     // задаем номер для контакта кнопки
25 const int ledPin =  13;      // задаем номер для контакта светодиода
26 
27 // Тут вписываем переменные – это значения, которые изменятся:
28 int buttonState = 0;         // переменная для считывания состояния кнопки
29 
30 void setup() {
31   // инициализируем контакт светодиода как выходной контакт:
32   pinMode(ledPin, OUTPUT);      
33   // инициализируем контакт кнопки как входной контакт:
34   pinMode(buttonPin, INPUT);   
35 }
36 
37 void loop(){
38   // считываем значение, соответствующее состоянию кнопки:
39   buttonState = digitalRead(buttonPin);
40 
41   // проверяем, не нажата ли кнопка.
42   // если нажата, переводим buttonState в HIGH:
43   if (buttonState == HIGH) {     
44     // включаем светодиод:    
45     digitalWrite(ledPin, HIGH);  
46   } 
47   else {
48     // выключаем светодиод:
49     digitalWrite(ledPin, LOW); 
50   }
51 }

См.также

  1. pinMode()
  2. digitalWrite()
  3. digitalRead()
  4. if()
  5. if/else()
  6. BareMinimum
  7. DigitalReadSerial
  8. Blink
  9. Debounce
  10. Button State Change

Внешние ссылки