KUNJUNGI KAMI

KUNJUNGI KITA DI BUKALAPAK, TOKOPEDIA DAN SHOPEE

Antarmuka Sensor Akselerometer dan Giroskop MPU6050 dengan Arduino



Ketika kita masih anak-anak, giroskop di pameran sains selalu berhasil memukau kita karena bergerak dengan cara yang aneh dan bahkan tampaknya menantang gravitasi. Sifat unik mereka membuatnya penting dalam segala hal, mulai dari helikopter RC kecil hingga sistem navigasi canggih di pesawat ulang-alik antariksa."


Dalam beberapa tahun terakhir, insinyur-insinyur yang berbakat telah berhasil mengembangkan giroskop mikromekanik. Giroskop MEMS (sistem mikroelektromekanik) ini telah membuka jalan bagi serangkaian aplikasi inovatif yang benar-benar baru, termasuk pengenalan gerakan, permainan yang lebih menarik, realitas tambahan, pengambilan foto panorama, navigasi kendaraan, dan pemantauan kebugaran, hanya beberapa di antaranya.


Tak diragukan lagi, giroskop dan akselerometer masing-masing memiliki keistimewaannya sendiri. Namun, saat kita menggabungkannya, kita dapat memperoleh data yang luar biasa akurat tentang orientasi suatu objek. Inilah tempat bagi MPU6050 untuk masuk ke dalam gambar. MPU6050 mencakup giroskop dan akselerometer, memungkinkan kita untuk mengukur rotasi pada semua tiga sumbu, percepatan statis akibat gravitasi, dan percepatan dinamis akibat gerakan.


Sebelum kita menggunakan MPU6050 dalam proyek Arduino kita, ide yang bagus untuk memahami bagaimana akselerometer dan giroskop bekerja."


Bagaimana Cara Kerja Akselerometer?

Untuk memahami bagaimana akselerometer bekerja, bayangkanlah sebuah bola di dalam sebuah kubus 3D.



Ilustrasi Kerja Akselerometer - Keadaan Tanpa Berat

Anggaplah kubus tersebut berada di luar angkasa, di mana segala sesuatu tidak memiliki berat, bola tersebut akan mengapung di tengah kubus.


Sekarang, anggaplah setiap dinding mewakili suatu sumbu tertentu.


Jika tiba-tiba kami menggerakkan kotak ke kiri dengan percepatan 1g (satu G-force 1g setara dengan percepatan gravitasi 9.8 m/s2), bola tersebut pasti akan menghantam dinding X. Jika kami mengukur gaya yang dilakukan bola pada dinding X, kita dapat memperoleh nilai keluaran sebesar 1g sepanjang sumbu X."



Marilah kita lihat apa yang terjadi saat kita meletakkan kubus tersebut di Bumi. Bola tersebut akan jatuh pada dinding Z, memberikan gaya sebesar 1g seperti yang ditunjukkan dalam diagram di bawah ini:




Ilustrasi Kerja Akselerometer - Gaya Gravitasi

Dalam kasus ini, kotak tidak bergerak, tetapi kita masih mendapatkan pembacaan 1g pada sumbu Z. Ini karena gravitasi (yang sebenarnya adalah bentuk dari percepatan) menarik bola ke bawah dengan gaya sebesar 1g.


Meskipun model ini tidak menggambarkan secara tepat bagaimana sensor akselerometer dunia nyata dibangun, seringkali model ini bermanfaat untuk memahami mengapa sinyal keluaran dari akselerometer biasanya diukur dalam nilai ±g, atau mengapa akselerometer membaca 1g pada sumbu z saat diam, atau apa pembacaan akselerometer yang bisa Anda harapkan pada orientasi yang berbeda.


Di dunia nyata, akselerometer didasarkan pada Teknologi Fabrikasi Mikro-Elektro-Mekanik (MEMS). Jadi, mari kita cari tahu bagaimana akselerometer MEMS bekerja."


Bagaimana Cara Kerja Akselerometer MEMS?

Akselerometer MEMS (Sistem Mikro-Elektro-Mekanik) adalah struktur mikro-mekanik yang dibangun di atas wafer silikon.


