Главная chevron_right Функции chevron_right Тригонометрия chevron_right sin()

sin()

sin() вычисляет синус угла в радианах и возвращает double от -1 до 1 — удобно для плавной анимации, траекторий и координатных вычислений.

Полная статья

Описание

Функция sin() вычисляет синус угла, заданного в радианах. Это стандартная тригонометрическая функция из библиотеки math.h, которая автоматически подключается в Arduino. Результат всегда лежит в диапазоне от -1 до 1 включительно.

Если угол у вас задан в градусах, его нужно предварительно перевести в радианы. Для этого умножьте значение в градусах на PI / 180.0. Константа PI доступна в Arduino без дополнительных подключений.

Синтаксис

Используйте следующую функцию для вычисления синуса заданного угла в радианах:

sin(rad)

Параметры

rad: угол в радианах. Допустимые типы данных: float.

Возвращает

Синус угла в виде числа с плавающей точкой. Тип данных: double.

Пример кода

float angle = (2.0 / 3.0) * PI;  // в радианах
double res = 0;

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

  res = sin(angle);

  Serial.print("The angle sine is: ");
  Serial.println(res);
}

void loop() {
}

Где применяется

  • Плавная анимация светодиодов. Подавая на analogWrite() значение, вычисленное через sin(), можно получить мягкое «дыхание» яркости вместо резких скачков.
  • Управление сервоприводами. Синусоидальная траектория движения выглядит естественнее, чем линейная развёртка угла.
  • Генерация звука. Синус лежит в основе формирования тоновых сигналов и простых волновых форм.
  • Вычисление координат. При работе с полярными координатами sin() и cos() переводят угол и радиус в декартовы X/Y.

Практические замечания

  • Аргумент передаётся в радианах, а не в градусах. Самая частая ошибка — передать градусы напрямую и получить неожиданный результат.
  • Чтобы перевести градусы в радианы, используйте формулу: rad = degrees * PI / 180.0.
  • Функция возвращает double, однако на большинстве плат Arduino (Uno, Nano, Mega) тип double физически равен float — 32-битное число одинарной точности. На платах с 64-битными вычислениями (например, Arduino Due) double даёт полную двойную точность.
  • Результат sin() удобно масштабировать под нужный диапазон. Например, для значений от 0 до 255 используйте: (sin(rad) + 1.0) * 127.5.
  • Если результат кажется неверным, выведите промежуточное значение угла в Serial Monitor и убедитесь, что оно действительно в радианах и находится в ожидаемом диапазоне.

Полезные материалы