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

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

NOKIA5110 | Hướng dẫn sử dụng và chia sẻ thư viện HOÀNG SA

Xin chào các bạn, bộ thư viện ST7565 homephone có nhiều tính năng nổi bật, để sánh ngang tầm ưu việt, giờ đây lcd 84x48 NOKIA5110 đã có một phiên bản giống hệt như vậy. Cùng khám phá nào !!  

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

Giới thiệu module thu phát RF CC2530 tầm xa (plus CC2591) của Zigbee.

Mình mới đặt hàng được module RF này, đây là module truyền sóng 2.4 GHZ, khoảng cách rất xa, sử dụng giao tiếp Serial (TX-RX) rất thông dụng, cắm vào là chạy….Rất phù hợp với các dự án robot thám hiểm, thăm dò, tình báo,…..

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