sin()
sin(rad)
Quando você precisa gerar uma onda suave, calcular a posição de um servo num movimento circular ou trabalhar com qualquer coisa que oscila, o seno é seu melhor amigo. Só lembre de um detalhe que pega todo mundo: o ângulo entra em radianos, não em graus.
Sintaxe
sin(rad);
Parâmetros
- rad: o ângulo em radianos (tipo
floatoudouble). Se você tem o ângulo em graus, converta antes:radianos = graus * PI / 180.0.
Retorno
O seno do ângulo, um double entre -1.0 e 1.0.
Exemplo
void setup() {
Serial.begin(9600);
}
void loop() {
// varre de 0 a 360 graus gerando uma onda senoidal
for (int graus = 0; graus < 360; graus += 30) {
float rad = graus * PI / 180.0;
float valor = sin(rad);
Serial.print(graus);
Serial.print(" graus -> sin = ");
Serial.println(valor, 3);
}
delay(2000);
}
Notas e cuidados
- O ângulo é em radianos. Passar graus direto (ex.:
sin(90)) dá resultado errado —90radianos não é90graus. - A constante
PIjá vem pronta na IDE do Arduino, entãograus * PI / 180.0resolve a conversão. - É conta de ponto flutuante: no Uno (sem FPU) é relativamente lenta. Se for chamar muitas vezes por segundo, considere uma tabela pré-calculada.