Site Language

Translate

Russian Albanian Arabic Armenian Azerbaijani Belarusian Bulgarian Catalan Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Serbian Slovak Slovenian Spanish Swedish Turkish Ukrainian Yiddish

CashBack Реальный возврат при покупках в интернете

 

Дополнительные фунции ввода/вывода

Функция tone()

Генерирует на порту входа/выхода сигнал — прямоугольную "волну" заданной частоты и с 50 % рабочим циклом. Длительность может быть задана параметром, в противном случае сигнал генерируется до тех пор, пока не будет вызвана функция noTone(). К порту входа/выхода может быть подключен пьезо- или иной динамик для воспроизведения сигнала.

Воспроизводиться одновременно может только один сигнал. Если сигнал уже воспроизводится на одном порту, то вызов tone() с номером другого порта в качестве параметра ни к чему не приведет, если же tone() будет вызвана с тем же номером порта, то будет установлена новая частота сигнала.

Использование функции tone() помешает использовать ШИМ на портах входа/выхода 3 и 11 (кроме платы Arduino Mega).

Синтаксис:

tone(pin, frequency); tone(pin, frequency, duration);

Параметры:

 pin — номер порта входа/выхода, на котором будет генерироваться сигнал;

 frequency — частота сигнала в герцах;

 duration — длительность сигнала в миллисекундах.

Функция noTone()

Останавливает сигнал, генерируемый на порту входа/выхода, вызовом функции

Если сигнал не генерировался, то вызов noTone() ни к чему не приводит.

ЗАМЕЧАНИЕ

Если необходимы сигналы на разных портах, то следует сначала остановить один сигнал функцией noTone(), а лишь затем создавать новый сигнал на другом порту функцией Tone().

Синтаксис:

noTone(pin);

Параметр: pin — номер порта входа/выхода, на котором прекращается сигнал.

Функция shiftOut()

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

Такой способ передачи данных называется последовательным протоколом с синхронизацией. Он часто используется для взаимодействия микроконтроллеров с датчиками и сенсорами, а также другими микроконтроллерами. Последовательная передача с синхронизацией позволяет устройствам связываться на максимальной скорости. Смотрите также документацию (на англ. языке) по протоколу последовательного периферийного интерфейса (SPI, Serial Peripheral Interface Protocol).

Синтаксис:

shiftOut(dataPin, clockPin, bitOrder, value);

Параметры:

 dataPin — номер порта входа/выхода, на который выводятся биты (int);

 clockPin — номер порта, по которому производится синхронизация (int);

 bitOrder — используемая последовательность вывода битов. MSBFIRST (Most Significant Bit First) — слева или LSBFIRST (Least Significant Bit First) — справа;

 value — значение (байт) для вывода (byte).

ЗАМЕЧАНИЕ

Порт вывода (dataPin) и синхронизирующий порт (clockPin) должны быть предварительно сконфигурированы как порты вывода с помощью функции pinMode().

Текущая реализация функции shiftOut() может выводить только один байт (8 битов) информации, поэтому необходимо произвести несколько действий, чтобы вывести значения больше 255. Пример вывода

// Вывод будет MSBFIRST с первого (левого) бита int data = 500;

// выводим старший байт

shiftOut(dataPin, clock, MSBFIRST, (data >> 8));

// выводим младший бит

shiftOut(dataPin, clock, LSBFIRST, data);

// выводим старший бит

shiftOut(dataPin, clock, LSBFIRST, (data >> 8));

Пример вывода счетчика от 0 до 255 на сдвиговый регистр с последовательным вводом 74HC595

// Порт, подключенный к ST_CP 74HC595 int latchPin = 8;

// Порт, подключенный к SH_CP 74HC595 int clockPin = 12;

// Порт, подключенный к DS 74HC595 int dataPin = 11;

void setup()

{

// устанавливаем режим порта выхода pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT);

}

void loop()

{

for (int j = 0; j < 256; j++)

{

// устанавливаем LOW на latchPin, пока не окончена передача байта digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, LSBFIRST, j);

// устанавливаем HIGH на latchPin, чтобы проинформировать регистр, что

// передача окончена. digitalWrite(latchPin, HIGH); delay(1000);

}

}

Функция pulseIn()

Считывает длину сигнала на заданном порту (HIGH или LOW). Например, если задано считывание HIGH функцией pulseIn(), функция ожидает, пока на заданном порту не появится HIGH. Когда HIGH получен, включается таймер, который будет остановлен, когда на порту входа/выхода будет LOW. Функция pulseIn() возвращает длину сигнала в микросекундах. Функция возвращает 0, если в течение заданного времени (тайм-аута) не был зафиксирован сигнал на порту.

Возможны некоторые погрешности в измерении длинных сигналов. Функция может измерять сигналы длиной от 10 микросекунд до 3 минут.

Синтаксис:

pulseIn(pin, value); pulseIn(pin, value, timeout);

Параметры:

 pin — номер порта входа/выхода, на котором будет ожидаться сигнал;

 value — тип ожидаемого сигнала: HIGH или LOW;

 timeout — время ожидания сигнала (тайм-аут) в секундах (unsigned long).

Возвращаемые значения: длина сигнала в микросекундах или 0, если сигнал не получен до истечения тайм-аута (тип unsigned long).

Пример использования функции

int pin = 7;

unsigned long duration; void setup()

{

pinMode(pin, INPUT);

}

void loop()

{

duration = pulseIn(pin, HIGH);

}

 

Программирование, Типы данных int, Управляющие операторы, Унарные операторы, Логические операторы, Типы данных, Синтаксис, Операции с битами и байтами, Арифметические операторы, Внешние прерывания, Операторы сравнения, Унарные операторы, Унарные операторы, Дополнительные фунции ввода/вывода,  Логические операторы, Типы данных, Функции transfer(), Массивы, Константы, Цифровой ввод/вывод, Переменные, Преобразование типов данных, Функции digitalRead(), Цифровой ввод/вывод, Аналоговый ввод/вывод, Функции setBitOrder(), Функции digitalWrite(), Функции digitalRead(), Дополнительные фунции ввода/вывода, Генераторы случайных значений, Операции с битами и байтами, Внешние прерывания, Работа со временем, Математические функции, Математические функции, Тригонометрические функции, Тригонометрические, функции, Типы данных, Генераторы случайных значений, Функции digitalRead(), Типы данных int, Операции с битами и байтами, Функции digitalWrite(), Функции digitalRead(), Внешние прерыванияРабота со временем, Функции pinMode(), Функции attachInterrupt(), Функции analogReference(type),Синтаксис,  Арифметические операторы, Операторы сравнения, Функции setClockDivider(), Функции setDataMode(), Функции transfer(), Функции setBitOrder(), Функции digitalWrite(), Функции digitalRead(), Типы данных int, Программирование, Побитовый свдиг влево (<<), побитовый сдвиг вправо (>>), Управляющие операторы, Константы.

 

All Vintage Vinyl Records VinylSU.xyz

1.png2.png3.png4.png5.png