Search Code

لوښ ۷۴: د Arduino سره د تیز انفراریډ سینسر ماډل کارول

لوښ ۷۴: د Arduino سره د تیز انفراریډ سینسر ماډل کارول

پیژندنه

دا لارښود ښیي چې څنګه د Arduino سره دوه یا ډیر Sharp انفراریډ (IR) واټن سینسرونه وکاروئ ترڅو واټن اندازه کړئ او پایلې په سریال مانیټر کې وښایئ. پداسې حال کې چې یو واحد سینسر ګټور دی، ډیری ریښتینې نړۍ غوښتنلیکونه، لکه سمارټ موټر، روبوټیک بازو، یا هر ډول خوځنده ماشین، په یو وخت کې له څو لارښوونو څخه د واټن اندازه کولو ته اړتیا لري. د مثال په توګه، تاسو کولی شئ یو سینسر په مخ کې نصب کړئ ترڅو مخکې واټن اندازه کړئ، او بل د ښي یا چپ اړخ په اړخ کې ترڅو له ټکر څخه مخنیوی وکړئ. دا ټیوټوریل ښیي چې څنګه خپل Arduino تنظیم کړئ ترڅو څو سینسرونه په مؤثره توګه اداره کړئ، د یو جلا، مفصل ویډیو پر بنسټ چې د انفرادي سینسر مشخصات او عملیات تشریح کوي.

دلته ځینې عملي پروژې نظرونه دي چې تاسو ته الهام درکوي:

  • د روبوټ جوړول چې د خپل چپ، ښي او مخ اړخونو کې د واټن اندازه کولو سره له خنډونو څخه مخنیوی کوي.
  • د سمارټ پارکینګ مرستیال جوړول چې څو سینسرونه کاروي ترڅو موټر په تنګ ځای کې لارښوونه وکړي.
  • د امنیتي سیسټم پراختیا چې د دروازې یا دهلیز څارنه کوي د سینسرونو سره چې په مختلفو زاویو کې ایښودل شوي.
  • د متقابل هنري نصب جوړول چیرې چې د لیدونکي لاس واټن هغه څه بدلوي چې ښودل کیږي.
Sharpt IR distance sensor

په دې ویډیو کې، تمرکز د تارونو او کوډ په اړه دی چې د څو Sharp IR سینسرونو چلولو لپاره اړین دي. مظاهره دوه GP2Y0A21YK0F سینسرونه کاروي، کوم چې له 10 څخه تر 80 سانتي مترو پورې واټن اندازه کوي. کوډ په اسانۍ سره د پراختیا وړ جوړ شوی، نو تاسو کولی شئ دریم، څلورم، یا حتی ډیر سینسرونه یوازې د څو کرښو کوډ سره اضافه کړئ.

هارډویر او اجزاوې

د دې پروژې تعقیب لپاره، تاسو به لاندې اجزاوو ته اړتیا ولرئ:

  • د Arduino بورډ (د مثال په توګه، Uno، Mega).
  • دوه یا ډیر Sharp IR واټن سینسرونه (د مثال په توګه، GP2Y0A21YK0F).
  • جمپر تارونه.
  • د بریډبورډ (اختیاري، د اسانه اړیکو لپاره).

د تارونو لارښود

د Sharp IR سینسر درې تارونه لري: سور (بریښنا)، تور (ځمکه)، او ژیړ (سیګنال محصول). تارونه مستقیم دي. د لومړي سینسر لپاره، د هغه سور تار د Arduino د 5V پن سره وصل کړئ، تور تار د ځمکې (GND) پن سره، او ژیړ سیګنال تار د انلاګ پن سره، د مثال په توګه، A1. د دوهم سینسر لپاره، د هغه سور تار د ورته یا بل 5V پن سره وصل کړئ، تور تار GND سره، او ژیړ تار د بل انلاګ پن سره، لکه A2.

