Arduino цифровой ввод/вывод

February 2, 2012 by admin Комментировать »

pinMode (pin, mode)

Используется  в  void  setup  ()  для  конфигурации  заданного  вывода,  чтобы  он работал на вход (INPUT) или на выход (OUTPUT).

pinMode (pin, OUTPUT);     // устанавливаем ‘pin’ на выход

Цифровые выводы в Arduino предустановлены на вход, так что их нет нужды явно объявлять как INPUT с помощью pinMode (). Выводы, сконфигурированные как INPUT, подразумеваются в состоянии с высоким импедансом (сопротивлением).

В микроконтроллере Atmega, есть также удобные, программно доступные подтягивающие резисторы 20 кОм. Эти встроенные подтягивающие резисторы доступны следующим образом:

pinMode (pin, INPUT);         // настраиваем ‘pin’ на вход

digitalWrite (pin, HIGH);       // включаем подтягивающие резисторы

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

Выводы, сконфигурированные как OUTPUT, находятся в низкоимпедансном состоянии и могут отдавать 40 мА в нагрузку (цепь, другое устройство). Это достаточный  ток  для  яркого  включения  светодиода  (не  забудьте последовательный токоограничительный резистор!), но не достаточный для включения реле, соленоидов или моторов.

Короткое замыкание выводов Arduino или слишком большой ток могут повредить выходы или даже всю микросхему Atmega. Порой, не плохая идея — соединять OUTPUT вывод через последовательно включѐнный резистор в 470 Ом или 1 кОм.

digitalRead (pin)

Считывает значение заданного цифрового вывода (pin) и возвращает результат HIGH или LOW. Вывод должен быть задан либо как переменная, либо как константа (0-13).

value = digitalRead (Pin);               // задаѐм ‘value’ равным

// входному выводу ‘Pin’

digitalWrite (pin, value)

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

digitalWrite (pin, HIGH);       // устанавливаем ‘pin’ в высокое состояние

Следующий пример читает состояние кнопки, соединѐнной с цифровым входом, и включает LED (светодиод), подключѐнный к цифровому выходу, когда кнопка нажата:

int led = 13;        // соединяем LED с выводом 13

int pin = 7;          // соединяем кнопку с выводом 7

int value = 0;      // переменная для хранения прочитанного значения

void setup ()

{

pinMode (led, OUTPUT);     // задаѐм вывод 13 как выход

pinMode (pin, INPUT);         // задаѐм вывод 7 как вход

}

void loop()

{

value = digitalRead (pin);     // задаѐм ‘value’ равной

// входному выводу

digitalWrite (led, value);       // устанавливаем ‘led’ в

// в значение кнопки

}

analogRead (pin)

Считывает значение из заданного аналогового входа (pin) с 10-битовым разрешением. Эта функция работает только на аналоговых портах (0-5). Результирующее целое значение находится в диапазоне от 0 до 1023.

value = analogRead (pin);    // задаѐм значение ‘value’ равным ‘pin’

Примечание: Аналоговые выводы не похожи на цифровые, и нет необходимости предварительно объявлять их как INPUT или OUTPUT (если только вы не планируете использовать их в качестве цифровых портов 14-18).

analogWtite (pin, value)

Записывает псевдо-аналоговое значение, используя схему с широтно-импульсной модуляцией (PWM), на выходной вывод, помеченный как PWM. На новом модуле Arduino с  ATmega168 (328), эта функция работает на выводах 3, 5, 6, 9, 10 и 11. Старый модуль Arduino c ATmega8 поддерживает только выводы 9, 10 и 11. Значение может быть задано как переменная или константа в диапазоне 0-255.

analogWrite (pin, value);      // записываем ‘value’ в аналоговый ‘pin’

Значение 0 генерирует устойчивое напряжение 0 вольт на выходе заданного вывода; значение 255 генерирует 5 вольт на выходе заданного вывода. Для значений между 0 и 255 вывод быстро переходит от 0 к 5 вольтам — чем больше значение, тем чаще вывод в состоянии HIGH (5 вольт). Например, при значении 64 вывод будет в 0 три четверти времени, а в состоянии 5 вольт одну четверть; при значении 128 половину времени будет вывод будет в 0, а половину в 5 вольт; при значении 192 четверть времени вывод будет в 0 и три четверти в 5 вольт.

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

Примечание:  Аналоговые  выводы,  не  такие  как  цифровые,  и  не  требуют предварительной декларации их как INPUT или OUTPUT.

Следующий пример читает аналоговое значение с входного аналогового вывода, конвертирует значение делением на 4 и выводит PWM сигнал на PWM вывод:

int led = 10;        // LED с резистором на выводе 10

int pin = 0;          // потенциометр на аналоговом выводе 0

int value;            // переменная для чтения

void setup() {}     // setap не нужен

void loop()

{

value = analogRead (pin);    // задаѐт ‘value’ равной ‘pin’

value /= 4;                               // конвертируем 0 – 1023 в 0 – 255 analogWrite (led, value);       // выводим PWM сигнал на LED

}

Источник: Гололобов В. – С чего начинаются роботы. О проекте Arduino для школьников (и не только) – 2011

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты