Koodka Arduino iyo Fiidiyowga Module-ka Fogaanta IR ee Sharp oo leh LCD1602 iyo Module-ka I2C
Hagaha mashruucani wuxuu ku hagayaa sidii aad u dhisid nidaam cabbiridda masaafada oo fudud laakiin wax ku ool ah, adoo isticmaalaya dareeme Infrared (IR) oo nooca Sharp ah iyo shaashad LCD1602. Nidaamkani wuxuu kuu ogolaanayaa inaad si sax ah u cabbirto masaafooyinka gudaha xad gaar ah oo aad si toos ah ugu soo bandhigto shaashadda, taasoo ka dhigaysa mid ku habboon codsiyada kala duwan ee elektaroonigga DIY. Qaybaha wax soo saarka analog-ga ee Sharp:2 ilaa 15 cm GP2Y0A51SK0F
4 ilaa 30 cm GP2Y0A41SK0F / GP2Y0AF30 series
10 ilaa 80 cm GP2Y0A21YK0F
10 ilaa 150 cm GP2Y0A60SZLF
20 ilaa 150 cm GP2Y0A02YK0F
100 ilaa 550 cm GP2Y0A710K0F Tusaalooyinka isticmaalka wax ku oolka ah iyo fikradaha mashruuca ee nidaamkan waxaa ka mid ah: - Dhisidda nidaam kaalmo baabuur oo toos ah si looga hortago dhaawaca bumper-ka. - Abuurista dareeme heerka biyaha oo fudud oo loogu talagalay taangiyada ama ceelasha. - Horumarinta qalab qaybiye dareere ah oo aan taaban. - Hirgelinta qarax ammaan oo aasaasi ah adoo ogaada isku dhowaanshaha. - Abuurista tilmaame heerka buuxinta ee hoppers-ka ama weelasha. - Naqshadaynta nidaam ka hortagga isku dhaca ee robots-yada yaryar ama baabuurta RC. ## Qalabka/Qaybaha Si aad u dhamaystirtid mashruucan, waxaad u baahan doontaa qaybaha soo socda: - Arduino Uno ama guddi la jaan qaadaya - Dareemaha masaafada ee Infrared-ka ee Sharp (nooca GP2Y0A41SK0F, oo cabbira 4 ilaa 30 cm) - LCD1602 oo leh module I2C (si fudud oo fiilooyin ah) - Breadboard (ikhtiyaar, si loogu tijaabiyo) - Fiilooyinka jumper-ka - Fiilo USB ah oo loogu talagalay korontada Arduino iyo barnaamijyada ## Hagaha Fiilooyinka Ku xirista dareemaha IR-ka ee Sharp iyo LCD1602 oo leh module I2C ee Arduino-gaaga waa mid toos ah, mahadnaq module-ka I2C kaas oo yareeya tirada fiilooyinka loo baahan yahay ee LCD-ga. Dareemaha IR-ka ee Sharp wuxuu leeyahay saddex fiilo: Cas (5V), Madow (Ground), iyo Jaalle (Output). Ku xir fiilada cas ee binka 5V ee Arduino-ga, fiilada madow ee binkasta oo GND ah ee Arduino-ga, iyo fiilada wax soo saarka ee jaallaha ah ee binka Analog A0 ee Arduino-ga (fiidiyowga 03:55). LCD1602 oo leh module I2C wuxuu leeyahay afar fiilo: VCC, GND, SDA, iyo SCL. Ku xir binka VCC ee 5V ee Arduino-ga, iyo binka GND ee GND-ga Arduino-ga. Fiilada SDA (Serial Data Line) waa in lagu xiraa binka Analog A4 ee Arduino-ga, fiilada SCL (Serial Clock Line) waa in lagu xiraa binka Analog A5 ee Arduino-ga (fiidiyowga 02:42). ## Sharaxaadda Koodhka Koodhka Arduino ee la bixiyay wuxuu isticmaalaa laba maktabadood oo waaweyn:
Wire.h oo loogu talagalay isgaarsiinta I2C iyo LiquidCrystal_I2C.h oo loogu talagalay xakamaynta LCD-ga, iyo SharpIR.h oo loogu talagalay dareemaha IR-ka ee Sharp. Qaybaha koodhka ee isticmaaluhu beddeli karo waxay inta badan ku xiran yihiin qeexidda dareemaha iyo bilaabista LCD-ga.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Deji cinwaanka LCD-ga si 0x27 uu u noqdo shaashad 16 xaraf iyo 2 sadar ah
LiquidCrystal_I2C lcd(0x27, 16, 2);
Sadarka LiquidCrystal_I2C lcd(0x27, 16, 2); wuxuu bilaabayaa shayga LCD-ga. Halbeegga koowaad, 0x27 (fiidiyowga 03:26), waa cinwaanka I2C ee caadiga ah ee inta badan module-yada I2C LCD-ga ee ku salaysan PCF8574. Haddii LCD-gaagu aanu shaqayn, waxaa laga yaabaa inaad u baahato inaad hesho cinwaankiisa saxda ah (beddelka caadiga ah waa 0x3F). Halbeegga labaad, 16, wuxuu qeexayaa in LCD-gaagu leeyahay 16 xaraf oo sadar kasta ah, halbeegga saddexaad, 2, wuxuu muujinayaa inuu leeyahay 2 sadar.
#include <SharpIR.h>
#define IR A0 // qeex binka signal-ka ee Sharp IR
#define model 430 // nooca module-ka IR
// Koodhka Sharp IR ee Robojax.com
// ir: binka dareemahaagu ku xiran yahay
// model: int go'aamiya dareemahaaga:
/*
* GP2Y0A02YK0F --> "20150"
GP2Y0A21YK --> "1080"
GP2Y0A710K0F --> "100500"
GP2YA41SK0F --> "430"
*/
SharpIR SharpIR(IR, model);
Sadarradan waxay dejiyaan dareemaha IR-ka ee Sharp. #define IR A0 wuxuu qeexayaa binka analog-ga ee Arduino-ga halkaas oo fiilada wax soo saarka ee dareemaha IR-ka ee Sharp ku xiran tahay. #define model 430 (fiidiyowga 04:27) waa mid muhiim ah maxaa yeelay wuxuu qeexayaa nooca saxda ah ee dareemahaaga IR-ka ee Sharp. Maktabaddu waxay isticmaashaa lambarkan si ay u adeegsato beddelka xisaabeed ee saxda ah ee ka yimaada wax soo saarka danabka analog-ga ee dareemaha ilaa masaafo sentimitir ah. Qaybta faallooyinku waxay taxaysaa noocyo kala duwan oo Sharp IR ah iyo qiyamyada tirooyinka ee u dhigma ee waa in lagu isticmaalo halkan. Tusaale ahaan, haddii aad isticmaalayso GP2Y0A21YK, waxaad beddeli lahayd 430 oo aad dhigi lahayd 1080.
void setup()
{
lcd.begin();
lcd.backlight();
}
Gudaha shaqada setup(), lcd.begin() wuxuu bilaabayaa LCD-ga, iyo lcd.backlight() wuxuu shidayaa iftiinka dambe, taasoo ka dhigaysa shaashadda mid la arki karo.
void loop()
{
lcd.clear();
lcd.print("Robojax IR Test");
lcd.setCursor (0,1); // aad bilowga sadarka 2aad
int dis=SharpIR.distance();// hel masaafada cm
String distance = String(dis);
distance ="Distance: "+distance+"cm";
lcd.print(distance);
delay(500);
}
Gudaha shaqada loop():lcd.clear();waxa ay nadiifisaa qoraal kasta oo hore ku jiray shaashadda.lcd.print("Robojax IR Test");waxa ay daabacdaa farriin joogto ah sadarka koowaad.lcd.setCursor (0,1);waxa ay dhaqaaqdaa cursor-ka bilowga sadarka labaad (0 waa tiirka koowaad, 1 waa sadarka labaad, maadaama sadarrada ay yihiin 0-tixraac).int dis=SharpIR.distance();waxa ay u yeedhaa shaqadadistance()ee maktabadda SharpIR si ay u akhrido qiimaha sensor-ka oo ugu beddesho integer kaas oo matalaya masaafada sentimitir (fiidiyowga 05:06). Tani waa shaqada asaasiga ah ee lagu helo cabbirka.String distance = String(dis);waxa ay u beddeshaa integer-ka masaafada string, sababtoo ah ma aad si toos ah ugu dari kartid integers-ka iyo strings-ka daabacaadda.distance ="Distance: "+distance+"cm";waxa ay qaabaysaa string-ka si ay ugu darto "Distance: " hortiisa qiimaha iyo "cm" gadaashiisa.lcd.print(distance);waxa ay muujisaa string-ka masaafada ee qaabaysan LCD-ga.delay(500);waxa ay soo bandhigtaa hakad 500-milliseken ah (fiidiyowga 06:00). Hakadkani wuxuu muhiim u yahay saxnaanta iyo xasilloonida sensor-ka Sharp. Waxaad hagaajin kartaa qiimahan: kordhintiisa waxaa laga yaabaa inay wanaajiso saxnaanta laakiin hoos u dhigto cusboonaysiinta, halka dhimistiisa uu dedejiyo cusboonaysiinta laakiin laga yaabo inuu yareeyo saxnaanta.
Mashruuc/Bandhig Toos ah
Marka qaybaha la xiro oo koodhka lagu shubo Arduino-gaaga, nidaamku wuxuu bilaabi doonaa cabbiraadda iyo muujinta masaafooyinka. Mashruucu wuxuu muujinayaa cabbirro sax ah masaafo dhow, tusaale ahaan, muujinta 12 cm marka shaygu yahay 12 cm (fiidiyowga 00:31) iyo 10 cm marka uu yahay 10 cm (fiidiyowga 00:37).
Si kastaba ha ahaatee, marka shaygu sii fogaado, gaar ahaan in ka badan 15-20 cm, saxnaanta ayaa laga yaabaa inay hoos u dhacdo. Tusaale ahaan, 20 cm, shaashadda waxaa laga yaabaa inay muujiso 21 cm (fiidiyowga 07:06), iyo 25 cm, waxaa laga yaabaa inay akhrido 28 ama 29 cm (fiidiyowga 07:32). Dabeecadani waxay caan ku tahay sensor-kaan infrared-ka ah. Sensor-ka Sharp IR wuxuu soo saaraa danab analog ah oo ku kala duwan masaafada: marka masaafadu kordho, danabka soo baxa ayaa hoos u dhaca (fiidiyowga 07:56).
Xiriirka ka dhexeeya masaafada iyo danabka soo baxa ma aha mid toosan, gaar ahaan xadka ugu sarreeya iyo ugu hooseeya ee sensor-ka. Non-linearity-gan ayaa sabab u ah in maktabadda `SharpIR` ay faa'iido leedahay, maadaama ay ka kooban tahay xog hagaajin ah si loogu beddelo danab-yaasha kala duwan cabbirro masaafo oo sax ah. Codsiyada u baahan saxnaan sare masaafo dheer, waxaa laga yaabaa inay lagama maarmaan noqoto in la doorto nooc kale oo Sharp IR ah oo loogu talagalay masaafooyinkaas ama la hirgeliyo qaloocyada hagaajinta ee gaarka ah.
Cutubyada
- [00:06] Hordhaca Mashruuca iyo Dulmarka
- [01:10] Faahfaahinta Sensor-ka Sharp IR iyo Pinout-ka
- [02:09] Xirista Qaybta LCD I2C Module
- [02:58] Sharaxaadda Koodhka Arduino
- [06:36] Bandhigga Cabbiraadda Masaafada
- [07:47] Astaamaha Sensor-ka iyo Xaddidaadyada Saxnaanta
- [08:48] Gabagabada iyo Kheyraadka
/*
* 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
}
Waad u baahan tahay
-
AmaazonBuy LCD1602-I2C from Amazonamzn.to
-
Amaazon
Kheyraadka & Tixraacyada
Wali wax kaydsan ah oo weli ma jiro.
Faylasha📁
Arduino Libraries (zip)
-
Arduino library for sharp IR distance sensor
robojax-sharp_IR-master.zip
Waraaqa xogta (pdf)
-
Sharp IR GP2Y0A21YK Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A21YK_datasheet.pdf0.36 MB
Faylka Fritzing
-
LCD LCD1602-I2C module oo leh 4 wires
LCD1602-I2C.fzpz0.01 MB -
sharp ir sensor GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz
Faylal kale
-
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