Arduino.Функции

Arduino.Функции

https://t.me/HotCheatSheet
Цифровой ввод/вывод

pinMode() — конфигурирует режим работы указанного вывода: как вход либо как выход.

Синтаксис:

pinMode(pin, mode) 

Параметры:

pin: номер вывода, режим работы которого будет конфигурироваться.

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

Возвращаемые значения:

Нет

Пример:

int ledPin = 13;                 // Светодиод подсоединен к цифровому выводу 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // устанавливаем режим работы вывода, как "выход"
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // включаем светодиод
  delay(1000);                  // ждем 1 секунду
  digitalWrite(ledPin, LOW);    // выключаем светодиод
  delay(1000);                  // ждем 1 секунду
}


digitalWrite() — отправляет на цифровой вывод значение HIGH или LOW.

Синтаксис:

digitalWrite(pin, value) 

Параметры:

pin: номер вывода

value: значение HIGH или LOW

Возвращаемые значения:

нет

Пример:

int ledPin = 13;                 // светодиод подключен к выводу 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // переключаем цифровой вывод в режим выхода
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // включаем светодиод
  delay(1000);                  // ждем 1 секунду
  digitalWrite(ledPin, LOW);    // выключаем светодиод
  delay(1000);                  // ждем 1 секунду
}


digitalRead() — cчитывает уровень сигнала HIGH или LOW с указанного цифрового вывода.

Синтаксис:

digitalRead(pin)

Параметры:

pin: номер цифрового вывода, с которого необходимо считать значение (int)

Возвращаемые значения:

HIGH или LOW

Пример:

int ledPin = 13; // светодиод подсоединен к цифровому выводу 13
int inPin = 7;   // кнопка подсоединена к цифровому выводу 7
int val = 0;     // переменная для хранения считанного значения

void setup()
{
  pinMode(ledPin, OUTPUT);      // конфигурируем цифровой вывод 13 как выход
  pinMode(inPin, INPUT);      // конфигурируем цифровой вывод 13 как вход
}

void loop()
{
  val = digitalRead(inPin);   // считываем значение со входа
  digitalWrite(ledPin, val);    // выводим на светодиод уровень сигнала на кнопке
}


Аналоговый ввод/вывод

analogReference() — устанавливает источник опорного напряжения, использующийся при считывании аналогового сигнала (другими словами, задает максимальное значение входного диапазона).

Параметры:

type: тип источника опорного напряжения (DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56 или EXTERNAL).

Возвращаемые значения:

Нет.


analogRead() — считывает величину напряжения с указанного аналогового вывода.

Синтаксис:

analogRead(pin) 

Параметры:

pin: номер вывода, с которого будет считываться напряжение (0 - 5 для большинства плат, 0 - 7 для Mini и Nano, 0 - 15 для Mega)

Возвращаемые значения:

целое число int (от 0 до 1023)

Пример:

int analogPin = 3;     // ползунок потенциометра (средний вывод) подключен к аналоговому выводу 3
                       // крайние выводы соединены с землей и +5В
int val = 0;           // переменная для хранения считанного значения

void setup()
{
  Serial.begin(9600);          //  настройка последовательного соединения
}

void loop()
{
  val = analogRead(analogPin);    // считываем напряжение с аналогового входа
  Serial.println(val);            // наблюдаем считанное значение
}


analogWrite() — формирует заданное аналоговое напряжение на выводе в виде ШИМ-сигнала.

Синтаксис:

analogWrite(pin, value)

Параметры:

pin: вывод, на котором будет формироваться напряжение.

value: коэффициент заполнения – лежит в пределах от 0 (всегда выключен) до 255 (всегда включен).

Возвращаемые значения:

нет

Пример:

int ledPin = 9;      // светодиод подключен к цифровому выводу 9
int analogPin = 3;   // потенциометр подключен к аналоговому выводу 3
int val = 0;         // переменная для хранения считанного значения

void setup()
{
  pinMode(ledPin, OUTPUT);   // переключение вывода в режим «выход»
}

void loop()
{
  val = analogRead(analogPin);   // считываем входное напряжение
  analogWrite(ledPin, val / 4);  /* значения, возвращаемые analogRead лежат в пределах от 0 до 1023, 
       а задаваемый коэффициент analogWrite – от 0 to 255*/
}


Расширенный ввод/вывод

tone() — генерирует на выводе прямоугольный сигнал заданной частоты (с коэффициентом заполнения 50%). Функция также позволяет задавать длительность сигнала.

Синтаксис:

tone(pin, frequency)

tone(pin, frequency, duration)

Параметры:

pin: вывод, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах - unsigned int

duration: длительность сигнала в миллисекундах (опционально) - unsigned long

Возвращаемые значения:

нет


noTone() — прекращает генерирование прямоугольного сигнала после использования функции tone().

Синтаксис:

noTone(pin) 

Параметры:

pin: вывод, на котором следует прекратить генерирование сигнала

Возвращаемые значения:

нет


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

Синтаксис:

shiftOut(dataPin, clockPin, bitOrder, value)

Параметры:

dataPin: вывод, которому будет отправляться каждый бит из сдвигаемого байта данных (int)

