Arduino-code en video voor Sharp IR-afstandsmodule met LCD1602-display
In deze tutorial leren we hoe we de Sharp infrarood afstandsmodule kunnen gebruiken in combinatie met een LCD1602-display om afstanden nauwkeurig te meten. De Sharp IR-sensor zal de gemeten afstand uitvoeren, die vervolgens op het LCD wordt weergegeven, wat zorgt voor real-time feedback. Aan het einde van dit project heb je een werkende opstelling die afstanden van 4 tot 30 centimeter kan meten (in video op 00:30).
Sharp analoge uitvoermodules:
2 tot 15 cm GP2Y0A51SK0F
4 tot 30 cm GP2Y0A41SK0F / GP2Y0AF30-serie
10 tot 80 cm GP2Y0A21YK0F
10 tot 150 cm GP2Y0A60SZLF
20 tot 150 cm GP2Y0A02YK0F
100 tot 550 cm GP2Y0A710K0F

De Sharp IR-afstandssensor werkt door infrarood licht uit te zenden en de tijd te meten die het licht nodig heeft om terug te kaatsen. Hierdoor kan de sensor de afstand berekenen op basis van de hoeveelheid ontvangen licht. Het LCD1602-display wordt gebruikt om deze informatie in een leesbaar formaat weer te geven. De opstelling is compact, waardoor deze geschikt is voor verschillende toepassingen, waaronder robotica en afstandsmeetsystemen.
Hardware uitgelegd
Voor dit project gebruiken we de Sharp IR-afstandssensor en het LCD1602-display. De Sharp IR-sensor heeft drie draden: de rode draad verbindt met 5V-voeding, de zwarte draad verbindt met aarde, en de gele draad is het uitvoersignaal dat verbindt met een analoge pin op de Arduino. Het LCD1602-display vereist verschillende pinnen voor communicatie, die ook op de Arduino worden aangesloten.
Het LCD1602-display gebruikt een LiquidCrystal-bibliotheek om de gegevens die ernaartoe worden gestuurd te beheren, waardoor eenvoudige controle over de uitvoer van het display mogelijk is. Deze bibliotheek verzorgt de communicatie tussen de Arduino en het LCD, waardoor het eenvoudig is om tekst en cijfers af te drukken.
Datasheet-details
| Fabrikant | Sharp |
|---|---|
| Onderdeelnummer | GP2Y0A41SK0F |
| Logica/IO-spanning | 5 V |
| Voedingsspanning | 4,5 – 5,5 V |
| Werkend afstandsbereik | 4 – 30 cm |
| Uitvoerspanning (bij 30 cm) | 0,4 V |
| Uitvoerspanning (bij 4 cm) | 3 V |
| Reactietijd | 30 ms |
| Verpakking | Compacte module |
| Opmerkingen / varianten | Verschillende modellen beschikbaar voor uiteenlopende bereiken |
- Zorg ervoor dat de sensor correct wordt gevoed met 5 V.
- Gebruik een gemeenschappelijke aarde voor alle componenten.
- Wees voorzichtig met de uitvoerspanning, die varieert met de afstand.
- Overweeg een filter voor het uitvoersignaal te gebruiken om de metingen te stabiliseren.
- Houd de sensor schoon en vrij van obstakels voor nauwkeurige metingen.
Bedradingsinstructies

Om de Sharp IR-afstandsmodule te bedraden, verbind je de rode draad met de 5V-pin op de Arduino. Verbind vervolgens de zwarte draad met een van de aardingspinnen (GND) op de Arduino. De gele draad, die de afstandsmeting uitvoert, moet worden verbonden met de analoge pin A0 op de Arduino. Voor het LCD1602-display verbind je de pinnen als volgt: rs met pin 12, en met pin 11, d4 met pin 5, d5 met pin 4, d6 met pin 3 en d7 met pin 2. Zorg ervoor dat alle verbindingen stevig zijn om losse bedradingsproblemen te voorkomen (in video op 02:15).
Codevoorbeelden en uitleg
De Arduino-code voor dit project initialiseert het LCD en de Sharp IR-sensor. De belangrijkste identificatoren zijn IR, die is gedefinieerd als de analoge pin die wordt gebruikt voor de Sharp IR-uitvoer, en model, die het type Sharp-sensor specificeert dat wordt gebruikt. In de setup-functie wordt het LCD geïnitialiseerd om inhoud weer te geven.
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 // definieer Sharp IR-signaalpin
#define model 430 // het model van de IR-module
Dit fragment laat zien hoe de LiquidCrystal-bibliotheek wordt geïnitialiseerd en hoe de IR-sensorpin en het model worden gedefinieerd. Het model is cruciaal om ervoor te zorgen dat de bibliotheek correct werkt met het specifieke type sensor dat wordt gebruikt.
In de loop-functie wordt de afstand continu gemeten en op het LCD weergegeven. De functie SharpIR.distance() haalt de afstand in centimeters op, die vervolgens wordt opgemaakt als een string en op het LCD wordt afgedrukt.
int dis = SharpIR.distance(); // haalt de afstand in cm op
String distance = String(dis);
distance = "Afstand: " + distance + "cm";
lcd.print(distance);
Dit codefragment haalt de afstandsmeting van de sensor op en formatteert deze voor weergave. De continue update van het display geeft real-time feedback over de afstand die door de Sharp IR-sensor wordt gemeten.
Demonstratie / Wat te verwachten
Na het voltooien van de bedrading en het uploaden van de code, zou je op het LCD de afstand moeten zien die door de Sharp IR-sensor wordt gemeten. Je kunt de opstelling testen door een obstakel op verschillende afstanden te plaatsen. De metingen moeten nauwkeurig zijn binnen het gespecificeerde bereik van 4 tot 30 centimeter. Houd er rekening mee dat metingen minder betrouwbaar kunnen worden aan de uitersten van dit bereik (in video op 04:50).
Videotijdstempels
- 00:00 Introductie
- 02:15 Bedradingsinstructies
- 04:50 Demonstratie van de opstelling
/*
* 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
}
Hulpmiddelen en referenties
-
Intern
Bestanden📁
Arduino-bibliotheken (zip)
-
Arduino library for sharp IR distance sensor
robojax-sharp_IR-master.zip
Fritzing-bestand
-
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB -
sharp ir sensor GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz