ค้นหาโค้ด

โค้ด Arduino และวิดีโอสำหรับโมดูลวัดระยะอินฟราเรด Sharp พร้อมจอแสดงผล TM1637

โค้ด Arduino และวิดีโอสำหรับโมดูลวัดระยะอินฟราเรด Sharp พร้อมจอแสดงผล TM1637

ในบทช่วยสอนนี้ เราจะสำรวจวิธีการใช้โมดูลวัดระยะอินฟราเรด Sharp ร่วมกับจอแสดงผล TM1637 เพื่อวัดและแสดงระยะทางด้วยภาพ การตั้งค่านี้ช่วยให้คุณวัดระยะทางได้อย่างแม่นยำและแสดงผลแบบเรียลไทม์บนโมดูล TM1637 เมื่อจบบทแนะนำนี้ คุณจะมีโปรเจกต์ที่ใช้งานได้ซึ่งสามารถวัดระยะทางและแสดงบนจอแสดงผลได้

Sharpt IR distance sensor

สำหรับโปรเจกต์นี้ คุณจะต้องเข้าใจการเดินสายไฟและโค้ดที่ขับเคลื่อนการทำงานร่วมกันระหว่างส่วนประกอบต่างๆ เซนเซอร์วัดระยะอินฟราเรด Sharp จะส่งข้อมูลระยะทางที่วัดได้ไปยัง Arduino ซึ่งจะอัปเดตจอแสดงผล TM1637 ตามลำดับ บทช่วยสอนนี้จะอธิบายรายละเอียดคำแนะนำการเดินสายไฟและให้ข้อมูลเชิงลึกเกี่ยวกับโค้ดที่ทำให้ทุกอย่างทำงานได้อย่างราบรื่น (ในวิดีโอที่ 00:00)

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักของโปรเจกต์นี้คือโมดูลวัดระยะอินฟราเรด Sharp และจอแสดงผล TM1637 โมดูล Sharp ใช้แสงอินฟราเรดในการวัดระยะทางถึงวัตถุโดยการคำนวณเวลาที่แสงที่ปล่อยออกมาสะท้อนกลับมา โดยให้สัญญาณเอาต์พุตแบบแอนะล็อกที่แปรผันตามระยะทางที่วัดได้

จอแสดงผล TM1637 เป็นจอแสดงผล 7 ส่วน 4 หลักที่ควบคุมผ่านสองพิน: พินสัญญาณนาฬิกาและพินข้อมูลเข้า/ออก จอแสดงผลนี้ช่วยให้เห็นค่าการวัดระยะทางจากโมดูล Sharp ได้ง่าย ทำให้ใช้งานง่ายและเหมาะสำหรับการประยุกต์ใช้งานต่างๆ

รายละเอียดจาก Datasheet

ผู้ผลิตSharp
หมายเลขชิ้นส่วนGP2Y0A41SK0F
แรงดันไฟฟ้าลอจิก/IO5 V
แรงดันไฟฟ้าจ่าย4.5–15 V
กระแสเอาต์พุต (ต่อช่อง)10 mA
กระแสสูงสุด (ต่อช่อง)60 mA
คำแนะนำความถี่ PWMไม่มี
เกณฑ์แรงดันไฟฟ้าลอจิกอินพุต0.8 V (ต่ำ), 2.0 V (สูง)
แรงดันตก / RDS(on) / อิ่มตัวไม่มี
ขีดจำกัดความร้อน–10 ถึง 60 °C
บรรจุภัณฑ์กล่องพลาสติก
หมายเหตุ / รุ่นต่างๆช่วงการวัดระยะทาง: 10–80 ซม.

  • ตรวจสอบให้แน่ใจว่าแหล่งจ่ายไฟเหมาะสม (4.5–15 V) เพื่อหลีกเลี่ยงความเสียหายต่อเซนเซอร์
  • ใช้ตัวเก็บประจุแยกสัญญาณใกล้กับพินจ่ายไฟเพื่อความเสถียร
  • เก็บเซนเซอร์ให้ห่างจากแสงแดดโดยตรงเพื่อป้องกันการรบกวน
  • ปรับเทียบเซนเซอร์เพื่อการอ่านค่าระยะทางที่แม่นยำ
  • เดินสายจอแสดงผล TM1637 ให้ถูกต้องเพื่อหลีกเลี่ยงการสื่อสารที่ผิดพลาด
  • พิจารณาการระบายความร้อนหากใช้งานที่กระแสสูงขึ้น

คำแนะนำการเดินสายไฟ

ในการเดินสายโมดูลวัดระยะอินฟราเรด Sharp และจอแสดงผล TM1637 เข้ากับ Arduino ให้ทำตามขั้นตอนเหล่านี้:

เชื่อมต่อสายสีแดงของโมดูล Sharp เข้ากับพิน 5V บน Arduino จากนั้นเชื่อมต่อสายสีดำเข้ากับพินกราวด์ (GND) บน Arduino สายสีเหลืองซึ่งเป็นสายเอาต์พุตควรเชื่อมต่อกับพินแอนะล็อก A0 บน Arduino สำหรับจอแสดงผล TM1637 ให้เชื่อมต่อพิน CLK เข้ากับดิจิทัลพิน 2 และพิน DIO เข้ากับดิจิทัลพิน 3 ของ Arduino การตั้งค่านี้ช่วยให้ Arduino อ่านระยะทางจากโมดูล Sharp และส่งข้อมูลไปยังจอแสดงผล TM1637

