Jika datanya tak terhingga dan terus menerus masuk, Anda perlu menggunakan pendekatan yang berkelanjutan untuk menghitung rata-rata secara real-time. Kita dapat menggunakan konsep moving average atau rata-rata bergerak untuk menangani situasi seperti ini. Moving average adalah teknik yang digunakan untuk menghitung rata-rata dari sejumlah data terbaru, dan data yang lebih lama akan terus digantikan oleh data yang baru.
Berikut adalah contoh implementasi rata-rata bergerak (moving average) menggunakan Arduino untuk menghitung rata-rata dari data sensor yang masuk terus menerus:
- const int sensorPin = A0; // Pin tempat sensor terhubung
- const int jumlahData = 10; // Jumlah data yang akan dihitung rata-ratanya
- int data[jumlahData]; // Array untuk menyimpan data
- int indeks = 0; // Indeks saat ini dalam array data
- float rataRata = 0; // Variabel untuk menyimpan rata-rata
- void setup() {
- Serial.begin(9600); // Inisialisasi komunikasi serial
- for (int i = 0; i < jumlahData; i++) {
- data[i] = 0; // Inisialisasi data dengan nilai 0
- }
- }
- void loop() {
- // Baca nilai dari sensor A0
- int nilaiSensor = analogRead(sensorPin);
- // Update nilai dalam array data
- data[indeks] = nilaiSensor;
- // Hitung rata-rata dari data dalam array
- rataRata = hitungRataBergerak(data, jumlahData);
- // Tampilkan nilai sensor dan rata-rata di monitor serial
- Serial.print("Nilai Sensor: ");
- Serial.print(nilaiSensor);
- Serial.print(" Rata-rata: ");
- Serial.println(rataRata);
- // Pindah ke indeks berikutnya dalam array data
- indeks = (indeks + 1) % jumlahData;
- // Tunda sebentar sebelum membaca data sensor berikutnya
- delay(1000); // Tunggu 1 detik
- }
- float hitungRataBergerak(int data[], int jumlahData) {
- int total = 0;
- for (int i = 0; i < jumlahData; i++) {
- total += data[i];
- }
- return (float)total / jumlahData;
- }
Dalam contoh ini, kita menggunakan array untuk menyimpan sejumlah data terbaru dari sensor. Saat data baru masuk, data yang paling lama akan digantikan oleh data yang baru. Ini memungkinkan perhitungan rata-rata bergerak yang terus diperbarui secara real-time.