Math

Math Functions trong Arduino

Arduino cung cấp các hàm toán học giúp xử lý dữ liệu số một cách dễ dàng và hiệu quả. Dưới đây là danh sách các hàm phổ biến như abs(), constrain(), map(), max(), min(), pow(), sq(), và sqrt() cùng mô tả, giải thích và ví dụ.

1. abs()

Mô tả:
  • Trả về giá trị tuyệt đối của một số.
Cú pháp:
int abs(int x);
float abs(float x);  // Tùy kiểu dữ liệu
Ví dụ:
void setup() {
  Serial.begin(9600);
  int x = -10;
  Serial.println(abs(x));  // In ra: 10
}

void loop() {}

2. constrain()

Mô tả:
  • Giới hạn giá trị đầu vào trong một khoảng cho trước.
Cú pháp:
int constrain(int x, int a, int b);
Giải thích:
  • Nếu x nhỏ hơn a, trả về a.
  • Nếu x lớn hơn b, trả về b.
  • Nếu x nằm giữa ab, trả về x.
Ví dụ:
void setup() {
  Serial.begin(9600);
  int value = 120;
  Serial.println(constrain(value, 0, 100));  // In ra: 100
}

void loop() {}

3. map()

Mô tả:
  • Chuyển đổi một giá trị từ phạm vi này sang phạm vi khác.
Cú pháp:
long map(long x, long in_min, long in_max, long out_min, long out_max);
Giải thích:
  • x là giá trị cần chuyển đổi.
  • in_min, in_max: Phạm vi gốc.
  • out_min, out_max: Phạm vi mục tiêu.
Ví dụ:
void setup() {
  Serial.begin(9600);
  int sensorValue = 512;  // Giá trị từ 0-1023
  int mappedValue = map(sensorValue, 0, 1023, 0, 100);  // Chuyển sang 0-100
  Serial.println(mappedValue);  // In ra: 50
}

void loop() {}

4. max()

Mô tả:
  • Trả về giá trị lớn hơn giữa hai số.
Cú pháp:
int max(int a, int b);
Ví dụ:
void setup() {
  Serial.begin(9600);
  int a = 5, b = 10;
  Serial.println(max(a, b));  // In ra: 10
}

void loop() {}

5. min()

Mô tả:
  • Trả về giá trị nhỏ hơn giữa hai số.
Cú pháp:
int min(int a, int b);
Ví dụ:
void setup() {
  Serial.begin(9600);
  int a = 5, b = 10;
  Serial.println(min(a, b));  // In ra: 5
}

void loop() {}

6. pow()

Mô tả:
  • Tính lũy thừa của một số.
Cú pháp:
double pow(double base, double exponent);
Ví dụ:
void setup() {
  Serial.begin(9600);
  double result = pow(2, 3);  // 2^3 = 8
  Serial.println(result);     // In ra: 8
}

void loop() {}

7. sq()

Mô tả:
  • Tính bình phương của một số.
Cú pháp:
int sq(int x);
float sq(float x);
Ví dụ:
void setup() {
  Serial.begin(9600);
  int x = 4;
  Serial.println(sq(x));  // In ra: 16
}

void loop() {}

8. sqrt()

Mô tả:
  • Tính căn bậc hai của một số.
Cú pháp:
double sqrt(double x);
Ví dụ:
void setup() {
  Serial.begin(9600);
  double x = 16;
  Serial.println(sqrt(x));  // In ra: 4
}

void loop() {}

Tóm tắt bảng

Hàm Mô tả Ví dụ Kết quả
abs() Trả về giá trị tuyệt đối. abs(-10) 10
constrain() Giới hạn giá trị trong khoảng cho trước. constrain(120, 0, 100) 100
map() Chuyển đổi giá trị giữa hai phạm vi. map(512, 0, 1023, 0, 100) 50
max() Trả về giá trị lớn hơn giữa hai số. max(5, 10) 10
min() Trả về giá trị nhỏ hơn giữa hai số. min(5, 10) 5
pow() Tính lũy thừa của một số. pow(2, 3) 8
sq() Tính bình phương của một số. sq(4) 16
sqrt() Tính căn bậc hai của một số. sqrt(16) 4