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
2x3,141592653589793..

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 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
2 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ả

BÀI 2 - Sử dụng nhiều ic eeprom 24Cxx cùng lúc

Qua bài đầu, mình đã giúp các bạn giải quyết được một vấn đề khá quan trọng trong việc sử dụng EEPROM. Bài này sẽ giúp bạn biết cách ghép nhiều module eeprom để tạo ra Super eeprom như đã hứa.

lên
11 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Truyền các số kiểu long, int, float trong giao tiếp Serial (UART)

Rất dễ dàng để gửi một số hoặc chuỗi kí tự để hiển thị lên màn hình qua cổng Serial. Nhưng mọi chuyện không đơn giản như vậy khi ta muốn truyền số kiểu int, long, double, ..v.v giữa 2 board arduino với nhau bằng Serial. Đừng lo, sau đây mình sẽ giúp bạn giải quyết vấn đề nan giải đó.

 

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