clockPin: тактовый вывод, который будет переключаться каждый раз, когда на выводе dataPin устанавливается корректное значение (int)

bitOrder: характеризует порядок, в котором будут сдвигаться и выводиться биты; может принимать значения MSBFIRST или LSBFIRST. (Most Significant Bit First - старший значащий бит первым, или Least Significant Bit - младший значащий бит первым)

value: сдвигаемый байт данных (byte)

Возвращаемые значения:

нет


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

Синтаксис:

byte incoming = shiftIn(dataPin, clockPin, bitOrder)

Параметры:

dataPin: вывод, с которого будет считываться каждый бит (int)

clockPin: тактовый вывод, который будет переключаться при считывании с dataPin

bitOrder: порядок, в котором будут сдвигаться и считываться биты; может принимать значения MSBFIRST или LSBFIRST. (Most Significant Bit First - старший значащий бит первым, или Least Significant Bit - младший значащий бит первым)

Возвращаемые значения:

считанное значение (byte)


pulseIn() — считывает длительность импульса (любого - HIGH или LOW) на выводе.

Синтаксис:

pulseIn(pin, value)

pulseIn(pin, value, timeout)

Параметры:

pin: номер вывода, с которого необходимо считыть импульс (int)

value: тип считываемого импульса: HIGH или LOW (int)

timeout (опционально): время ожидания импульса в микросекундах; значение по умолчанию - одна секунда (unsigned long)

Возвращаемые значения:

длительность импульса (в микросекундах) либо 0 в случае отсутствия импульса в течение таймаута (unsigned long)


Время

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

Параметры:

Нет

Возвращаемые значения:

Количество миллисекунд, прошедших с момента старта программы (unsigned long)

Пример:

unsigned long time;

void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print("Time: ");
  time = millis();
  //выводим время с момента старта программы
  Serial.println(time);
  // ждем 1 секунду, чтобы не отправлять большой массив данных
  delay(1000);
}


micros() — возвращает количество микросекунд, прошедших с момента начала выполнения программы Arduino.

Параметры:

Нет

Возвращаемые значения:

Количество микросекунд, прошедших с момента старта программы (unsigned long)

Пример:

unsigned long time;

void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print("Time: ");
  time = micros();
  //выводим время с момента старта программы
  Serial.println(time);
  // ждем 1 секунду, чтобы не отправлять большой массив данных
  delay(1000);
}


delay() — приостанавливает выполнение программы на указанный промежуток времени (в миллисекундах). (В 1 секунде - 1000 миллисекунд.)

Синтаксис:

delay(ms)

Параметры:

ms: количество миллисекунд, на которые необходимо приостановить программу (unsigned long)

Возвращаемые значения:

нет

Пример:

int ledPin = 13;                 // Светодиод подсоединен к цифровому выводу 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // Конфигурируем цифровой вывод как выход
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // включаем светодиод
  delay(1000);                  // ждем секунду
  digitalWrite(ledPin, LOW);    // выключаем светодиод
  delay(1000);                  // ждем секунду
}


delayMicroseconds() — приостанавливает выполнение программы на указанный промежуток времени (в микросекундах).

Синтаксис:

delayMicroseconds(us)

Параметры:

us: количество микросекунд, на которые необходимо приостановить программу (unsigned int)

Возвращаемые значения:

нет

Пример:

int outPin = 8;                 // цифровой вывод 8

void setup()
{
  pinMode(outPin, OUTPUT);      // конфигурируем цифровой вывод как выход
}

void loop()
{
  digitalWrite(outPin, HIGH);   // включаем вывод
  delayMicroseconds(50);        // задержка в 50 микросекунд 
  digitalWrite(outPin, LOW);    // выключаем вывод
  delayMicroseconds(50);        // задержка в 50 микросекунд
}


Математические вычисления

min() — вычисляет минимальное значение из двух чисел.

Параметры:

x: первое число, любой тип данных

y: второе число, любой тип данных

Возвращаемые значения:

Меньшее из двух чисел.

Пример:

sensVal = min(sensVal, 100); // присваивает sensVal меньшее из чисел sensVal и 100
                             // позволяя убедиться, что значение sensVal никогда не превысит 100


max() — вычисляет максимальное значение из двух чисел.

Параметры:

x: первое число, любой тип данных

y: второе число, любой тип данных

Возвращаемые значения:

Большее из двух указанных чисел.

Пример:

sensVal = max(senVal, 20); // присваивает sensVal большее из двух чисел sensVal и 20
                           // позволяя убедиться, что значение sensVal будет не меньше 20


abs() — вычисляет абсолютную величину (модуль) числа.

Параметры:

x: число

Возвращаемые значения:

x: если x больше или равен 0.

-x: если x меньше 0.


constrain() — ограничивает значение переменной заданными пределами.

Параметры:

x: переменная, значение которой необходимо ограничить, любой тип данных

a: нижний предел, любой тип данных

b: верхний предел, любой тип данных

Возвращаемые значения:

x: если x лежит в пределах между a и b.

a: если x меньше a.

b: если x больше b.

Пример:

sensVal = constrain(sensVal, 10, 150);
// числовые показания датчика ограничены диапазоном от 10 до 150 


map() — преобразовывает значение переменной из одного диапазона в другой. Т.е. значение переменной value, равное fromLow, будет преобразовано в число toLow, а значение fromHigh - в toHigh.

Параметры:

value: переменная, значение которой необходимо преобразовать

fromLow: нижний предел текущего диапазона переменной value

fromHigh: верхний предел текущего диапазона переменной value

toLow: нижний предел нового диапазона переменной value

toHigh: верхний предел нового диапазона переменной value

Возвращаемые значения:

Преобразованное значение.

Пример:

/* Преобразование аналогового значения в 8-битное число (от 0 до 255) */
void setup() {}

void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}


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

Параметры:

base: число (float)

exponent: показатель степени, в которую необходимо возвести число (float)

Возвращаемые значения:

Результат возведения в степень (double)


sqrt() — вычисляет квадратный корень числа.

Параметры:

x: число, любой тип данных

Возвращаемые значения:

double, квадратный корень числа.


sq() — вычисляет квадрат числа: число, умноженное само на себя.

Параметры:

x: число, любой тип данных

Возвращаемые значения:

квадрат числа


Тригонометрия

sin() — вычисляет синус угла (в радианах). Результат лежит в пределах от -1 до 1.

Параметры:

rad: угол в радианах (float)

Возвращаемые значения:

синус угла (double)


cos() — вычисляет косинус угла (в радианах). Результат лежит в пределах от -1 до 1.

Параметры:

rad: угол в радианах (float)

Возвращаемые значения:

косинус угла ("double")


tan() — вычисляет тангенс угла (в радианах). Результат лежит в пределах от минус бесконечности до бесконечности.

Параметры:

rad: угол в радианах (float)

Возвращаемые значения:

тангенс угла (double)


Случайные числа

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

Параметры:

long, int - число для генерирования начального значения.

Возвращаемые значения:

нет

Пример:

long randNumber;

void setup(){
  Serial.begin(9600);
  randomSeed(analogRead(0));
}

void loop(){
  randNumber = random(300);
  Serial.println(randNumber);

  delay(50);


random() — функция random() генерирует псевдо-случайные числа.

Синтаксис:

random(max)

random(min, max)

Параметры:

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

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

Возвращаемые значения:

случайное число в диапазоне от min до max-1 (long)

Пример:

long randNumber;

void setup(){
  Serial.begin(9600);

  // если аналоговый вход 0 ни к чему не подсоединен, то произвольный аналоговый
  // шум на нем обеспечит разные исходные числа, передаваемые функции randomSeed()
  // при каждом запуске программы. Впоследствии это позволит функции random 
  // генерировать разные значения.
  randomSeed(analogRead(0));
}

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

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

  delay(50);
}


Биты и байты

lowByte() — извлекает младший (крайний правый) байт переменной (например, типа word).

Синтаксис:

lowByte(x) 

Параметры:

x: значение любого типа

Возвращаемые значения:

byte


highByte() — извлекает старший (крайний левый) байт переменной типа word (либо второй младший байт переменной, если ее тип занимает больше двух байт).

Синтаксис:

highByte(x)

Параметры:

x: значение любого типа

Возвращаемые значения:

byte


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: бит, значение которого необходимо вычислить.

Возвращаемые значения:

Значение бита


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

attachInterrupt() — задает функцию, которую необходимо вызвать при возникновении внешнего прерывания.

Синтаксис:

attachInterrupt(interrupt, function, mode)

Параметры:

interrupt: номер прерывания (int)

function: функция, которую необходимо вызвать при возникновении прерывания; эта функция должна быть без параметров и не возвращать никаких значений. Такую функцию иногда называют обработчиком прерывания.

mode: определяет условие, при котором должно срабатывать прерывание. Может принимать одно из четырех предопределенных значений:

LOW - прерывание будет срабатывать всякий раз, когда на выводе присутствует низкий уровень сигнала

CHANGE - прерывание будет срабатывать всякий раз, когда меняется состояние вывода

RISING - прерывание сработает, когда состояние вывода изменится с низкого уровня на высокий

FALLING - прерывание сработает, когда состояние вывода изменится с высокого уровня на низкий.

Возвращаемые значения:

нет

Пример:

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;
}


detachInterrupt() — запрещает заданное прерывание.

Синтаксис:

detachInterrupt(interrupt)

Параметры:

interrupt: номер прерывания, которое необходимо запретить


Прерывания

interrupts() — повторно разрешает прерывания (после того, как они были отключены функцией noInterrupts()).

Параметры:

Нет

Возвращаемые значения:

Нет

Пример:

void setup() {}

void loop()
{
  noInterrupts();
  // критичный ко времени участок кода
  interrupts();
  // далее - остальная программа
}


noInterrupts() — запрещает прерывания (повторно разрешить их можно функцией interrupts()).

Параметры:

Нет

Возвращаемые значения:

Нет

Пример:

void setup() {}

void loop()
{
  noInterrupts();
  // критичный ко времени участок кода
  interrupts();
  // далее - остальная программа
}

Report Page