Использование цифровых входов/выходов 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. нажмете кнопку, чтобы зажечь светодиод. Отпустите кнопку, чтобы погасить светодиод.

Видео

Теги

ArduinoGPIOLED / СветодиодЦифровой входЦифровой выход

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

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.