Функция map(value, fromLow, fromHigh, toLow, toHigh) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функция map(value, fromLow, fromHigh, toLow, toHigh)



Функция пропорционально переносит значение (value) из текущего диапазона зна­чений (fromLow.. fromHigh) в новый диапазон (toLow.. toHigh), заданный пара­метрами.

Функция map() не ограничивает значение рамками диапазона, как это делает функ­ция constrain(). Функция contsrain () может быть использована до или после вы­зова map (), если необходимо ограничить допустимые значения заданным диапазо­ном.

Обратить внимание, что "нижняя граница" может быть как меньше, так и больше "верхней границы". Это может быть использовано, чтобы "перевернуть" диапазон:

y = map(x, 1, 50, 50, 1);

Возможно использование отрицательных значений:

y = map(x, 1, 50, 50, -100);

Функция map() оперирует целыми числами. При пропорциональном переносе дробная часть не округляется по правилам, а просто отбрасывается.

Параметры:

- value — значение для переноса;

- fromLow — нижняя граница текущего диапазона;

- fromHigh — верхняя граница текущего диапазона;

- toLow — нижняя граница нового диапазона, в который переносится значение;

- toHigh — верхняя граница нового диапазона.

Возвращаемое значение — значение в новом диапазоне.

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

// Переносим значение с аналогового входа // (возможные значения от 0 до 1023) в 8 бит (0..255) void setup()

{;}

void loop()

{

int val = analogRead(0);

val = map(val, 0, 1023, 0, 255);

analogWrite(9, val);

}

 

Функция pow(base, exponent)

Вычисляет значение, возведенное в заданную степень. Функция pow() может воз­водить и в дробную степень.

Параметры:

-  base — число (тип float);

-  exponent — степень, в которую будет возводиться число (тип float). Возвращаемое значение — результат возведения в степень, число (тип double).

 

Функция sq(x)

Функция возвращает квадрат числа, заданного параметром.

Параметр: x — число, любой тип.

Возвращаемое значение — квадрат числа.

 

Функция sqrt(x)

Функция вычисляет квадратный корень числа, заданного параметром.

Параметры: x — число, любой тип.

Возвращаемое значение — квадратный корень числа (тип double).

 Тригонометрические функции

В языке представлены следующие тригонометрические функции: sin(); cos(); tan().

 

Функция sin(rad)

Возвращает синус угла, заданного в радианах в передаваемом параметре. Результат функции всегда в диапазоне -1.. 1.

Параметр: rad — угол в радианах (float).

Возвращаемое значение: синус угла (тип double).

Функция cos(rad)

Возвращает косинус угла, заданного в радианах в передаваемом параметре. Резуль­тат функции всегда находится в диапазоне -1.. 1.

Параметр: rad — угол в радианах (тип float).

Возвращаемое значение: косинус угла (тип double).

 

Функция tan(rad)

Возвращает тангенс угла, заданного в радианах в передаваемом параметре. Резуль­тат функции в диапазоне от минус бесконечности до плюс бесконечности.

Параметр: rad — угол в радианах (тип float).

Возвращаемое значение: тангенс угла (тип double).

 

Генераторы случайных значений

Функции формирования случайных чисел:

- randomSeed();

- random().

 

Функция randomSeed(seed)

Функция randomSeed() инициализирует генератор псевдослучайных чисел. Генери­руемая последовательность случайных чисел очень длинная, и всегда одна и та же. Точка в этой последовательности, с которой начинается генерация чисел, зависит от параметра seed.

Параметр: seed — параметр, задающий начало выдачи псевдослучайных значений на последовательности (тип int, long).

Функция random()

Функция random() возвращает псевдослучайное число.

Синтаксис:

random(max); random(min, max);

Параметры:

-  min — нижняя граница случайных значений, включительно (опционально);

-  max — верхняя граница случайных значений, включительно.

Возвращаемое значение: случайное число между min и max - 1 (тип long).

Если при каждом запуске программы необходимо получать разные последователь­ности значений, генерируемых функцией random (), то необходимо инициализиро­вать генератор псевдослучайных чисел со случайным параметром. Например, мож­но использовать значение, отдаваемое функцией analogRead() c неподключенного порта входа/выхода. В некоторых случаях необходимо получать одинаковую по­следовательность при каждом запуске программы на Arduino. Тогда инициализиро­вать генератор псевдослучайных чисел следует вызовом функции randomSeed() с фиксированным параметром.

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

long randNumber; void setup()

{

Serial.begin(9600);

}

void loop()

{

// выводим случайное число из диапазона 0..299 randNumber = random(300);

Serial.println(randNumber);

// выводим случайное число из диапазона 0..19 randNumber = random(10, 20);

Serial.println(randNumber); delay(50);

}

 

Операции с битами и байтами

Функции — операции с битами и байтами:

 

lowByte(); bitSet();
highByte(); bitClear();
bitRead(); bit()
bitWrite();  

 