ตรวจสอบให้แน่ใจว่าการเชื่อมต่อทั้งหมดแน่นหนาเพื่อหลีกเลี่ยงปัญหาที่เกิดขึ้นเป็นระยะๆ หากคุณใช้สายจัมเปอร์ ตรวจสอบให้แน่ใจว่าเชื่อมต่ออย่างเหมาะสมเพื่อหลีกเลี่ยงการเชื่อมต่อที่หลวม

ตัวอย่างโค้ดและคำอธิบาย

ข้อความต่อไปนี้แสดงวิธีการตั้งค่าจอแสดงผลและเซนเซอร์:

#define CLK 2 // เชื่อมต่อ CLK เข้ากับพิน 2
#define DIO 3 // เชื่อมต่อ DIO เข้ากับพิน 3

SharpIR SharpIR(A0, model); // เริ่มต้นเซนเซอร์ Sharp IR

ในส่วนนี้ เรากำหนดพินสำหรับจอแสดงผล TM1637 และเริ่มต้นเซนเซอร์ Sharp IR โดยระบุพินแอนะล็อก A0 ซึ่งสำคัญสำหรับ Arduino ในการรู้ว่าจะอ่านข้อมูลจากเซนเซอร์ IR ที่ตำแหน่งใด

ฟังก์ชันลูปจะดึงค่าการวัดระยะทางและแสดงผล:

int dis = SharpIR.distance();  // รับค่าระยะทาง
display.showNumberDec(dis, false, 3, 1); // แสดงค่าระยะทาง

ที่นี่ ระยะทางจะถูกเก็บไว้ในตัวแปร dis และจอแสดงผล TM1637 จะอัปเดตเพื่อแสดงค่านี้ พารามิเตอร์ใน showNumberDec ควบคุมวิธีการแสดงตัวเลข เพื่อให้แน่ใจว่ารูปแบบถูกต้อง

การสาธิต / สิ่งที่คาดหวัง

เมื่อคุณเดินสายทุกอย่างเรียบร้อยและอัปโหลดโค้ดแล้ว คุณควรเห็นระยะทางแสดงบน TM1637 เมื่อคุณขยับวัตถุเข้าใกล้หรือไกลออกจากเซนเซอร์ จอแสดงผลจะอัปเดตแบบเรียลไทม์ อย่างไรก็ตาม โปรดทราบถึงความไม่แม่นยำที่อาจเกิดขึ้นที่ระยะทางไกลขึ้น ตามที่ระบุไว้ในวิดีโอ (ในวิดีโอที่ 12:00)

ข้อผิดพลาดทั่วไป ได้แก่ การกลับขั้วของการเชื่อมต่อไฟและอินพุตลอยของเซนเซอร์ ซึ่งอาจทำให้การอ่านค่าไม่เสถียร ตรวจสอบให้แน่ใจว่าคุณทดสอบการตั้งค่าอย่างละเอียดก่อนที่จะพึ่งพาในการวัดที่สำคัญ

ไทม์สแตมป์ในวิดีโอ

  • 00:00 - แนะนำโปรเจกต์
  • 01:30 - คำแนะนำการเดินสายไฟ
  • 03:00 - คำอธิบายโค้ด
  • 05:30 - การสาธิตการวัดระยะทาง
  • 08:00 - ข้อผิดพลาดทั่วไปและการแก้ไขปัญหา

ภาพ

Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
68-Sharp IR (infrared) module with TM1637 Display for Arduino
ภาษา: C++
/*
 * Sharp IR (infrared) distance measurement module with TM1637 Display for Arduino
 * Measures the distance in cm.

 * Original library: https://github.com/guillaume-rico/SharpIR
  * Original code for TM1637 from https://github.com/avishorp/TM1637
  
 * Watch video instructions for this code: https://youtu.be/dnjY9n927HI

 * Written by Ahmad Shamshiri on Feb 03, 2018 at 12:32
 * 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/>.

*/
#include <Arduino.h>
#include <TM1637Display.h>

// Display Module connection pins (Digital Pins)
#define CLK 2 // connect CLK to pin 2
#define DIO 3 // connect DIO to pin 3

// The amount of time (in milliseconds) between display
#define TEST_DELAY   100  
  uint8_t blank[] = { 0x0, 0x0, 0x0, 0x0 };// blank screen

TM1637Display display(CLK, DIO);

///////////////////***** 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()
{
  // Sharp IR with TM1637 Display code for Robojax.com
   display.setBrightness(0x0f);// set the brightness at max
}

void loop()
{
  // Sharp IR with TM1637 Display code for Robojax.com
  display.setSegments(blank);// clear the screen
  
  int dis=SharpIR.distance();  // this returns the distance to the object you're measuring

  display.showNumberDec(dis, false, 3, 1);// display the distance
  delay(TEST_DELAY);//delay between display
 // Sharp IR with TM1637 Display code for Robojax.com


}

สิ่งที่คุณอาจต้องการ

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไลบรารี Arduino (zip)

แผ่นข้อมูล (pdf)

ไฟล์ Fritzing

คู่มือผู้ใช้

ไฟล์อื่น ๆ