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

สำหรับโปรเจกต์นี้ คุณจะต้องเข้าใจการเดินสายไฟและโค้ดที่ขับเคลื่อนการทำงานร่วมกันระหว่างส่วนประกอบต่างๆ เซนเซอร์วัดระยะอินฟราเรด Sharp จะส่งข้อมูลระยะทางที่วัดได้ไปยัง Arduino ซึ่งจะอัปเดตจอแสดงผล TM1637 ตามลำดับ บทช่วยสอนนี้จะอธิบายรายละเอียดคำแนะนำการเดินสายไฟและให้ข้อมูลเชิงลึกเกี่ยวกับโค้ดที่ทำให้ทุกอย่างทำงานได้อย่างราบรื่น (ในวิดีโอที่ 00:00)
อธิบายฮาร์ดแวร์
ส่วนประกอบหลักของโปรเจกต์นี้คือโมดูลวัดระยะอินฟราเรด Sharp และจอแสดงผล TM1637 โมดูล Sharp ใช้แสงอินฟราเรดในการวัดระยะทางถึงวัตถุโดยการคำนวณเวลาที่แสงที่ปล่อยออกมาสะท้อนกลับมา โดยให้สัญญาณเอาต์พุตแบบแอนะล็อกที่แปรผันตามระยะทางที่วัดได้
จอแสดงผล TM1637 เป็นจอแสดงผล 7 ส่วน 4 หลักที่ควบคุมผ่านสองพิน: พินสัญญาณนาฬิกาและพินข้อมูลเข้า/ออก จอแสดงผลนี้ช่วยให้เห็นค่าการวัดระยะทางจากโมดูล Sharp ได้ง่าย ทำให้ใช้งานง่ายและเหมาะสำหรับการประยุกต์ใช้งานต่างๆ
รายละเอียดจาก Datasheet
| ผู้ผลิต | Sharp |
|---|---|
| หมายเลขชิ้นส่วน | GP2Y0A41SK0F |
| แรงดันไฟฟ้าลอจิก/IO | 5 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 - ข้อผิดพลาดทั่วไปและการแก้ไขปัญหา
/*
* 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
}
สิ่งที่คุณอาจต้องการ
-
อเมซอน
แหล่งข้อมูลและเอกสารอ้างอิง
-
ภายนอกSharp IR GP2Y0A51SK0F Datasheet (PDF)global.sharp
ไฟล์📁
ไลบรารี Arduino (zip)
-
TM1637 Arduino Library
TM1637_library.zip1.36 MB -
Arduino library for sharp IR distance sensor
robojax-sharp_IR-master.zip
แผ่นข้อมูล (pdf)
-
Sharp IR GP2Y0A21YK Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A21YK_datasheet.pdf0.36 MB
ไฟล์ Fritzing
-
TM1637 Seven Segment module
TM1637.fzpz0.01 MB -
sharp ir sensor GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz
คู่มือผู้ใช้
-
คู่มือการแสดงผล TM1637
robojax-TM1637_display_manual.pdf0.31 MB
ไฟล์อื่น ๆ
-
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