Các hàm tính lượng giác trong Arduino: acos(arcos), asin(arcsin), atan(arctan), atan2, cosh, sinh, tanh

Mô tả dự án: 

Bài viết này tiếp tục bổ xung các tập lệnh quan trọng trong tính toán lượng giác: acos(arcos), asin( arcsin), atan(arctan), atan2, cosh, sinh, tanh. 

Tóm tắt kiến thức liên quan.

Bảng giá trị lượng giác

Biểu thức của các hàm hyperbolic

MACRO

Các góc đặc biệt được định nghĩa :

Macro
Giá trị
PI (số pi)
3,141592653589793..
TWO_PI
2*Pi=2x3,141592653589793..
HALF_PI Pi/2=1.57079632679489661923

Ví dụ

double x = PI;
void setup()
{
    Serial.begin(9600);
    Serial.println(x, 10); // lấy 10 số phần thập phân
    //x=3.1415927410
}
void loop() {}

Hàm asin( x)

Cấu trúc

double asin(double x)
  • Trả về arcsin của x (giá trị radian)
  • Kiểu tham trị x : double hoặc float
  • Kiểu trả về: double.

Ví dụ

double Goc;
double Sin = 0.86602; //  Sin(Goc)=(căn 3)/2
void setup()
{
    Serial.begin(9600);
    Goc = asin(Sin);
    Serial.println(Goc, 5); // lấy 5 số phần thập phân
    //Goc=1.04719
}
void loop() {}

Hàm acos(x)

Cấu trúc

double acos(double x)
  • Trả về arcos của x (giá trị radian)
  • Kiểu tham trị x: double.
  • Kiểu trả về: double.

Ví dụ

double Goc;
double Cos = 0.86602; //  cos(Goc)=(căn 3)/2
void setup()
{
    Serial.begin(9600);
    Goc = acos(Cos);
    Serial.println(Goc, 5); // lấy 5 số phần thập phân
    //Goc=0.52361
}
void loop() { }

 

Hàm atan(x)

Cấu trúc

double atan(double x)
  • Trả về arctan của x (giá trị radian)
  • Kiểu tham trị x: double.
  • Kiểu trả về: double.

Ví dụ

double Goc;
double Tan = 1.732050; //  Tan(Goc)=Sin(Goc)/Cos(Goc)=(căn 3)
void setup()
{
    Serial.begin(9600);
    Goc = atan(Tan);
    Serial.println(Goc, 5); // lấy 5 số phần thập phân
    //Goc=1.04720
}
void loop() {}

 

Hàm atan2(x, y)

Cấu trúc

double atan2(double x , double y)
  • Trả về arctan của x/y (giá trị radian)
  • Kiểu tham trị x, y: double.
  • Kiểu trả về: double.

Ví dụ

double Goc;
float x = 0.86602540; // =(Căn 3)/2.
float y = 0.5; // =1/2.

void setup()
{
    Serial.begin(9600);
    Goc = atan2(x, y); // tính arctan(x/y)
    Serial.println(Goc, 5); // lấy 5 số phần thập phân
    //Goc=1.04720
}
void loop() {}

 

 

Hàm arccot(x/y)

 

Thư viện không hỗ trợ biểu thức này, tuy nhiên ta có thể suy ra từ công thức tính arctan.

Cụ thể:

 arccot(x/y) = arctan(y/x)

Như vậy : 

arccot(x,y)= atan(y/x)=atan2(y,x); 

 

Hàm cosh(x)

Cấu trúc

 double cosh(double x)

Trả về cosh (hàm hyperbolic cosin) của x (giá trị radian) trong phép tính:

  • Kiểu tham trị x: double.
  • Kiểu trả về: double

Ví dụ

float x = 1.2345;
double Cosh;
void setup()
{
    Serial.begin(9600);
    Cosh = cosh(x);
    Serial.println(Cosh, 5); // lấy 5 số phần thập phân
    //Cosh=1.86382
}
void loop() {}

Hàm sinh(x)

Cấu trúc

double sinh(double x)

Trả về sinh (hàm hyperbolic sin) của x (giá trị radian) trong phép tính:

Kiểu tham trị x: double.

Kiểu trả về: double

Ví dụ

float x = 1.2345;
double Sinh;
void setup()
{
    Serial.begin(9600);
    Sinh = sinh(x);
    Serial.println(Sinh, 5); // lấy 5 số phần thập phân
    //Sinh=1.57284
}
void loop() {}

Hàm tanh(x)

Cấu trúc

double tanh(double x)

Trả về tanh (hàm hyperbolic tan) của x (giá trị radian) trong phép tính:

Kiểu tham trị x: double.

Kiểu trả về: double.

Mối quan hệ của Sinh, Cosh và Tanh

 

Ví dụ

float x = 1.2345;
double Tanh;
void setup()
{
    Serial.begin(9600);
    Tanh = tanh(x);
    Serial.println(Tanh, 5); // lấy 5 số phần thập phân
    //Tanh=0.84388
}
void loop() {}
lên
4 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Điều khiển module động cơ step 2 pha và thư viện

Bài viết này đi  sâu vào tìm hiểu cấu tạo, cách thức điều khiển động cơ step 2 pha lưỡng cực trong ổ DVD/VCD.

Bên cạnh đó là xây dựng một mạch lái (ic driver) và sử dụng thư viện STEP_2_PHASE. 

lên
15 thành viên đã đánh giá bài viết này hữu ích.

Xây dựng Rada trên board arduino và hiển thị trên LCD - Dự án RADUINO

Đã có nhiều bài viết về cách làm rada hiển thị lên màn hình máy tính. Tương tự, mình cũng sẽ làm một chiếc rada cảnh báo hiển thị lên một vài LCD thông dụng hiện nay.

lên
13 thành viên đã đánh giá bài viết này hữu ích.