Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Dalam tutorial ini kita akan mempelajari cara membuat pengukur jarak Arduino dan level digital. Anda dapat menonton video berikut atau membaca tutorial tertulis di bawahnya.

Ringkasan

Perangkat ini memiliki sensor ultrasonik untuk mengukur jarak ke objek terdekat, akcelerometer untuk mengukur sudut terhadap tanah, layar LCD untuk menampilkan hasil dan PCB dirancang sendiri di mana semua komponen terhubung.

Kita dapat mengoperasikan perangkat dengan hanya satu tombol. Setelah kita menyala perangkat kita perlu memilih satuan pengukuran.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Dengan menekan tombol kita dapat bergulir melalui satuan, dan jika kita menekan dan menahan tombol untuk sementara kita akan masuk ke program pertama. Di sini kita dapat mengukur jarak dan juga memiliki kemampuan untuk menyimpan dua pengukuran terakhir.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Untuk masuk ke program kedua, lagi kita harus menekan dan menahan tombol untuk sementara. Dalam program ini kita dapat mengukur luas persegi dengan mengambil dua pengukuran jarak tegak lurus.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Program selanjutnya adalah level digital dan di sini kita dapat mengukur sudut terhadap tanah.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Menggunakan tombol kita dapat berganti antara dua sumbu atau kita dapat mengukur Pitch atau Roll.

Skema Rangkaian Pengukur Jarak Arduino

Berikut adalah skema rangkaian proyek Arduino ini.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Perhatikan bahwa saya sudah memiliki tutorial rinci tentang cara kerja masing-masing modul ini, dan Anda dapat memeriksa mereka di tautan berikut: tutorial sensor ultrasonik, tutorial LCD, tutorial akcelerometer MEMS.

Anda dapat mendapatkan komponen yang diperlukan untuk proyek ini dari tautan di bawah ini:

  • Sensor Ultrasonik HC-SR04………………………………
  • MPU6050 3 Axis Gyroscope Accelerometer………
  • 16×2 Character LCD…………………………………………
  • Arduino Nano…………………………………………………

Desain PCB Kustom

Menurut skema rangkaian kita perlu merancang PCB kustom dan saya melakukannya menggunakan perangkat lunak desain rangkaian online gratis EasyEDA.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Setelah selesai merancang di sini, kita cukup mengekspor file Gerber yang digunakan untuk manufaktur PCB. Anda dapat memeriksa berkas proyek EasyEDA dari proyek ini di sini.

Kemudian kita dapat memesan PCB dari JLCPCB, yang sebenarnya adalah sponsor proyek ini.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Di sini kita cukup menyeret dan melepas file Gerber. Setelah diunggah kita dapat meninjau PCB kita di Gerber viewer. Jika semuanya baik maka kita dapat melanjutkan, memilih properti yang kita inginkan untuk PCB kita, dan kemudian kita dapat memesan PCB dengan harga yang wajar. Perhatikan jika ini adalah pesanan pertama Anda dari JLCPCB, Anda bisa mendapatkan hingga 10 PCB hanya dengan $2.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Merakit Perangkat

Meskipun demikian, setelah beberapa hari PCB telah tiba. Kualitas PCB sangat bagus dan semuanya sama persis dengan desain.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Oke, sekarang kita dapat memulai merakit elektronik untuk proyek ini. Saya memulai dengan memasang pin header pada PCB. Dengan cara ini kita dapat dengan mudah menghubungkan dan memutuskan komponen saat diperlukan.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Kemudian saya memasukkan dan memasang tiga resistor. Dua di antaranya adalah untuk pembagi tegangan untuk kontras LCD. Resistor 1k harus ditempatkan di R1 dan 220 ohm di R2. Yang ketiga adalah resistor pull-up untuk tombol.

Selanjutnya saya melanjutkan dengan pembuatan kotak untuk perangkat. Saya memutuskan untuk menggunakan akrilik transparan karena saya ingin keindahan semua komponen elektronik terlihat. Saya memiliki akrilik tebal 5mm dari proyek lama, dan saya menggunakan gergaji bundar untuk memotongnya menurut ukuran.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Kemudian saya harus membuat pembukaan untuk LCD di sisi atas kotak, yang sebenarnya tebal 4mm karena akan cocok lebih baik dengan LCD. Jadi pertama saya membuat dua lubang dengan bor dan kemudian memasukkan gergaji rapi melalui mereka. Menggunakan gergaji rapi saya kasar membuat pembukaan dan kemudian menggunakan ras saya membuat garis lurus halus sehingga LCD dapat pas rapat.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Kemudian menggunakan bor Forstner saya membuat pembukaan untuk saklar daya, tombol kontrol dan sensor ultrasonik.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Setelah saya memiliki semua bagian yang siap saya menggunakan epoksi 5 menit untuk merakit kotak. Seperti yang diketahui, untuk bagian atas, saya memasukkan dan melekat dua baut yang melalui panel atas dapat dimasukkan dan diamankan dengan beberapa baut di atasnya.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Kotak sekarang siap dan jadi saya melanjutkan dengan memasang pin header ke LCD sehingga saya dapat dengan mudah memasangnya ke PCB. Saya juga memasang pin header atau kabel jumper ke saklar daya, tombol dan konektor baterai.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Akhirnya, saya memiliki semua yang siap untuk merakit perangkat. Saya memulai dengan memasukkan sensor ultrasonik ke PCB, dan kemudian melalui lubang di panel sisi. Selanjutnya adalah papan Arduino, modul akcelerometer serta konektor baterai.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Di panel atas, saya mengamankan LCD, saklar daya dan tombol, dan kemudian menghubungkannya ke PCB. Terakhir saya memasukkan baterai 9V ke konektor dan mengamankan panel atas dengan baut.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Dan itu saja, proyek pengukur jarak Arduino selesai tetapi yang tersisa dalam video ini adalah untuk menjelaskan bagaimana program bekerja, jadi mari kita lihat kode Arduino.

Kode Sumber Pengukur Jarak Arduino dan Level Digital

Karena kode cukup panjang, untuk pemahaman yang lebih baik, saya akan memposting kode sumber program dalam bagian-bagian dengan deskripsi untuk setiap bagian. Dan di akhir artikel ini saya akan memposting kode sumber lengkap.

Jadi pertama kita perlu menyertakan library Wire.h untuk komunikasi I2C akcelerometer, serta library LiquidCrystal.h untuk mengontrol LCD. Kemudian kita perlu mendefinisikan LCD, alamat I2C modul akcelerometer MPU6050, pin sensor ultrasonik, serta beberapa variabel yang diperlukan untuk program di bawah ini.

#include<Wire.h> // I2C communication library #include <LiquidCrystal.h> // includes the LiquidCrystal Library LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7) const int MPU = 0x68; // I2C address of the MPU6050 accelerometer #define trigPin 8 #define echoPin 9 #define selectButton 10 int16_t AcX, AcY, AcZ; long duration; float distance; int program = 0; float d = 0; float d1 = 0; float d2 = 0; float area = 0; int axis = 0; int angle = 0; int unitSelect = 0; String unit = "cm";Code language: Arduino (arduino)

Dalam bagian setup kita perlu menginisialisasi antarmuka I2C akcelerometer dan layar LCD, serta menentukan mode pin untuk pin trigger dan echo sensor ultrasonik, dan pin tombol.

