Использование цифровых входов/выходов Arduino

Добавлено 7 ноября 2016 в 20:20

Цифровые входы и выходы (цифровые I/O) на платах Arduino позволяют подключать к Arduino датчики, приводы и другие микросхемы. Изучение того, как использовать их, позволит вам использовать Arduino для выполнения реально полезных вещей, таких как чтение состояния входных переключателей, подсветка индикаторов и управление релейными выходами.

Цифровые сигналы

В отличие от аналоговых сигналов, которые могут принимать любое значение в пределах диапазона, цифровые сигналы имеют только два отдельных значения: высокий (HIGH, 1) и низкий (LOW, 0) уровни. Вы можете использовать цифровые сигналы в ситуациях, где вход или выход будет принимать одно из этих двух значений. Например, одним из случаев, когда вы можете использовать цифровой сигнал, это включение и выключение светодиода.

Функции

В данной статье мы будем использовать следующие связанные с цифровыми сигналами функции Arduino:

  • pinMode()
  • digitalRead()
  • digitalWrite()
pinMode (pin_number, mode)
Поскольку цифровые I/O выводы Arduino могут использоваться в качестве и входа, и выхода, вы должны сначала настроить выводы, которые вы собираетесь использовать для цифрового ввода/вывода, с помощью данной функции. pin_number – это номер вывода, который вы хотите настроить. Режим, mode, может принимать одно из трех значений: INPUT, OUTPUT или INPUT_PULLUP. Когда mode устанавливается в значение INPUT_PULLUP, к выводу подключается внутренний подтягивающий резистор 20 кОм, чтобы привести уровень на выводе к значению HIGH, если к нему ничего не подключено.
digitalWrite(pin_number,value)
Данная функция записывает цифровое значение в вывод. pin задает, в какой вывод на плате Arduino будет записано цифровое значение, а value – это цифровое значение, в которое будет установлен вывод. value может принимать только значения HIGH и LOW.
digitalRead(pin_number)
Данная функция считывает цифровое значение из вывода. pin – это номер цифрового I/O вывода, который вы собираетесь прочитать. Данная функция возвращает одной из двух значений: HIGH или LOW

Эксперимент 1: мигание светодиодом, используя задержку

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

Необходимые комплектующие

Схема соединений

Схема соединений Arduino

На рисунке выше показано, как подключить светодиод и резистор 220 Ом к Arduino. Как показано, светодиод подключен к цифровому I/O выводу 8 платы Arduino через резистор. Резистор контролирует ток через светодиод. Программа ниже сначала настраивает вывод 8 на выход, затем устанавливает цифровой I/O вывод в состояние высокого уровня HIGH на 1000 мс, затем в состояние низкого уровня LOW на следующие 1000 мс.

Программа для эксперимента 1

const int led  =  8;     // использовать цифровой I/O вывод 8

void setup()
{
  pinMode(led,OUTPUT);   // установить вывод 8 в режим выхода
}

void loop()
{
  delay(1000);   	       // ждем 1000 миллисекунд 
  digitalWrite(led,HIGH);  // установить вывод 8 в состояние высокого уровня, включая светодиод
  delay(1000);   	       // ждем 1000 миллисекунд  
  digitalWrite(led,LOW);   // установить вывод 8 в состояние низкого уровня, выключая светодиод
}

Запуск эксперимента

  1. подключите анод светодиода к одному концу резистора, а другой конец резистора к цифровому I/O выводу 8 на плате Arduino;
  2. подключите вывод GND платы Arduino к катоду светодиода;
  3. подключите Arduino к компьютеру, используя USB кабель, и загрузите прошивку, используя программу Arduino IDE;
  4. подайте питание на плату Arduino, используя источник питания, батарею или USB кабель;
  5. светодиод должен начать мигать.

Эксперимент 2: мигание светодиодом, используя кнопку

Данный эксперимент не только демонстрирует, как использовать цифровой выход, но и как использовать цифровой вход. Нажатие кнопки, подключенной к цифровому входу, будет включать или выключать светодиод. Программа использует обе функции: и digitalWrite(), и digitalRead().

Необходимые комплектующие

Схема соединений

Схема соединений Эксперимент 2

Как вы можете видеть на диаграмме выше, мы теперь используем 2 цифровых I/O вывода платы Arduino. Светодиод подключен к выводу 8, который настроен как выход. Кнопка подключена к выводу 9, который настроен как вход. Когда кто-то нажимает на кнопку, состояние на выводе 9 устанавливается в высокий уровень, HIGH, и программа устанавливает на выводе 8 тоже высокий уровень и включает светодиод. Отпускание кнопки сбрасывает вывод 9 на низкий уровень, LOW. Программа при этом устанавливает низкий уровень и на выводе 8, что выключает светодиод.

Код

const int led    =   8; 	// называем вывод 8 для светодиода, как led
const int button =   9;		// называем вывод 9 для кнопки, как button 

void setup()
{
  pinMode(led,OUTPUT);		// устанавливаем вывод 8 на выход
  pinMode(button,INPUT)  ;	// устанавливаем вывод 9 на вход 
}

void loop()
{
  int reads = digitalRead(button);	// прочитать цифровое значение на выводе 9
  digitalWrite(led,reads);		    // установить цифровое выходное значение на выводе 8 в прочитанное значение 	
}

Запуск эксперимента

  1. соберите схему, как показано на рисунке выше;
  2. подключите Arduino к компьютеру, используя USB кабель, и загрузите прошивку, используя программу Arduino IDE;
  3. подайте питание на плату Arduino, используя источник питания, батарею или USB кабель;
  4. нажмете кнопку, чтобы зажечь светодиод. Отпустите кнопку, чтобы погасить светодиод.

Видео


На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.


Сообщить об ошибке