که تاسو د 5V پنونو څخه خلاص شئ، ویډیو یو هوښیار حل وړاندې کوي. تاسو کولی شئ هر ډیجیټل پن د بریښنا سرچینې په توګه وکاروئ. په کوډ کې، ډیجیټل پن 2 د محصول په توګه تنظیم شوی او HIGH ته ټاکل شوی، کوم چې دوامداره 5V چمتو کوي. تاسو به بیا د خپلو سینسرونو سور تارونه دې ډیجیټل پن سره وصل کړئ پرځای د وقف شوي 5V پن. د ځمکې تارونه د Arduino په هر GND پن سره وصل کیدی شي. ویډیو د دې تنظیم مظاهره په [00:06:10] کې ښیي.

د اړیکو بصري حوالې لپاره، مهرباني وکړئ لاندې د تارونو ډیاګرام ته مراجعه وکړئ:

Arduino wiring for multiple Sharp IR distance sensors
Arduino wiring for multiple Sharp IR distance sensors
Arduino wiring for Sharf IR distance sensor
Arduino wiring for Sharf IR distance sensor
Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602

د کوډ تشریح

دا برخه د کوډ د کارونکي تنظیم وړ برخو باندې تمرکز کوي، کوم چې ټول د سکیچ په سر کې موقعیت لري. دا هغه ځای دی چیرې چې تاسو به خپل پنونه او سینسر ماډلونه تعریف کړئ.

لومړی، کوډ د Sharp IR سینسرونو لپاره اړین کتابتون شاملوي، #include <SharpIR.h>. دا کتابتون پیچلي ریاضیات اداره کوي چې د سینسر څخه انلاګ ولټاژ په واټن لوستلو بدلولو لپاره اړین دي.

بیا، تاسو به د هر سینسر لپاره انلاګ پنونه تعریف کړئ. د مثال کوډ #define IR1 A1 او #define IR2 A2 کاروي. که تاسو له دوو څخه ډیر سینسرونه کاروئ، تاسو به دلته نور تعریفونه اضافه کړئ، لکه #define IR3 A3.

د تنظیم یوه مهمه برخه د خپل سینسر لپاره سم ماډل ټاکل دي. کوډ #define model1 1080 او #define model2 1080 کاروي. دا شمیره خپل سري نه ده؛ دا کتابتون ته وایي چې تاسو کوم سینسر لرئ، ځکه چې هر ماډل مختلف ولټاژ-تر-واټن منحني لري. د کوډ تبصرې یو ګټور لیست چمتو کوي:

  • 2 څخه تر 15 سانتي مترو GP2Y0A51SK0F 215 وکاروئ
  • 4 څخه تر 30 سانتي مترو GP2Y0A41SK0F / GP2Y0AF30 لړۍ 430 وکاروئ
  • 10 څخه تر 80 سانتي مترو GP2Y0A21YK0F 1080 وکاروئ
  • 10 څخه تر 150 سانتي مترو GP2Y0A60SZLF 10150 وکاروئ
  • 20 څخه تر 150 سانتي مترو GP2Y0A02YK0F 20150 وکاروئ
  • 100 څخه تر 550 سانتي مترو GP2Y0A710K0F 100550 وکاروئ

تاسو باید دا ارزښت بدل کړئ ترڅو ستاسو د ځانګړي سینسر سره سمون ولري. د مثال په توګه، که تاسو GP2Y0A02YK0F کاروئ، تاسو به تعریف #define model1 20150 ته بدل کړئ. کوډ بیا د هر سینسر لپاره یو څیز جوړوي، لکه SharpIR SharpIR1(IR1, model1);. دا کرښه د لومړي سینسر لپاره پن او ماډل سره نښلوي. که تاسو ډیر سینسرونه اضافه کړئ، تاسو به دا کرښه کاپي کړئ او د څیز نوم، پن، او ماډل په مطابق بدل کړئ.

په setup() فنکشن کې، سریال مانیټر په 9600 باد کې پیل شوی. دا هغه سرعت دی چې په هغه کې Arduino ستاسو کمپیوټر سره اړیکه نیسي. کوډ یوه برخه هم لري ترڅو د اړتیا په صورت کې ډیجیټل پن د 5V سرچینې په توګه وکاروي، لکه څنګه چې د تارونو برخه کې تشریح شوی. دا د pinMode(2,OUTPUT); او digitalWrite(2, HIGH); سره ترسره کیږي.

په پای کې، loop() فنکشن اصلي منطق لري. په پیل کې delay(500); شتون لري، کوم چې د هر لوستلو سیټ ترمنځ وخت 500 ملی ثانیو ته ټاکي. تاسو کولی شئ دا تنظیم کړئ ترڅو لوستل ډیر یا لږ پرله پسې کړئ. د لوپ اصلي برخه هغه ځای دی چیرې چې تاسو د کتابتون د distance() فنکشن په کارولو سره د هر سینسر څخه واټن لوستئ، لکه int dis1=SharpIR1.distance();. پایلې بیا د تشریحي متن سره سریال مانیټر ته چاپ کیږي، لکه Serial.print("Distance (1): ");، ورپسې ارزښت او واحد "cm".

ژوندۍ پروژې مظاهره

په ویډیو کې، وړاندې کوونکی د دوو سینسرونو سره ترتیب څرګندوي. لکه څنګه چې تاسو په [00:07:44] کې په مظاهره کې لیدلی شئ، سریال مانیټر د دواړو سینسرونو څخه د فاصلې لوستل ښیې. کله چې یو شی د لومړي سینسر مخې ته کیښودل شي، د "Distance (1)" لوستل بدلیږي. په ورته ډول، کله چې یو شی د دوهم سینسر مخې ته کیښودل شي، د "Distance (2)" لوستل تازه کیږي. ویډیو ښیې چې د کاغذ یوه پاڼه په فاصله کې نیولو سره، سینسرونه نږدې 23 او 24 سانتي متره لوستل کوي. کله چې یو سینسر بند شي، د هغې لوستل نږدې 17 سانتي مترو ته راټیټیږي، چې دا تاییدوي چې هر سینسر په خپلواکه توګه کار کوي او د خپل اړوند لوري لپاره په ریښتیني وخت کې د فاصلې معلومات چمتو کوي. دا د کوډ وړتیا تاییدوي چې په یو وخت کې د څو سینسرونو اداره وکړي.

فصلونه

  • [00:00] د څو شارپ IR سینسرونو کارولو پیژندنه
  • [00:28] د څو فاصلې سینسرونو لپاره غوښتنلیکونه
  • [01:34] د کوډ تشریح: کتابتون او د پن تعریفونه
  • [02:24] د سینسر ماډلونو تنظیم او د شیانو جوړول
  • [04:15] د Setup او Loop دندو تشریح
  • [06:10] د څو سینسرونو لپاره د تارونو لارښود
  • [07:44] د دوو سینسرونو سره ژوندۍ مظاهره

Images

Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for multiple Sharp IR distance sensors
Arduino wiring for multiple Sharp IR distance sensors
Arduino wiring for Sharf IR distance sensor
Arduino wiring for Sharf IR distance sensor
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602
176-Using a Sharp IR sensor module with Arduino
Language: C++
++
/*
 * Using two or more Sharp IR distance sensors with Arduino
 * Measure distance 

 * Download and resource page for this video https://robojax.com/RJT143
 * Watch video instructions for this video: https://youtu.be/WQ3oFyF5qeY
 * 
 * Watch main video explaining the Sharp IR distance sensor:
 * https://robojax.com?vid=robojax-sharp_IR
 * 
 * Written by Ahmad Shamshiri for Robojax.com on Saturday, December 1, 2018 
 * at 20:56 in Ajax, Ontario, Canada

 * 
  * 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 <SharpIR.h>

#define IR1 A1 // define signal pin
#define IR2 A2 // define signal pin

#define model1 1080 // for GP2Y0A21YK0F  used 1080
#define model2 1080 // for GP2Y0A21YK0F  used 1080

// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
/*
2 to 15 cm GP2Y0A51SK0F  use 215
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series  use 430
10 to 80 cm GP2Y0A21YK0F  use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F  use 100550
*/
SharpIR SharpIR1(IR1, model1);
SharpIR SharpIR2(IR2, model2);