Struktur ini digantungkan oleh pegas polisilikon. Ini memungkinkan struktur tersebut membengkok saat diakselerasi sepanjang sumbu X, Y, dan/atau Z.

Akibat dari pembengkokan ini, kapasitansinya antara plat tetap dan plat yang terhubung ke struktur yang digantung berubah. Perubahan kapasitansinya ini sebanding dengan percepatan sepanjang sumbu tersebut.

Sensor ini memproses perubahan kapasitansi ini dan mengonversikannya menjadi tegangan keluaran analog.


Bagaimana Cara Kerja Giroskop?

Sementara akselerometer mengukur percepatan linear, giroskop mengukur rotasi sudut. Untuk mencapai hal ini, mereka mengukur gaya yang dihasilkan oleh Efek Coriolis.


Efek Coriolis

Efek Coriolis menyatakan bahwa saat sebuah massa (m) bergerak dalam arah tertentu dengan kecepatan (v) dan laju sudut eksternal (Ω) diterapkan (panah Merah), Efek Coriolis menghasilkan gaya (panah Kuning) yang menyebabkan massa tersebut bergerak secara tegak lurus. Nilai perpindahannya ini berhubungan langsung dengan laju sudut yang diterapkan."



Pertimbangkan dua massa yang berayun ke arah berlawanan pada frekuensi konstan. Saat laju sudut diterapkan, efek Coriolis yang dihasilkan oleh setiap massa bergerak ke arah berlawanan, mengakibatkan perubahan proporsional dalam kapasitansinya antara massa-massa tersebut. Dengan mengukur perubahan kapasitansi ini, laju sudut dapat dihitung.





Bagaimana Cara Kerja Giroskop MEMS?

Sensor MEMS terdiri dari massa bukti (terdiri dari empat bagian M1, M2, M3, dan M4) yang dipertahankan dalam gerakan osilasi berkelanjutan sehingga dapat merespons efek coriolis. Mereka bergerak secara bersamaan ke dalam dan keluar dalam bidang horizontal.



Ketika kita mulai memutar struktur tersebut, gaya Coriolis yang bekerja pada massa bukti yang bergerak menyebabkan getaran berubah dari horizontal menjadi vertikal.


Terdapat tiga mode tergantung pada sumbu di sepanjang mana rotasi sudut diterapkan.


Mode Roll:

Saat laju sudut diterapkan sepanjang sumbu X, M1 dan M3 akan bergerak naik dan turun keluar dari bidang karena efek coriolis. Ini menyebabkan perubahan dalam sudut roll, oleh karena itu dinamakan Mode Roll."



Mode Pitch:

Saat laju sudut diterapkan sepanjang sumbu Y, M2 dan M4 akan bergerak naik dan turun keluar dari bidang. Ini menyebabkan perubahan dalam sudut pitch, oleh karena itu dinamakan Mode Pitch.



Mode Yaw:

Saat laju sudut diterapkan sepanjang sumbu Z, M2 dan M4 akan bergerak secara horizontal ke arah berlawanan. Ini menyebabkan perubahan dalam sudut yaw, oleh karena itu dinamakan Mode Yaw.




Setiap kali efek coriolis terdeteksi, gerakan konstan dari massa penggerak akan menyebabkan perubahan dalam kapasitansinya (∆C) yang dideteksi oleh struktur pendeteksi dan diubah menjadi sinyal tegangan.


Untuk informasi Anda, inilah tampilan mati struktur MEMS dari giroskop digital 3 sumbu. Terima kasih kepada Adam McCombs atas berbagi gambar ini dari giroskop MEMS L3GD20HTR yang terdekaps.



giroskop mems l3gd20htr yang terdekaps

Kredit: Adam McCombs

Ikhtisar Perangkat Modul MPU6050

Di inti modul ini terdapat chip MotionTracking 6 sumbu yang hemat daya dan biaya rendah - MPU6050 - yang mengintegrasikan giroskop 3 sumbu, akselerometer 3 sumbu, dan Prosesor Gerakan Digital (DMP) ke dalam kemasan kecil berukuran 4mm x 4mm.


Chip ini dapat mengukur momentum sudut atau rotasi sepanjang semua tiga sumbu, percepatan statis akibat gravitasi, dan percepatan dinamis akibat gerakan, guncangan, atau getaran."



"Modul ini dilengkapi dengan regulator LD3985 3.3V di dalamnya, sehingga Anda dapat menggunakannya dengan aman dengan mikrokontroler logika 5V seperti Arduino.


MPU6050 mengonsumsi kurang dari 3.6mA selama pengukuran dan hanya 5μA saat tidak digunakan. Karena konsumsi dayanya yang rendah, modul ini dapat digunakan dalam perangkat berdaya baterai.


Selain itu, modul ini memiliki lampu LED Daya yang menyala saat modul dinyalakan.


Mengukur Akselerasi

MPU6050 memiliki akselerometer terintegrasi yang dapat mengukur akselerasi dalam empat rentang penuh yang dapat diprogram, yaitu ±2g, ±4g, ±8g, dan ±16g.



MPU6050 dilengkapi dengan tiga konverter analog-ke-digital 16-bit yang secara bersamaan mengambil sampel tiga sumbu gerakan (sepanjang sumbu X, Y, dan Z).


Mengukur Rotasi

MPU6050 memiliki giroskop terintegrasi yang dapat mengukur rotasi sudut dalam empat rentang penuh yang dapat diprogram, yaitu ±250°/s, ±500°/s, ±1000°/s, dan ±2000°/s.



MPU6050 dilengkapi dengan tiga konverter analog-ke-digital 16-bit tambahan yang secara bersamaan mengambil sampel tiga sumbu rotasi (sepanjang sumbu X, Y, dan Z). Tingkat pengambilan sampel dapat diatur dari 3.9 hingga 8000 sampel per detik.


Mengukur Suhu

MPU6050 menyertakan sensor suhu terintegrasi yang dapat mengukur suhu dari -40 hingga 85°C dengan akurasi ±1°C.


Perhatikan bahwa pengukuran suhu ini adalah suhu inti dari bahan silikon itu sendiri, bukan suhu lingkungan. Pengukuran ini biasanya digunakan untuk mengkompensasi kalibrasi akselerometer dan giroskop atau mendeteksi perubahan suhu daripada mengukur suhu mutlak.


Antarmuka I2C

Modul berkomunikasi dengan Arduino melalui antarmuka I2C. Ini mendukung dua alamat I2C yang berbeda: 0x68HEX dan 0x69HEX. Ini memungkinkan dua MPU6050 dapat digunakan pada bus yang sama atau menghindari konflik alamat dengan perangkat lain pada bus.



Pin ADO menentukan alamat I2C dari modul. Pin ini ditarik ke bawah dengan resistor 4.7K. Oleh karena itu, saat Anda tidak menghubungkan pin ADO, alamat I2C default adalah 0x68HEX; saat Anda menghubungkannya ke 3.3V, garis tersebut ditarik tinggi, dan alamat I2C menjadi 0x69HEX.


Menambahkan Sensor Eksternal

Anda dapat meningkatkan akurasi modul MPU6050 lebih jauh dengan menghubungkan sensor eksternal kepadanya. Sensor eksternal ini dapat dihubungkan ke MPU6050 melalui bus I2C kedua yang sepenuhnya independen (XDA dan XCL).



Koneksi eksternal ini biasanya digunakan untuk menghubungkan magnetometer, yang dapat mengukur medan magnet sepanjang tiga sumbu. MPU6050 memiliki enam Derajat Kebebasan (DOF), tiga untuk akselerometer dan tiga untuk giroskop yang digabungkan. Penambahan magnetometer meningkatkan derajat kebebasan sensor dari 6 menjadi 9 DOF."


Spesifikasi Teknis

Berikut adalah spesifikasi:

Parameter Value
Operating Voltage 5V (typical)
Accelerometer Range ±2g, ±4g, ±8g, ±16g
Gyroscope Range ±250°/s, ±500°/s, ±1000°/s, ±2000°/s
Temperature Range -40 to +85°C
Absolute Maximum Acceleration Up to 10,000g


Untuk informasi lebih lanjut, silakan lihat lembar data di bawah ini.

Lembar Data MPU6050


Penyusunan Pin Modul MPU6050

Penyusunan pin modul MPU6050 adalah sebagai berikut:




VCC memberikan daya ke modul.


GND adalah pin tanah.


SCL adalah pin clock serial untuk antarmuka I2C.



SDA adalah pin data serial untuk antarmuka I2C.


XDA adalah jalur data I2C eksternal. Bus I2C eksternal digunakan untuk menghubungkan sensor eksternal, seperti magnetometer.


XCL adalah jalur clock I2C eksternal.


AD0 memungkinkan Anda mengubah alamat I2C modul MPU6050. Ini dapat digunakan untuk menghindari konflik antara modul dan perangkat I2C lainnya atau untuk menghubungkan dua MPU6050 ke bus I2C yang sama. Saat Anda tidak menghubungkan pin ADO, alamat I2C default adalah 0x68HEX; saat Anda menghubungkannya ke 3.3V, alamat I2C berubah menjadi 0x69HEX.


INT adalah pin Keluaran Interupsi. MPU6050 dapat diprogram untuk menghasilkan interupsi saat mendeteksi gerakan, gesekan, zooming, gulir, deteksi ketukan, dan deteksi guncangan.


Menghubungkan Modul MPU6050 ke Arduino

Mari sambungkan modul MPU6050 ke Arduino.

Hubungannya sederhana. Mulailah dengan menghubungkan pin VCC ke output 5V Arduino dan pin GND ke ground.

Sekarang kita memiliki pin yang digunakan untuk komunikasi I2C. Perhatikan bahwa setiap papan Arduino memiliki pin I2C yang berbeda yang harus dihubungkan dengan benar. Pada papan Arduino dengan tata letak R3, SDA (garis data) dan SCL (garis clock) berada pada header pin dekat pin AREF. Mereka juga disebut A5 (SCL) dan A4 (SDA).


Lihat tabel di bawah ini untuk referensi cepat.

Board SCL Pin SDA Pin
Arduino Uno A5 A4
Arduino Nano A5 A4
Arduino Mega 21 20
Leonardo/Micro 3 2

Diagram di bawah ini menunjukkan cara menghubungkan semuanya.




Pemasangan Library

Menyiapkan modul MPU6050 untuk mulai mengambil data mentah perangkat cukup sederhana. Namun, memanipulasi data menjadi sesuatu yang bermakna, pada umumnya lebih sulit, tetapi ada beberapa library yang dapat digunakan.


Untuk memasang library, buka menu Sketch > Include Library > Manage Libraries… Tunggu Manajer Library untuk mengunduh indeks library dan memperbarui daftar library yang terpasang.


Saring pencarian dengan memasukkan 'mpu6050'. Cari library '

' oleh Adafruit. Klik pada entri tersebut dan kemudian pilih Install.



Library Adafruit MPU6050 menggunakan Library Pengemudi Sensor Unified dan Library Bus IO Adafruit secara internal. Jadi, cari library pengemudi sensor unified dan BusIO dalam manajer library dan pasang juga.



Contoh Kode Arduino

Berikut adalah program sederhana yang membaca akselerasi linear, rotasi sudut, dan suhu dari modul MPU6050 dan mencetaknya di monitor serial."

        
include 
#include 
#include 

Adafruit_MPU6050 mpu;

void setup(void) {
	Serial.begin(115200);

	// Try to initialize!
	if (!mpu.begin()) {
		Serial.println("Failed to find MPU6050 chip");
		while (1) {
		  delay(10);
		}
	}
	Serial.println("MPU6050 Found!");

	// set accelerometer range to +-8G
	mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

	// set gyro range to +- 500 deg/s
	mpu.setGyroRange(MPU6050_RANGE_500_DEG);

	// set filter bandwidth to 21 Hz
	mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

	delay(100);
}

void loop() {
	/* Get new sensor events with the readings */
	sensors_event_t a, g, temp;
	mpu.getEvent(&a, &g, &temp);

	/* Print out the values */
	Serial.print("Acceleration X: ");
	Serial.print(a.acceleration.x);
	Serial.print(", Y: ");
	Serial.print(a.acceleration.y);
	Serial.print(", Z: ");
	Serial.print(a.acceleration.z);
	Serial.println(" m/s^2");

	Serial.print("Rotation X: ");
	Serial.print(g.gyro.x);
	Serial.print(", Y: ");
	Serial.print(g.gyro.y);
	Serial.print(", Z: ");
	Serial.print(g.gyro.z);
	Serial.println(" rad/s");

	Serial.print("Temperature: ");
	Serial.print(temp.temperature);
	Serial.println(" degC");

	Serial.println("");
	delay(500);
}
        
    


Pastikan Anda mengatur kecepatan baud menjadi "115200" di monitor port serial. Karena MPU6050 mengembalikan sejumlah besar data, kecepatan yang lebih tinggi ini diperlukan untuk menampilkannya.


Akan ada banyak informasi yang ditampilkan, seperti akselerasi linear, rotasi sudut, dan suhu. Gerakkan sensor Anda dan amati bagaimana data berubah.


Penjelasan Kode:

Pada awal sketsa, semua library yang diperlukan disertakan. Seperti yang telah disebutkan sebelumnya, library Adafruit_MPU6050 mengimplementasikan fungsi perangkat keras dari MPU6050, sementara library Adafruit_Sensor mengimplementasikan lapisan abstraksi sensor bersatu. Wire.h, yang memungkinkan kita berkomunikasi dengan perangkat I2C, juga disertakan.":


#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Selanjutnya, sebuah instance dari kelas Adafruit_MPU6050 dibuat untuk mengakses metode-metode yang terkait.


Adafruit_MPU6050 mpu;

Di bagian setup kode, kami pertama-tama menginisialisasi komunikasi serial dengan PC dan memanggil fungsi begin(). Fungsi begin() menginisialisasi antarmuka I2C dan memverifikasi bahwa ID chip sudah benar. Kemudian, itu melakukan reset lunak pada chip dan menunggu sensor untuk dikalibrasi setelah bangun.


Serial.begin(115200);

// Try to initialize!
if (!mpu.begin()) {
	Serial.println("Failed to find MPU6050 chip");
	while (1) {
	  delay(10);
	}
}


Kemudian tiga fungsi berikut digunakan untuk mengonfigurasi rentang pengukuran dari MPU6050.



setAccelerometerRange(mpu6050_accel_range_t)


Fungsi setAccelerometerRange() mengatur rentang pengukuran akselerometer. Fungsi ini menerima nilai berikut:



MPU6050_RANGE_2_G – untuk rentang ±2g (default)

MPU6050_RANGE_4_G – untuk rentang ±4g

MPU6050_RANGE_8_G – untuk rentang ±8g

MPU6050_RANGE_16_G – untuk rentang ±16g

Perhatikan bahwa semakin kecil rentangnya, semakin sensitif bacaan akselerometer akan menjadi.


setGyroRange(mpu6050_gyro_range_t)


Fungsi setGyroRange() mengatur rentang pengukuran giroskop. Fungsi ini menerima nilai berikut:


  • MPU6050_RANGE_250_DEG – untuk rentang 250 derajat-per-detik (default)
  • MPU6050_RANGE_500_DEG – untuk rentang 500 derajat-per-detik
  • MPU6050_RANGE_1000_DEG – untuk rentang 1000 derajat-per-detik
  • MPU6050_RANGE_2000_DEG – untuk rentang 2000 derajat-per-detik

Ingat bahwa rentang derajat-per-detik yang lebih kecil menghasilkan keluaran yang lebih sensitif.


setFilterBandwidth(mpu6050_bandwidth_t)


Fungsi setFilterBandwidth() mengatur lebar pita Digital Low-Pass Filter. Fungsi ini menerima nilai berikut:


  • MPU6050_BAND_260_HZ – untuk lebar pita 260 Hz (Menurut dokumentasi, ini menonaktifkan filter)
  • MPU6050_BAND_184_HZ – untuk lebar pita 184 Hz
  • MPU6050_BAND_94_HZ – untuk lebar pita 94 Hz
  • MPU6050_BAND_44_HZ – untuk lebar pita 44 Hz
  • MPU6050_BAND_21_HZ – untuk lebar pita 21 Hz
  • MPU6050_BAND_10_HZ – untuk lebar pita 10 Hz
  • MPU6050_BAND_5_HZ – untuk lebar pita 5 Hz

