Trong ví dụ này, ta sẽ đọc liên tiếp các giá trị từ cảm biến rồi lấy trung bình. Điều này giúp giá trị đọc được có độ ổn định và chính xác hơn. Ngoài ra, ta sẽ học cách sử dụng mảng array để lưu biến dữ liệu.
nếu sử dụng biến trở
- Mảng (array) được dùng để lưu nhiều giá trị của cùng một biến.
giá trị [ số đếm ]
- Chương trình
/* Làm mượt giá trị */ // Số lần đọc giá trị trước khi lấy trung bìn // Càng đọc nhiều mẫu thì giá trị càng mượt, ít sai số const int numReadings = 5; int readings[numReadings]; // mảng lưu giá trị int readIndex = 0; // số đếm của mảng int total = 0; // tổng kết quả int average = 0; // giá trị trung bình int inputPin = A0; // Chân A0 gắn cảm biến void setup() { // tốc độ baud chuẩn 9600 Serial.begin(9600); // gán tất cả giá trị trong mảng ban đầu bằng '0' for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; } } void loop() { // đọc cảm biến: readings[readIndex] = analogRead(inputPin); // cộng dồn total = total + readings[readIndex]; // tăng số đếm readIndex = readIndex + 1; // nếu đếm hết chỉ số của mảng if (readIndex >= numReadings) { // gán lại chỉ số về '0', chuẩn bị cho lượt sau readIndex = 0; // tính trung bình average = total / numReadings; // gửi kết quả về máy tính Serial.println(average); // chờ 1 khoảng thời gian nhỏ để ổn định delay(1); } delay(1); }