void setup() {
    // Multiple Sharp IR Distance meter code for Robojax.com
 Serial.begin(9600);
 Serial.println("Robojax Sharp IR  ");

 // extra pin for 5V if needed
 pinMode(2,OUTPUT);// define pin 2 as output
 digitalWrite(2, HIGH);// set pin 2 HIGH so it always have 5V
  // Robojax.com 20181201
}

void loop() {
    // Sharp IR code for Robojax.com 20181201
    delay(500);   

  unsigned long startTime=millis();  // takes the time before the loop on the library begins

  int dis1=SharpIR1.distance();  // this returns the distance for sensor 1
  int dis2=SharpIR2.distance();  // this returns the distance for sensor 2
  // Sharp IR code for Robojax.com 20181201

  Serial.print("Distance (1): ");
  Serial.print(dis1);
  Serial.println("cm");
  
  Serial.print("Distance (2): ");
  Serial.print(dis2);
  Serial.println("cm");
     // Sharp IR code for Robojax.com
     
}
452-Lesson 74: Using Two Sharp Infrared Sensors with Arduino
Language: C++
++
/*
  * Lesson 74: Using two or more Sharp IR distance sensors
 * Sharp IR (infrared) distance measurement module for Arduino
 * Measures the distance in cm. 
 * Written by Ahmad Shamshiri for Robojax.com 
 * on February 25, 2019 at 21:38 in Ajax, Ontario, Canada




 * Original library: https://github.com/guillaume-rico/SharpIR
 
 * Watch video instructions for this code: https://youtu.be/WQ3oFyF5qeY
 * 
 * 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 February 3, 2018 at 07:34
 * in Ajax, Ontario, Canada. www.robojax.com
 * 


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/>.

*/




 */
  // Sharp IR code for Robojax.com
#include 

#define IR A0 // define signal pin
#define model 1080 // used 1080 because model GP2Y0A21YK0F is used
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:  1080 for GP2Y0A21Y
//                                            20150 for GP2Y0A02Y
//                                            430 for GP2Y0A41SK   
/*
2 to 15 cm GP2Y0A51SK0F	use 1080
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series	use 430
10 to 80 cm GP2Y0A21YK0F	use 1080
10 to 150 cm GP2Y0A60SZLF	use 10150
20 to 150 cm GP2Y0A02YK0F	use 20150
100 to 550 cm GP2Y0A710K0F	use 100550

*/
#include <SharpIR.h>

#define IR1 A1 // define signal pin
#define IR2 A2 // define signal pin

#define model1 1080 // for GP2Y0A21YK0F  used 1080
#define model2 1080 // for GP2Y0A21YK0F  used 1080

// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
/*
2 to 15 cm GP2Y0A51SK0F  use 215
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series  use 430
10 to 80 cm GP2Y0A21YK0F  use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F  use 100550
*/
SharpIR SharpIR1(IR1, model1);
SharpIR SharpIR2(IR2, model2);

void setup() {
    // Multiple Sharp IR Distance meter code for Robojax.com
 Serial.begin(9600);
 Serial.println("Robojax Sharp IR  ");

 // extra pin for 5V if needed
 pinMode(2,OUTPUT);// define pin 2 as output
 digitalWrite(2, HIGH);// set pin 2 HIGH so it always have 5V
  // Robojax.com 20181201
}

void loop() {
    // Sharp IR code for Robojax.com 20181201
    delay(500);   

  unsigned long startTime=millis();  // takes the time before the loop on the library begins

  int dis1=SharpIR1.distance();  // this returns the distance for sensor 1
  int dis2=SharpIR2.distance();  // this returns the distance for sensor 2
  // Sharp IR code for Robojax.com 20181201

  Serial.print("Distance (1): ");
  Serial.print(dis1);
  Serial.println("cm");
  
  Serial.print("Distance (2): ");
  Serial.print(dis2);
  Serial.println("cm");
     // Sharp IR code for Robojax.com
     
}

Files📁

Fritzing File

Other files