как работать с sin и cos?
- Войдите на сайт для отправки комментариев
Втр, 17/09/2013 - 23:00
подскажите как использовать sin и cos мой код пишет совсем не то что должен, что не так делаю?
int temp30 = 30; // точки для
int temp70 = 70; // установки
int temp110 = 110; // значений порогов
int temp150 = 150; // по измерениям
float temp = 60; /* без подключения датчика задается
положение куда должна показать стрелка */
int sensPIN = 0; // подключение сенсора
// выходы на показометр
int pin1 = 3; // + катушки на 30 град.
int pin2 = 5; // - катушки на 30 град.
int pin3 = 9; // + катушки на 70 град.
int pin4 = 11; // - катушки на 70 град.
int chustvitelnost = 255; // гипотенуза прямоугольного треугольника
void setup()
{
Serial.begin(9600);
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
pinMode(pin3,OUTPUT);
pinMode(pin4,OUTPUT);
}
void loop()
{
int temp = analogRead(sensPIN); // A0 для входа аналового датчика
Serial.print("sens");
Serial.println(temp);
// остальное обработка по температуре
if (temp<=temp30)
{
analogWrite(pin1,255);
analogWrite(pin2,0);
analogWrite(pin3,0);
analogWrite(pin4,0);
}
else if (temp>temp30 && temp<temp70)
{
byte ugol = map(temp, temp30, temp70, 0, 90);
float i = abs(cos(ugol));
float z = abs(sin(ugol));
analogWrite(pin1,chustvitelnost*i);
analogWrite(pin2,0);
analogWrite(pin3,chustvitelnost*z);
analogWrite(pin4,0);
Serial.print("ugol1 ");
Serial.println(ugol);
Serial.print("katet1 ");
Serial.println(i);
Serial.print("katet2 ");
Serial.println(z);
}
delay(1000);
}
log
sens50
ugol1 45
katet1 0.53
katet2 0.85
вроде должно быть
sens50
ugol1 45
katet1 0.71
katet2 0.71
Вам нужно перевести угол в радианы. Умножить на ПИ и поделить на 180.
простите, а можно пример, а то я как-то туплю.
rad=deg*3.1416/180;
rad - угол в радианах
deg - угол в градусах
45 градусов => 3.1416/4 радиана -> 0.7854
ОГРОМНОЕ СИБКИ, а то я уже запарился.