Pemilihan lebar pita memungkinkan Anda mengubah frekuensi potong filter low-pass, yang memungkinkan Anda meratakan sinyal dengan menghilangkan noise frekuensi tinggi.


Dalam contoh ini, kami mengatur rentang akselerometer menjadi ±8G, rentang giroskop menjadi ±500°/s, dan lebar pita filter menjadi 21 Hz."


mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

Pada bagian loop dari kode, kami membuat tiga objek dengan tipe sensors_event_t untuk menyimpan hasil kami. sensors_event_t adalah jenis data yang didefinisikan oleh pengguna (struktur dalam bahasa C) yang menyimpan berbagai data sensor seperti akselerasi, giroskop, suhu, cahaya, tekanan, dan banyak lagi. Informasi lebih lanjut tersedia di github.


sensors_event_t a, g, temp

Fungsi getEvent() kemudian dipanggil. Fungsi ini membaca set nilai baru dari sensor (sebuah "event" sensor), mengkonversi mereka menjadi unit SI dan skala yang benar, dan kemudian mengassign hasilnya ke objek mpu kami.


mpu.getEvent(&a, &g, &temp);

Terakhir, nilai-nilai tersebut ditampilkan di monitor serial.


Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");

Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");

Serial.print("Temperature: ");
Serial.print(temp.temperature);
Serial.println(" degC");

Hanya melihat data mentah dari MPU6050 tidak akan membantu. Gunakan Serial Plotter jika Anda benar-benar ingin melihat bagaimana MPU6050 Anda bereaksi saat Anda menggerakkannya.

IDE Arduino menyertakan alat yang berguna yang disebut serial plotter. Ini dapat memberikan visualisasi data secara real-time. Ini sangat berguna untuk memvisualisasikan data, debugging kode, dan memvisualisasikan variabel sebagai gelombang.

Mari coba dengan kode yang diperbarui di bawah ini. Kompilasikan dan unggah program di bawah ini, lalu buka Tools > Serial Plotter (Ctrl+Shift+L). Kode ini menggunakan kecepatan baud 115200; pastikan serial plotter juga diatur ke 115200.


#include 
#include 
#include 

Adafruit_MPU6050 mpu;

void setup(void) {
	Serial.begin(115200);

	// Try to initialize!
	if (!mpu.begin()) {
		Serial.println("Failed to find MPU6050 chip");
		while (1) {
		  delay(10);
		}
	}

	// set accelerometer range to +-8G
	mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

	// set gyro range to +- 500 deg/s
	mpu.setGyroRange(MPU6050_RANGE_500_DEG);

	// set filter bandwidth to 21 Hz
	mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

	delay(100);
}

void loop() {
	/* Get new sensor events with the readings */
	sensors_event_t a, g, temp;
	mpu.getEvent(&a, &g, &temp);

	/* Print out the values */
	Serial.print(a.acceleration.x);
	Serial.print(",");
	Serial.print(a.acceleration.y);
	Serial.print(",");
	Serial.print(a.acceleration.z);
	Serial.print(", ");
	Serial.print(g.gyro.x);
	Serial.print(",");
	Serial.print(g.gyro.y);
	Serial.print(",");
	Serial.print(g.gyro.z);
	Serial.println("");

	delay(10);
}



Ketika Anda menggerakkan modul naik dan turun pada sumbu Z, Anda seharusnya melihat sesuatu seperti ini.



Grafik Output Plotter Arduino MPU6050

Penjelasan Kode:

Anda akan melihat bahwa sebagian besar sketsa ini identik dengan yang sebelumnya, kecuali:


  • Pembacaan suhu tidak dicetak.
  • Semua pembacaan lain dicetak sedemikian rupa sehingga mereka membentuk daftar nilai yang dipisahkan oleh koma.
  • Pembacaan diambil setiap 10 milidetik."

Tidak ada komentar:

Posting Komentar