Kode Arduino dan Video untuk Modul Jarak IR Sharp dengan LCD1602 dan Modul I2C
Panduan proyek ini akan memandu Anda dalam membangun sistem pengukuran jarak yang sederhana namun efektif menggunakan sensor jarak Inframerah (IR) Sharp dan layar LCD1602. Pengaturan ini memungkinkan Anda mengukur jarak secara akurat dalam rentang tertentu dan menampilkannya langsung di layar, menjadikannya ideal untuk berbagai aplikasi elektronik DIY.
Modul keluaran analog Sharp:
2 hingga 15 cm GP2Y0A51SK0F
4 hingga 30 cm GP2Y0A41SK0F / seri GP2Y0AF30
10 hingga 80 cm GP2Y0A21YK0F
10 hingga 150 cm GP2Y0A60SZLF
20 hingga 150 cm GP2Y0A02YK0F
100 hingga 550 cm GP2Y0A710K0F

Contoh penggunaan praktis dan ide proyek untuk sistem ini meliputi:
- Membangun sistem bantuan parkir otomatis untuk mencegah kerusakan bumper.
- Membuat sensor ketinggian air sederhana untuk tangki atau sumur.
- Mengembangkan dispenser cairan tanpa sentuhan.
- Menerapkan alarm keamanan dasar dengan mendeteksi kedekatan.
- Membuat indikator tingkat pengisian untuk hopper atau tempat sampah.
- Merancang sistem penghindaran tabrakan untuk robot kecil atau kendaraan RC.
Perangkat Keras/Komponen
Untuk menyelesaikan proyek ini, Anda akan memerlukan komponen berikut:
- Arduino Uno atau papan yang kompatibel
- Sensor Jarak Inframerah Sharp (model GP2Y0A41SK0F, mengukur 4 hingga 30 cm)
- LCD1602 dengan modul I2C (untuk pengkabelan yang mudah)
- Papan tempat merangkai (opsional, untuk pembuatan prototipe)
- Kabel jumper
- Kabel USB untuk daya dan pemrograman Arduino
Panduan Pengkabelan

