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

Тема в разделе "Arduino & Shields", создана пользователем denis707, 17 сен 2013.

  1. denis707

    denis707 Нуб

    подскажите как использовать sin и cos мой код пишет совсем не то что должен, что не так делаю?
    Код (C):

    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
     
  2. alex-petrov74

    alex-petrov74 Нуб

    Ну очевидно sin и cos принимают аргументы в радианах.
     
  3. atompost

    atompost Гик