Cod Arduino și Video pentru Modulul de Distanță IR Sharp cu Afișaj LCD1602
În acest tutorial, vom învăța cum să folosim modulul Sharp cu senzor infraroșu de distanță împreună cu un afișaj LCD1602 pentru a măsura distanțele cu precizie. Senzorul IR Sharp va scoate distanța măsurată, care va fi apoi afișată pe LCD, permițând feedback în timp real. Până la sfârșitul acestui proiect, veți avea o configurație funcțională care poate măsura distanțe de la 4 la 30 de centimetri (în video la 00:30).
Module Sharp cu ieșire analogică:
2 până la 15 cm GP2Y0A51SK0F
4 până la 30 cm GP2Y0A41SK0F / seria GP2Y0AF30
10 până la 80 cm GP2Y0A21YK0F
10 până la 150 cm GP2Y0A60SZLF
20 până la 150 cm GP2Y0A02YK0F
100 până la 550 cm GP2Y0A710K0F

Senzorul Sharp IR de distanță funcționează prin emiterea de lumină infraroșie și măsurarea timpului necesar pentru ca lumina să se reflecte înapoi. Acest lucru permite senzorului să calculeze distanța pe baza cantității de lumină primite. Afișajul LCD1602 este folosit pentru a prezenta aceste informații într-un format lizibil. Configurația este compactă, fiind potrivită pentru diverse aplicații, inclusiv robotică și sisteme de măsurare a distanței.
Hardware Explicat
Pentru acest proiect, vom folosi senzorul Sharp IR de distanță și afișajul LCD1602. Senzorul Sharp IR are trei fire: firul roșu se conectează la alimentarea de 5V, firul negru se conectează la masă, iar firul galben este semnalul de ieșire care se conectează la un pin analogic pe Arduino. Afișajul LCD1602 necesită mai mulți pini pentru comunicare, care vor fi de asemenea conectați la Arduino.
Afișajul LCD1602 folosește o bibliotecă LiquidCrystal pentru a gestiona datele trimise către el, permițând controlul ușor al ieșirii afișajului. Această bibliotecă gestionează comunicarea între Arduino și LCD, simplificând imprimarea textului și a numerelor.
Detalii din Fișa Tehnică
| Producător | Sharp |
|---|---|
| Număr de piesă | GP2Y0A41SK0F |
| Tensiune logică/IO | 5 V |
| Tensiune de alimentare | 4,5 – 5,5 V |
| Interval de distanță de operare | 4 – 30 cm |
| Tensiune de ieșire (la 30 cm) | 0,4 V |
| Tensiune de ieșire (la 4 cm) | 3 V |
| Timp de răspuns | 30 ms |
| Pachet | Modul compact |
| Note / variante | Diferite modele disponibile pentru intervale variate |
- Asigurați-vă că senzorul este alimentat corect la 5 V.
- Folosiți o masă comună pentru toate componentele.
- Fiți atenți la tensiunea de ieșire, care variază cu distanța.
- Luați în considerare utilizarea unui filtru pentru semnalul de ieșire pentru a stabiliza citirile.
- Păstrați senzorul curat și fără obstacole pentru măsurători precise.
Instrucțiuni de Cablare

Pentru a cabla modulul Sharp IR de distanță, conectați firul roșu la pinul de 5V pe Arduino. Apoi, conectați firul negru la unul dintre pinii de masă (GND) pe Arduino. Firul galben, care scoate măsurarea distanței, ar trebui conectat la pinul analogic A0 pe Arduino. Pentru afișajul LCD1602, conectați pinii astfel: rs la pinul 12, en la pinul 11, d4 la pinul 5, d5 la pinul 4, d6 la pinul 3 și d7 la pinul 2. Asigurați-vă că toate conexiunile sunt sigure pentru a evita problemele de cablare slăbită (în video la 02:15).
Exemple de Cod și Explicații
Codul Arduino pentru acest proiect inițializează LCD-ul și senzorul Sharp IR. Identificatorii cheie includ IR, care este definit ca pinul analogic folosit pentru ieșirea Sharp IR, și model, care specifică tipul de senzor Sharp utilizat. În funcția de configurare, LCD-ul este inițializat pentru a afișa conținut.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define IR A0 // definește pinul de semnal Sharp IR
#define model 430 // modelul modulului IR
Acest fragment arată cum este inițializată biblioteca LiquidCrystal și cum sunt definite pinul senzorului IR și modelul. Modelul este esențial pentru a asigura că biblioteca funcționează corect cu tipul specific de senzor utilizat.
În funcția de buclă, distanța este măsurată continuu și afișată pe LCD. Funcția SharpIR.distance() preia distanța în centimetri, care este apoi formatată într-un șir de caractere și imprimată pe LCD.
int dis = SharpIR.distance(); // preia distanța în cm
String distance = String(dis);
distance = "Distance: " + distance + "cm";
lcd.print(distance);
Acest fragment de cod preia citirea distanței de la senzor și o formatează pentru afișare. Actualizarea continuă a afișajului oferă feedback în timp real asupra distanței măsurate de senzorul Sharp IR.
Demonstrație / Ce să Vă Așteptați
După finalizarea cablării și încărcarea codului, ar trebui să vedeți pe LCD distanța măsurată de senzorul Sharp IR. Puteți testa configurația plasând un obstacol la diferite distanțe. Citirile ar trebui să fie precise în intervalul specificat de 4 până la 30 de centimetri. Fiți conștienți că citirile pot deveni mai puțin fiabile la extremele acestui interval (în video la 04:50).
Marcaje Temporale Video
- 00:00 Introducere
- 02:15 Instrucțiuni de cablare
- 04:50 Demonstrație a configurației
/*
* Sharp IR (infrared) distance measurement module for Arduino
* Measures the distance in cm and displays it on LCD1602 (without the I2C module)
* Original library: https://github.com/guillaume-rico/SharpIR
* Watch video instructions for this code: https://youtu.be/NjUOEAoKY7A
*
* Full explanation of this code and wiring diagram is available at
* my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62
* Written by Ahmad Shamshiri on Feb 03, 2018 at 07:34
* in Ajax, Ontario, Canada. www.robojax.com
*
* 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/>.
*/
// original source https://www.arduino.cc/en/Tutorial/HelloWorld
// include the library code:
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
///////////////////***** start of Sharp IR
//Sharp IR library source: https://github.com/guillaume-rico/SharpIR
#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 LCD1602 Test
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
// Robojax Sharp IR with LCD1602 Test
}
void loop() {
lcd.clear();
// Robojax.com Sharp IR Test
lcd.setCursor(0, 0);
lcd.print("Robojax IR Test");
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
int dis=SharpIR.distance();// gets the distance in cm
String distance = String(dis);
distance ="Distance: "+distance+"cm";
lcd.print(distance);
delay(500);
// Robojax.com Sharp IR Test
}
Resurse și referințe
-
Internă
Fișiere📁
Biblioteci Arduino (zip)
-
Arduino library for sharp IR distance sensor
robojax-sharp_IR-master.zip
Fișier Fritzing
-
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB -
sharp ir sensor GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz