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;
- }