Функция lowByte()

Извлекает младший (самый правый) байт переменной (например, типа word). Синтаксис:

lowByte(x);

Параметр: x — величина любого типа.

Возвращает байт.

 

Функция highByte()

Извлекает старший (крайний левый) байт слова (или второй младший байт больше­го типа данных).

Синтаксис:

highByte(x);

Параметр: x — величина любого типа.

Возвращает байт.

 

Функция bitRead()

Читает определенный бит переменной.

Синтаксис:

bitRead(x, n);

Параметры:

- x — число, из которого необходимо прочитать;

- n — указывает бит, который необходимо прочитать, начиная с 0 для младшего (правого) бита.

Возвращает: значение бита (0 или 1).

Функция bitWrite()

Записывает бит числовой переменной.

Синтаксис:

bitWrite(x, n, b);

Параметры:

- x — числовая переменная, в которую необходимо записать;

- n — номер бита, который необходимо записать, начиная с 0 для младшего (лево­го) бита;

- b — значение, которое необходимо записать в бит (0 или 1).

 

Функция bitSet()

Устанавливает (записывает 1) бит числовой переменной.

Синтаксис:

bitSet(x, n)

Параметры:

-  x — числовая переменная, которую необходимо записать;

-  n — номер бита, который необходимо установить, начиная с 0 для младшего (левого) бита.

 

Функция bitClear()

Сбрасывает (записывает 0) бит числовой переменной.

Синтаксис:

bitClear(x, n);

Параметры:

-  x — числовая переменная, которую необходимо записать;

-  n — номер бита, который необходимо установить, начиная с 0 для младшего (левого) бита.

 

Функция bit()

Вычисляет значение указанного бита (бит 0 — это 1, бит 1 — это 2, бит 2 — это 4 и т. д.).

Синтаксис:

bit(n);

Параметр: n — номер бита, который необходимо вычислить.

Возвращает: значение бита.

 

Внешние прерывания

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

Их всего две:

- attachInterrupt();

- detachInterrupt().

 

Функция attachInterrupt

Задает функцию обработки внешнего прерывания, т. е. функцию, которая будет вызвана по внешнему прерыванию. Если до этого была задана другая функция, то назначается новая. Вычисляет значение указанного бита (бит 0 — это 1, бит 1 — это 2, бит 2 — это 4 и т. д.).

Синтаксис:

attachInterrupt(interrupt, function, mode);

Параметры:

-  interrupt — номер прерывания:

1) 0 — на цифровом порту 2;

2) 1 — на цифровом порту 3;

3) 2 — на цифровом порту 21 (для Arduino Mega);

4) 3 — на цифровом порту 21 (для Arduino Mega);

5) 4 — на цифровом порту 21 (для Arduino Mega);

6) 5 — на цифровом порту 21 (для Arduino Mega);

-  function — функция, вызываемая прерыванием (должна быть без параметров и не возвращать значений);

-  mode — задает режим обработки прерывания, допустимо использование сле­дующих констанст:

1) low — вызывает прерывание, когда на порту low;

2) change — прерывание вызывается при смене значения на порту с low на high и наоборот;

3) rising — прерывание вызывается только при смене значения на порту с low на high;

4) falling — прерывание вызывается только при смене значения на порту с high на low.

Возвращаемого значения нет.

Внутри функции обработки прерывания не работает функция delay(), значения, возвращаемые функцией millis(), не изменяются. Возможна потеря данных, пере­даваемых по последовательному соединению (Serial data) в момент выполнения функции обработки прерывания. Переменные, изменяемые в функции, должны быть объявлены как volatile.

 

Функция detachInterrupt

Выключает обработку внешнего прерывания.

Синтаксис:

detachlnterrupt(interrupt);

Параметр: interrupt — номер прерывания (0 или 1), для Arduino Mega еще 2, 3, 4 или 5.

Возвращаемого значения нет.

Пример использования прерывания 0 при наступлении события change на порту 2. При этом светодиод на выводе 13 Arduino при каждом прерывании меняет статус (горит либо гаснет):

int pin = 13;

volatile int state = LOW;

void setup()

{

pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE);

}

void loop()

{

digitalWrite(pin, state);

}

// функция обработки прерывания void blink()

{

state =!state;

}


Контрольные вопросы:

 

1. Какие используются функции  цифрового ввода/вывода в программе Arduino?

2. Какие используются функции аналогового ввода/вывода в программе Arduino?

3. Какие используются дополнительные функции  в программе Arduino?

4. Какие используются функции времени в программе Arduino?

5. Какие математические функции используются  в программе Arduino?

6. Какие тригонометрические функции используются в программе Arduino?

7. Какие используются функции генераторов случайных величин в программе Arduino?

8. Какие используются функции операций с битами и байтами в программе Arduino?

9. Какие используются функции внешних прерываний в программе Arduino?

 

 



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 246; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.107.149 (0.031 с.)