Menghubungkan sensor IR Sharp dan LCD1602 dengan modul I2C ke Arduino Anda sangatlah mudah, berkat modul I2C yang mengurangi jumlah kabel yang diperlukan untuk LCD.
Sensor IR Sharp memiliki tiga kabel: Merah (5V), Hitam (Ground), dan Kuning (Output). Hubungkan kabel Merah ke pin 5V Arduino, kabel Hitam ke pin GND mana pun di Arduino, dan kabel output Kuning ke Pin Analog A0 Arduino (di video pada 03:55).
LCD1602 dengan modul I2C memiliki empat kabel: VCC, GND, SDA, dan SCL. Hubungkan pin VCC ke 5V Arduino, dan pin GND ke GND Arduino. Kabel SDA (Serial Data Line) harus dihubungkan ke Pin Analog A4 Arduino, dan kabel SCL (Serial Clock Line) harus dihubungkan ke Pin Analog A5 Arduino (di video pada 02:42).
Penjelasan Kode
Kode Arduino yang disediakan menggunakan dua pustaka utama: Wire.h untuk komunikasi I2C dan LiquidCrystal_I2C.h untuk mengontrol LCD, serta SharpIR.h untuk sensor IR Sharp. Bagian kode yang dapat dikonfigurasi pengguna terutama terkait dengan definisi sensor dan inisialisasi LCD.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Setel alamat LCD ke 0x27 untuk tampilan 16 karakter dan 2 baris
LiquidCrystal_I2C lcd(0x27, 16, 2);
Baris LiquidCrystal_I2C lcd(0x27, 16, 2); menginisialisasi objek LCD. Parameter pertama, 0x27 (di video pada 03:26), adalah alamat I2C default untuk sebagian besar modul LCD I2C berbasis PCF8574. Jika LCD Anda tidak berfungsi, Anda mungkin perlu menemukan alamat yang benar (alternatif umum adalah 0x3F). Parameter kedua, 16, menentukan bahwa LCD Anda memiliki 16 karakter per baris, dan parameter ketiga, 2, menunjukkan bahwa LCD memiliki 2 baris.
#include <SharpIR.h>
#define IR A0 // tentukan pin sinyal Sharp IR
#define model 430 // model modul IR
// Kode Sharp IR untuk Robojax.com
// ir: pin tempat sensor Anda terpasang
// model: int yang menentukan sensor Anda:
/*
* GP2Y0A02YK0F --> "20150"
GP2Y0A21YK --> "1080"
GP2Y0A710K0F --> "100500"
GP2YA41SK0F --> "430"
*/
SharpIR SharpIR(IR, model);
Baris-baris ini mengatur sensor IR Sharp. #define IR A0 mendefinisikan pin analog Arduino tempat kabel output sensor IR Sharp terhubung. #define model 430 (di video pada 04:27) sangat penting karena menentukan model persis sensor IR Sharp Anda. Pustaka menggunakan nomor model ini untuk menerapkan konversi matematis yang benar dari keluaran tegangan analog sensor ke jarak dalam sentimeter. Blok komentar mencantumkan berbagai model Sharp IR dan nilai integer yang sesuai yang harus digunakan di sini. Misalnya, jika Anda menggunakan GP2Y0A21YK, Anda akan mengubah 430 menjadi 1080.
void setup()
{
lcd.begin();
lcd.backlight();
}
Dalam fungsi setup(), lcd.begin() menginisialisasi LCD, dan lcd.backlight() menyalakan lampu latarnya, membuat tampilan terlihat.
void loop()
{
lcd.clear();
lcd.print("Robojax IR Test");
lcd.setCursor (0,1); // pergi ke awal baris ke-2
int dis=SharpIR.distance();// mendapatkan jarak dalam cm
String distance = String(dis);
distance ="Distance: "+distance+"cm";
lcd.print(distance);
delay(500);
}
Di dalam fungsi loop():
lcd.clear();menghapus teks sebelumnya di layar.lcd.print("Robojax IR Test");mencetak pesan statis di baris pertama.lcd.setCursor (0,1);memindahkan kursor ke awal baris kedua (0 adalah kolom pertama, 1 adalah baris kedua, karena baris diindeks mulai dari 0).int dis=SharpIR.distance();memanggil fungsidistance()dari pustaka SharpIR untuk membaca nilai sensor dan mengubahnya menjadi bilangan bulat yang mewakili jarak dalam sentimeter (di video pada 05:06). Ini adalah fungsi inti untuk mendapatkan pengukuran.String distance = String(dis);mengubah jarak bilangan bulat menjadi string, karena Anda tidak dapat langsung menggabungkan bilangan bulat dengan string untuk pencetakan.distance ="Distance: "+distance+"cm";memformat string untuk menyertakan "Distance: " sebelum nilai dan "cm" setelahnya.lcd.print(distance);menampilkan string jarak yang telah diformat di LCD.delay(500);memberikan jeda 500 milidetik (di video pada 06:00). Jeda ini penting untuk akurasi dan stabilitas sensor Sharp. Anda dapat menyesuaikan nilai ini: meningkatkannya mungkin meningkatkan akurasi tetapi memperlambat pembaruan, sementara menguranginya akan mempercepat pembaruan tetapi mungkin mengurangi akurasi.
Proyek Langsung/Demonstrasi
Setelah komponen terhubung dan kode diunggah ke Arduino Anda, sistem akan mulai mengukur dan menampilkan jarak. Proyek ini menunjukkan pengukuran yang akurat pada jarak dekat, misalnya, menampilkan 12 cm saat objek berada pada 12 cm (di video pada 00:31) dan 10 cm untuk 10 cm (di video pada 00:37).
Namun, saat objek bergerak lebih jauh, terutama di atas 15-20 cm, akurasi dapat menurun. Misalnya, pada 20 cm, layar mungkin menampilkan 21 cm (di video pada 07:06), dan pada 25 cm, mungkin terbaca 28 atau 29 cm (di video pada 07:32). Perilaku ini adalah karakteristik dari sensor inframerah ini. Sensor Sharp IR mengeluarkan tegangan analog yang bervariasi dengan jarak: saat jarak meningkat, tegangan keluaran menurun (di video pada 07:56).
Hubungan antara jarak dan keluaran tegangan bersifat non-linear, terutama pada ekstrem rentang sensor. Non-linearitas inilah yang membuat pustaka `SharpIR` berguna, karena berisi data kalibrasi untuk mengubah tegangan yang bervariasi ini menjadi pembacaan jarak yang lebih akurat. Untuk aplikasi yang memerlukan presisi lebih tinggi pada jarak yang lebih jauh, mungkin perlu memilih model Sharp IR yang berbeda yang dirancang untuk jarak tersebut atau menerapkan kurva kalibrasi khusus.
Bab
- [00:06] Pengenalan dan Gambaran Proyek
- [01:10] Detail Sensor Sharp IR dan Pinout
- [02:09] Pengkabelan Modul LCD I2C
- [02:58] Penjelasan Kode Arduino
- [06:36] Demonstrasi Pengukuran Jarak
- [07:47] Karakteristik Sensor dan Keterbatasan Akurasi
- [08:48] Penutup dan Sumber Daya
/*
* Sharp IR 555 (infrared) distance measurement module with LCD1602 and I2C for Arduino
* Measures the distance in cm.
* Watch the video https://youtu.be/RHgMwtKLEnE
* *
Original library: https://github.com/guillaume-rico/SharpIR
// Written and updated by Ahmad for Robojax.com
// on January 3, 2018 at 20:01 in Ajax, Ontario, Canada
// Get this code and other Arduino codes from Robojax.com
// Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
// all in one place.
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
///////////////////***** start of Sharp IR
#include <SharpIR.h>
#define IR A0 // define Sharp IR signal pin
#define model 430 // the model of the IR module
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:
/*
* GP2Y0A02YK0F --> "20150"
GP2Y0A21YK --> "1080"
GP2Y0A710K0F --> "100500"
GP2YA41SK0F --> "430"
*/
SharpIR SharpIR(IR, model);
/////////////////////**** end of Sharp IR
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the backlight and print a message.
lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("Robojax IR Test");
lcd.setCursor (0,1); // go to start of 2nd line
int dis=SharpIR.distance();// gets the distance in cm
String distance = String(dis);
distance ="Distance: "+distance+"cm";
lcd.print(distance);
//lcd.print(millis() / 1000);
delay(500);
//end of loopcode Robojax code for LCD with I2C
}
Hal-hal yang mungkin Anda butuhkan
-
AmazonBuy LCD1602-I2C from Amazonamzn.to
-
Amazon
Sumber daya & referensi
Belum ada sumber daya.
Berkas📁
Pustaka Arduino (zip)
-
Arduino library for sharp IR distance sensor
robojax-sharp_IR-master.zip
Lembar Data (pdf)
-
Sharp IR GP2Y0A21YK Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A21YK_datasheet.pdf0.36 MB
File Fritzing
-
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB -
sharp ir sensor GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz
File lainnya
-
Sharp GP2Y0A41SK0F Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A41SK0F_datasheet.pdf0.84 MB -
Sharp GP2Y0A710K0F Infrared distance sensor datashee
robojax_sharp_IR_GP2Y0A710K0F_datasheet.pdf0.33 MB