Arduino:Примеры/Button: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 33: | Строка 33: | ||
== Код == | == Код == | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
Кнопка | Кнопка |
Текущая версия от 18:18, 14 мая 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Кнопка [1]
Кнопки и переключатели, когда вы их используете, соединяют в электрической цепи две точки. В данном примере будет показано, как заставить светодиод (присоединенный к 13-му контакту) загораться каждый раз при нажатии на кнопку.
Необходимое оборудование
- Плата Arduino - 1 шт.
- Кнопка или переключатель - 1 шт.;
- Резистор на 10 кОм - 1 шт.;
- Макетная плата - 1 шт.;
- Провода-перемычки;
Цепь
Подсоедините к Arduino три провода. Первые два (красный и черный) подключите к двум вертикальным рядам на крайней стороне макетной платы Breadboard, чтобы обеспечить доступ к контактам с «землей» (GND) и 5-вольтным напряжением. Третий провод протяните от 2-го цифрового контакта к одной из ног кнопки. Ту же ногу через стягивающий резистор подключите к «земле». Вторую же ногу подсоедините к 5-вольтовому напряжению.
Теперь, допустим, что на кнопку никто не нажимает – в этом случае связи между ногами кнопки не будет, поэтому 2-ой цифровой контакт будет по-прежнему подсоединен к «земле», и Arduino сочтет эту ситуацию как LOW. Теперь, допустим, на кнопку все же кто-то нажимает – это создает связь между обоими ногами, тем самым соединяя 2-ой цифровой и 5-вольтовый контакты, и Arduino сочтет эту ситуацию как HIGH.
Цепь можно построить и по-другому, поставив туда не стягивающий, а подтягивающий резистор, который будет постоянно держать входной контакт в значении HIGH, а LOW будет считываться только при нажатии на кнопку. В этом случае скетч нужно будет переписать таким образом, чтобы светодиод был по умолчанию в значении «вкл» и выключался лишь от нажатия на кнопку.
Если отсоединить цифровой контакт ото всего, то светодиод примется хаотично мигать. Это значит, что выходное значение будет «плавающим», т.е. беспорядочно переключающимся из LOW в HIGH и наоборот. Именно поэтому в цепи и нужны стягивающие/подтягивающие резисторы.
Схема
Код
/*
Кнопка
При нажатии на кнопку, подсоединенную ко 2-му контакту, включает и выключает светодиод, подключенный к 13-му цифровому контакту.
Цепь:
* Светодиод подсоединен к 13-му контакту и «земле»
* Кнопка подсоединена ко 2-му и 5-вольтовому контактам
* Ко 2-му контакту через «землю» подключен резистор на 10 кОм
* Примечание: на большинстве Arduino уже есть светодиод, подключенный к 13-му контакту.
создан в 2005 пользователем DojoDave <http://www.0j0.org>,
модифицирован 30 августа 2011 Томом Иго (Tom Igoe)
Данный пример кода не защищен авторским правом.
http://www.arduino.cc/en/Tutorial/Button
*/
// Тут вписываем константы – это постоянные (т.е. не меняющиеся) значения. Используем их, чтобы задать номера контактов:
const int buttonPin = 2; // задаем номер для контакта кнопки
const int ledPin = 13; // задаем номер для контакта светодиода
// Тут вписываем переменные – это значения, которые изменятся:
int buttonState = 0; // переменная для считывания состояния кнопки
void setup() {
// инициализируем контакт светодиода как выходной контакт:
pinMode(ledPin, OUTPUT);
// инициализируем контакт кнопки как входной контакт:
pinMode(buttonPin, INPUT);
}
void loop(){
// считываем значение, соответствующее состоянию кнопки:
buttonState = digitalRead(buttonPin);
// проверяем, не нажата ли кнопка.
// если нажата, переводим buttonState в HIGH:
if (buttonState == HIGH) {
// включаем светодиод:
digitalWrite(ledPin, HIGH);
}
else {
// выключаем светодиод:
digitalWrite(ledPin, LOW);
}
}
См.также
- pinMode()
- digitalWrite()
- digitalRead()
- if()
- if/else()
- BareMinimum
- DigitalReadSerial
- Blink
- Debounce
- Button State Change
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino
- Const
- Int
- Setup()
- Setup
- Void
- PinMode()
- PinMode
- OUTPUT
- INPUT
- DigitalRead
- DigitalRead()
- HIGH
- LOW
- PinMode(pin, OUTPUT)
- PinMode(pin, INPUT)
- If
- Else
- DigitalWrite
- DigitalWrite()
- DigitalWrite(pin, LOW)
- DigitalWrite(pin, HIGH)
- Плата Arduino
- Кнопка
- Резистор
- 10 кОм
- Макетная плата
- Провода-перемычки
- Резистор 10 кОм