void setup() { // Initialize interface to the MPU6050 Wire.begin(); Wire.beginTransmission(MPU); Wire.write(0x6B); Wire.write(0); Wire.endTransmission(true); lcd.begin(16, 2); // Initializes the interface to the LCD screen pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(selectButton, INPUT_PULLUP); }Code language: Arduino (arduino)

Dalam bagian loop utama kita memiliki pernyataan switch melalui yang kita dapat berganti antara program berbeda dari perangkat kita. Dalam yang pertama, atau kasus nomor 0, kita memilih satuan pengukuran. Menggunakan fungsi lcd.print() kita mencetak teks pada LCD dan menggunakan pernyataan if kita berganti melalui empat satuan pengukuran.

switch (program) { // Switch between different programs case 0: // Select unit of measurement lcd.setCursor(0, 0); // Sets the location at which subsequent text written to the LCD will be displayed lcd.print("Select Unit: "); lcd.setCursor(13, 0); lcd.print(unit); lcd.print(" "); delay(10); // If button is pressed - change unit if (digitalRead(selectButton) == 0) { if (unitSelect == 0) { unit = "in"; unitSelect = 1; } else if (unitSelect == 1) { unit = "m"; unitSelect = 2; } else if (unitSelect == 2) { unit = "ft"; unitSelect = 3; } else if (unitSelect == 3) { unit = "cm"; unitSelect = 0; } // If button is held longer then half a second - change program delay(500); if (digitalRead(selectButton) == 0) { program = 1; lcd.clear(); delay(500); } } break;Code language: Arduino (arduino)

Kita harus mencatat di sini bahwa variabel unitSelect mengambil tindakan dalam fungsi kustom getDistance(), tempat sebenarnya memberi tahu ke satuan mana kita harus mengonversi satuan cm dasar yang kita peroleh dari sensor ultrasonik.

/ Converting the units if (unitSelect == 1) { distance = distance; // cm to cm unit = "cm"; } else if (unitSelect == 2) { distance = distance * 0.393701; // cm to in unit = "in"; } else if (unitSelect == 3) { distance = distance * 0.01; // cm to m unit = "m"; } else if (unitSelect == 0) { distance = distance * 0.0328; // cm to ft unit = "ft"; }Code language: Arduino (arduino)

Untuk memilih satuan pengukuran dan juga masuk ke program pertama perangkat kita cukup menekan tombol lebih dari setengah detik.

// If button is held longer then half a second - change program delay(500); if (digitalRead(selectButton) == 0) { program = 1; lcd.clear(); delay(500); } } break;Code language: Arduino (arduino)

Dalam kasus nomor 1 atau dalam program pengukuran jarak pertama kita mendapatkan jarak ke objek terdekat menggunakan fungsi kustom getDistance().

case 1: // Distance measuring program distance = getDistance(); // Distance to the nearest object lcd.setCursor(0, 0); lcd.print("Dist: "); lcd.print(distance); // Prints the distance value from the sensor lcd.print(" "); lcd.setCursor(14, 0); lcd.print(unit); delay(10); lcd.setCursor(0, 1); lcd.print("d:"); lcd.setCursor(8, 1); lcd.print("d:"); delay(200); // Save distance 1 if (digitalRead(selectButton) == 0) { if (d == 0) { lcd.setCursor(0, 1); lcd.print("d: "); lcd.setCursor(2, 1); lcd.print(distance); d = 1; delay(100); } // Save distance 2 else if (d == 1) { lcd.setCursor(8, 1); lcd.print("d: "); lcd.setCursor(10, 1); lcd.print(distance); d = 0; delay(100); } // If button is held longer then half sencond change program delay(500); if (digitalRead(selectButton) == 0) { program = 2; d = 0; lcd.clear(); delay(500); } } break;Code language: Arduino (arduino)

Mari kita lihat bagaimana fungsi ini bekerja.

//===== getDistance - Custom Function float getDistance() { // Clears the trigPin digitalWrite(trigPin, LOW); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // distance in cm // Converting the units if (unitSelect == 1) { distance = distance; // cm to cm unit = "cm"; } else if (unitSelect == 2) { distance = distance * 0.393701; // cm to in unit = "in"; } else if (unitSelect == 3) { distance = distance * 0.01; // cm to m unit = "m"; } else if (unitSelect == 0) { distance = distance * 0.0328; // cm to ft unit = "ft"; } return distance; }Code language: Arduino (arduino)

Di sini menggunakan pin trigger kita memberitahu sensor untuk menghasilkan gelombang suara ultrasonik.

Membuat Pengukur Jarak Arduino dan Level Digital – Panduan Langkah demi Langkah

Kemudian menggunakan pin echo dan fungsi pulseIn() kita mengukur durasi gelombang berjalan dari sensor ke objek dan kembali. Mempertimbangkan kecepatan suara dan waktu perjalan kita dapat dengan mudah menghitung jarak. Jadi kita mencetak jarak yang diukur bersama dengan beberapa teks pada LCD dan menggunakan pernyataan "if", jika kita menekan tombol, kita mencetak atau menyimpan dua pengukuran terakhir.

Selanjutnya adalah program untuk menghitung luas di mana kita menggunakan metode yang sama. kita perlu mengambil dua pengukuran tegak lurus dan cukup mengalikan mereka untuk mendapatkan luas persegi yang mereka bentuk.

case 2: // Area measuring program distance = getDistance(); lcd.setCursor(0, 0); lcd.print("Area: "); lcd.print(area); // Prints the calculated area from the two measurements lcd.setCursor(12, 0); lcd.print(unit); // Prints the selected unit and the square sign below lcd.print("^2"); delay(200); if ( d == 0) { lcd.setCursor(0, 1); lcd.print("d1: "); lcd.setCursor(3, 1); lcd.print(distance); delay(200); } else if (d == 1) { lcd.setCursor(9, 1); lcd.print("d2: "); lcd.setCursor(12, 1); lcd.print(distance); delay(200); } else if (d == 2) { lcd.setCursor(6, 0); lcd.print(area); delay(200); } // Save distance 1 if (digitalRead(selectButton) == 0) { if (d == 0) { lcd.setCursor(0, 1); lcd.print("d1: "); lcd.setCursor(3, 1); lcd.print(distance); d = 1; d1 = distance; delay(100); } // Save distance 2 else if (d == 1) { lcd.setCursor(9, 1); lcd.print("d2: "); lcd.setCursor(12, 1); lcd.print(distance); d = 2; d2 = distance; area = d1 * d2; // Calculate the area delay(100); } else if (d == 2) { lcd.clear(); d = 0; area = 0; delay(100); } // If button is held longer then half sencond change program delay(500); if (digitalRead(selectButton) == 0) { program = 3; d = 0; lcd.clear(); delay(500); } } break;Code language: Arduino (arduino)

Kasus terakhir adalah program pengukuran sudut. Di sini kita perlu membaca data akcelerometer yang sebenarnya adalah kekuatan medan gravitasi Bumi di tiga sumbu yang berbeda, X, Y, dan Z. Nilai setiap simpan di 2 register, jadi kita perlu membaca total 6 register dan menggabungkannya untuk mendapatkan nilai yang benar.

case 3: // Angle measuring program // Read the accelerometer data Wire.beginTransmission(MPU); Wire.write(0x3B); // Start with register 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU, 6, true); // Read 6 registers total, each axis value is stored in 2 registers AcX = Wire.read() << 8 | Wire.read(); // X-axis value AcY = Wire.read() << 8 | Wire.read(); // Y-axis value AcZ = Wire.read() << 8 | Wire.read(); // Z-axis value if ( axis == 0) { // Calculating the Pitch angle (rotation around Y-axis) angle = atan(-1 * AcX / sqrt(pow(AcY, 2) + pow(AcZ, 2))) * 180 / PI; lcd.setCursor(0, 0); lcd.print("Pitch"); } else if (axis == 1) { // Calculating the Roll angle (rotation around X-axis) angle = atan(-1 * AcY / sqrt(pow(AcX, 2) + pow(AcZ, 2))) * 180 / PI; lcd.setCursor(0, 0); lcd.print("Roll "); } lcd.setCursor(0, 1); lcd.print("Angle: "); lcd.print(abs(angle)); lcd.print(" "); lcd.setCursor(10, 1); lcd.print("deg"); delay(200); // Change axis if (digitalRead(selectButton) == 0) { if (axis == 0) { axis = 1; delay(100); } // Save distance 2 else if (axis == 1) { axis = 0; delay(100); } // If button is held longer then half sencond change program delay(500); if (digitalRead(selectButton) == 0) { program = 0; lcd.clear(); delay(500); } } break;Code language: Arduino (arduino)

Setelah kita memiliki nilai X, Y dan Z dari akcelerometer kita dapat menghitung sudut Pitch, atau rotasi di sekitar sumbu Y, serta sudut Roll, atau rotasi di sekitar sumbu X, menggunakan dua persamaan tersebut. Anda dapat menemukan lebih banyak detail tentang persamaan ini di catatan aplikasi Freescale Semiconductor, Tilt Sensing Using a Three-Axis Accelerometer. Jadi setelah itu kita mencetak nilai-nilai bersama dengan beberapa teks pada LCD, dan dengan menekan tombol kita mengubah apa yang kita tampilkan pada LCD, apakah sudut Pitch atau Roll.

Berikut adalah kode sumber lengkap untuk proyek pengukur jarak dan level Arduino ini :

/* DIY Digital Range Measurer and Spirit Level by Dejan Nedelkovski, www.HowToMechatronics.com */ #include<Wire.h> // I2C communication library #include <LiquidCrystal.h> // includes the LiquidCrystal Library LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7) const int MPU = 0x68; // I2C address of the MPU6050 accelerometer #define trigPin 8 #define echoPin 9 #define selectButton 10 int16_t AcX, AcY, AcZ; long duration; float distance; int program = 0; float d = 0; float d1 = 0; float d2 = 0; float area = 0; int axis = 0; int angle = 0; int unitSelect = 0; String unit = "cm"; void setup() { // Initialize interface to the MPU6050 Wire.begin(); Wire.beginTransmission(MPU); Wire.write(0x6B); Wire.write(0); Wire.endTransmission(true); lcd.begin(16, 2); // Initializes the interface to the LCD screen pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(selectButton, INPUT_PULLUP); } void loop() { switch (program) { // Switch between different programs case 0: // Select unit of measurement lcd.setCursor(0, 0); // Sets the location at which subsequent text written to the LCD will be displayed lcd.print("Select Unit: "); lcd.setCursor(13, 0); lcd.print(unit); lcd.print(" "); delay(10); // If button is pressed - change unit if (digitalRead(selectButton) == 0) { if (unitSelect == 0) { unit = "in"; unitSelect = 1; } else if (unitSelect == 1) { unit = "m"; unitSelect = 2; } else if (unitSelect == 2) { unit = "ft"; unitSelect = 3; } else if (unitSelect == 3) { unit = "cm"; unitSelect = 0; } // If button is held longer then half a second - change program delay(500); if (digitalRead(selectButton) == 0) { program = 1; lcd.clear(); delay(500); } } break; case 1: // Distance measuring program distance = getDistance(); // Distance to the nearest object lcd.setCursor(0, 0); lcd.print("Dist: "); lcd.print(distance); // Prints the distance value from the sensor lcd.print(" "); lcd.setCursor(14, 0); lcd.print(unit); delay(10); lcd.setCursor(0, 1); lcd.print("d:"); lcd.setCursor(8, 1); lcd.print("d:"); delay(200); // Save distance 1 if (digitalRead(selectButton) == 0) { if (d == 0) { lcd.setCursor(0, 1); lcd.print("d: "); lcd.setCursor(2, 1); lcd.print(distance); d = 1; delay(100); } // Save distance 2 else if (d == 1) { lcd.setCursor(8, 1); lcd.print("d: "); lcd.setCursor(10, 1); lcd.print(distance); d = 0; delay(100); } // If button is held longer then half sencond change program delay(500); if (digitalRead(selectButton) == 0) { program = 2; d = 0; lcd.clear(); delay(500); } } break; case 2: // Area measuring program distance = getDistance(); lcd.setCursor(0, 0); lcd.print("Area: "); lcd.print(area); // Prints the calculated area from the two measurements lcd.setCursor(12, 0); lcd.print(unit); // Prints the selected unit and the square sign below lcd.print("^2"); delay(200); if ( d == 0) { lcd.setCursor(0, 1); lcd.print("d1: "); lcd.setCursor(3, 1); lcd.print(distance); delay(200); } else if (d == 1) { lcd.setCursor(9, 1); lcd.print("d2: "); lcd.setCursor(12, 1); lcd.print(distance); delay(200); } else if (d == 2) { lcd.setCursor(6, 0); lcd.print(area); delay(200); } // Save distance 1 if (digitalRead(selectButton) == 0) { if (d == 0) { lcd.setCursor(0, 1); lcd.print("d1: "); lcd.setCursor(3, 1); lcd.print(distance); d = 1; d1 = distance; delay(100); } // Save distance 2 else if (d == 1) { lcd.setCursor(9, 1); lcd.print("d2: "); lcd.setCursor(12, 1); lcd.print(distance); d = 2; d2 = distance; area = d1 * d2; // Calculate the area delay(100); } else if (d == 2) { lcd.clear(); d = 0; area = 0; delay(100); } // If button is held longer then half sencond change program delay(500); if (digitalRead(selectButton) == 0) { program = 3; d = 0; lcd.clear(); delay(500); } } break; case 3: // Angle measuring program // Read the accelerometer data Wire.beginTransmission(MPU); Wire.write(0x3B); // Start with register 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU, 6, true); // Read 6 registers total, each axis value is stored in 2 registers AcX = Wire.read() << 8 | Wire.read(); // X-axis value AcY = Wire.read() << 8 | Wire.read(); // Y-axis value AcZ = Wire.read() << 8 | Wire.read(); // Z-axis value if ( axis == 0) { // Calculating the Pitch angle (rotation around Y-axis) angle = atan(-1 * AcX / sqrt(pow(AcY, 2) + pow(AcZ, 2))) * 180 / PI; lcd.setCursor(0, 0); lcd.print("Pitch"); } else if (axis == 1) { // Calculating the Roll angle (rotation around X-axis) angle = atan(-1 * AcY / sqrt(pow(AcX, 2) + pow(AcZ, 2))) * 180 / PI; lcd.setCursor(0, 0); lcd.print("Roll "); } lcd.setCursor(0, 1); lcd.print("Angle: "); lcd.print(abs(angle)); lcd.print(" "); lcd.setCursor(10, 1); lcd.print("deg"); delay(200); // Change axis if (digitalRead(selectButton) == 0) { if (axis == 0) { axis = 1; delay(100); } // Save distance 2 else if (axis == 1) { axis = 0; delay(100); } // If button is held longer then half sencond change program delay(500); if (digitalRead(selectButton) == 0) { program = 0; lcd.clear(); delay(500); } } break; } } //===== getDistance - Custom Function float getDistance() { // Clears the trigPin digitalWrite(trigPin, LOW); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // distance in cm // Converting the units if (unitSelect == 1) { distance = distance; // cm to cm unit = "cm"; } else if (unitSelect == 2) { distance = distance * 0.393701; // cm to in unit = "in"; } else if (unitSelect == 3) { distance = distance * 0.01; // cm to m unit = "m"; } else if (unitSelect == 0) { distance = distance * 0.0328; // cm to ft unit = "ft"; } return distance; }Code language: Arduino (arduino)

Itu saja, saya harap Anda menikmati proyek Arduino ini dan mempelajari hal baru. Jangan ragu untuk bertanya di bagian komentar di bawah.


Proses manufaktur

  1. Membangun Stasiun Perintah DCC Digital untuk Rel Model Menggunakan Arduino – Aplikasi Gratis Tersertakan
  2. Proyek Dadu Digital Arduino: Buat Generator Angka Acak berbasis LCD
  3. Buat Animasi LCD dan Game Menarik dengan Arduino UNO
  4. Detektor Frekuensi Audio Arduino – Ukur Puncak Suara Terkeras dengan Modul Sensitivitas Tinggi
  5. Buat Tamagotchi Arduino Sendiri: Proyek DIY Hewan Peliharaan Digital
  6. Tic Tac Toe Arduino dengan Matriks LED MAX7219 dan Kotak Kardus
  7. Buat Voltmeter DIY dengan Arduino dan Layar Nokia 5110 – Panduan Langkah demi Langkah
  8. Membuat Timer Hitung Mundur Arduino yang Andalan dengan Layar 7-Segmen SparkFun
  9. Python 3 ke Arduino UNO: Kontrol Perintah Mudah dan Demo LED
  10. Membuat Radio FM Kompak dengan Arduino Nano dan RDA8057M