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ơna
, trả vềa
. - Nếu
x
lớn hơnb
, trả vềb
. - Nếu
x
nằm giữaa
vàb
, 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 |