как работать с 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
ОГРОМНОЕ СИБКИ, а то я уже запарился.