как работать с sin и cos?

denis707
Offline
Зарегистрирован: 09.09.2013

подскажите как использовать 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

denis707
Offline
Зарегистрирован: 09.09.2013

вроде должно быть

 

sens50
ugol1 45
katet1 0.71
katet2 0.71

Poluekt
Offline
Зарегистрирован: 14.11.2011

Вам нужно перевести угол в радианы. Умножить на ПИ и поделить на 180.

denis707
Offline
Зарегистрирован: 09.09.2013

простите, а можно пример, а то я как-то туплю.

step962
Offline
Зарегистрирован: 23.05.2011

rad=deg*3.1416/180;

rad - угол в радианах

deg - угол в градусах

45 градусов => 3.1416/4 радиана -> 0.7854

denis707
Offline
Зарегистрирован: 09.09.2013

ОГРОМНОЕ СИБКИ, а то я уже запарился.