กลับไปหน้ารวมไฟล์
rgb-led-based-on-distance-718600.md

โปรเจกต์: RGB LED เปลี่ยนสีตามระยะทาง (หล่อๆ เลยวัยรุ่น)

สรุปภาพรวมโปรเจกต์: มองปุ๊บรู้ปั๊บ

การแสดงผลด้วยแสงเนี่ยแหละน้อง คือวิธีที่คูลที่สุดในการดูข้อมูลจาก Sensor แล้ว โปรเจกต์ RGB LED Based on Distance นี้จะเป็นบทเรียนพื้นฐานให้พวกแกฝึกเชื่อมโยงโลกของ Sensor เข้ากับตัวแสดงผล (Actuator) โดยเราจะใช้ Ultrasonic Sensor วัดระยะทาง แล้วสั่งให้ Arduino เปลี่ยนสีไฟ RGB LED (ที่ประกอบด้วย LED สี Red, Green และ Blue แยกกัน) เพื่อบอกว่าวัตถุอยู่ใกล้แค่ไหน

ไม่ว่าน้องจะเอาไปทำ Sensor ถอยรถเข้าซอง หรือแค่ทำชุดทดลองขำๆ โปรเจกต์นี้จะสอน Concept สำคัญๆ ทั้งเรื่องจังหวะเวลา (Timing), การจัดการสัญญาณ (Signal Processing) และการใช้ Logic แบบมีเงื่อนไข จัดไปอย่าให้เสีย!

อุปกรณ์ที่ต้องใช้ (เช็กของด้วยนะน้อง)

  • Arduino Uno R3: สมองกลหลักของเรา จัดไปตัวตึง
  • HC-SR04 Ultrasonic Sensor: Sensor "โซนาร์" ยอดฮิตที่ใช้คลื่นเสียงความถี่สูงสะท้อนหาวัตถุ
  • 3x 5mm LEDs (Red, Green, Blue): เอาไว้บอกโซนระยะทางแบบแยกสี
  • 3x 220-ohm Resistors: ตัวต้านทานจำกัดกระแส ห้ามลืมเด็ดขาดนะน้อง เดี๋ยว LED บึ้มคามือ
  • Breadboard & Jumper Wires: เอาไว้ต่อวงจรแบบชิลๆ ไม่ต้องบัดกรีให้เจ็บมือ

เจาะลึกงานวิศวะ: ฟิสิกส์ของเสียง (ตั้งใจฟังนะเห้ย)

เจ้า HC-SR04 มันทำงานด้วยหลักฟิสิกส์ง่ายๆ แต่โคตรได้ใจความ คือการส่งคลื่นเสียง (Ping) ออกไปแล้วรอรับเสียงสะท้อน (Echo) กลับมาจากวัตถุ

  1. The Trigger: Arduino จะส่ง Pulse ขนาด 10 ไมโครวินาทีไปที่ trigPin
  2. The Pulse: Sensor จะเปลี่ยนค่านี้ให้กลายเป็นคลื่นเสียง 8 ลูกที่ความถี่ 40 kHz
  3. The Echo: เสียงเดินทางด้วยความเร็วประมาณ 340 m/s (หรือ 0.034 cm/µs) พอมันไปกระแทกวัตถุแล้วเด้งกลับมา echoPin จะกลายเป็นสถานะ HIGH โดยมีระยะเวลาสัมพันธ์กับระยะทางที่เดินทางไป
  4. The Calculation: ระยะทาง = (เวลา × ความเร็วเสียง) / 2 ที่ต้องหาร 2 ก็เพราะเสียงมันเดินทางไป-กลับไงล่ะวัยรุ่น
Animation โชว์รอบการทำงาน Echo/Ping ของ [Sensor](https://s.shopee.co.th/7VBG2rX65j) HC-SR04

วิเคราะห์ Logic ของโค้ด

โค้ดชุดนี้ถูกเขียนมาแบบเป็นระเบียบ แบ่งเป็น Block ชัดเจน:

  • Custom Color Functions: แทนที่จะเขียน analogWrite ซ้ำๆ ใน Loop ให้ปวดหัว พี่เขาเลยสร้าง Function ช่วยอย่าง Red(), Green(), และ Blue() มาให้ ทำให้ Loop หลักอ่านง่ายขึ้นเยอะ เวลาแก้บั๊กจะได้ไม่มึน
  • Clamping Mechanism: Function clamp() นี่ทีเด็ดเลยน้อง มันช่วยกัน "Noise" หรือค่าระยะทางเพี้ยนๆ (เช่น เลขติดลบ หรือระยะที่เกิน 50cm ซึ่ง Sensor มักจะเริ่มเพี้ยน) ไม่ให้หลุดเข้าไปป่วนระบบ
  • Threshold Zoning (แบ่งโซนระยะ):
    • Near (1 - 15 cm): ไฟ Blue ติด แสดงว่าใกล้จัดๆ แล้วนะ
    • Mid (16 - 32 cm): ไฟ Green ติด ระยะนี้กำลังสวย ปลอดภัยหายห่วง
    • Far (33 - 50 cm): ไฟ Red ติด วัตถุเริ่มถอยห่างออกไปแต่ยังอยู่ในระยะที่เราคุมอยู่

การต่อวงจร (Wiring)

การ Setup Hardware ก็ตรงไปตรงมาน้องรัก ตัว LED ต่อเข้ากับ Pins ที่เป็น PWM (3, 4, 5) เพื่อให้เราคุมความสว่างผ่าน analogWrite() ได้ ส่วน Ultrasonic Sensor ก็ใช้ Pins 8 (Trigger) และ 9 (Echo) ตามลำดับ

ผังวงจร (Circuit Diagram) สำหรับ RGB Distance [Sensor](https://s.shopee.co.th/7VBG2rX65j)

สรุปปิดท้าย

โปรเจกต์นี้คือใบเบิกทางชั้นดีสู่โลกของ "Sensing and Control" เลยนะน้อง พอแกเซียนเรื่อง Sensor HC-SR04 กับการคุม LED แล้ว แกจะไปต่อยอดทำหุ่นยนต์เดินหลบสิ่งกีดขวาง, ระบบกันขโมยบ้านอัจฉริยะ หรือ User Interface ล้ำๆ ก็จัดไปตามสะดวก สู้งานนะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

title: "RGB LED Based on Distance"
description: "Make a circuit that show how far away something is by either shinning a red, green, or blue LED."
author: "codernoob"
category: ""
tags:
  - "hc-sr04"
  - "rgb light based on distance"
  - "rgb lighting"
  - "led lights"
  - "sonar sensor"
views: 11984
likes: 5
price: 699
difficulty: "Easy"
components:
  - "1x Ultrasonic Sensor - HC-SR04 (Generic)"
  - "1x Arduino UNO"
  - "1x LED, Blue Green"
  - "1x Jumper wires (generic)"
  - "1x 5 mm LED: Red"
  - "1x 5 mm LED: Green"
  - "3x Resistor 220 ohm"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/da441d7e-fd1b-4b1b-ae98-00f56f0adbb1.ino"
  - "https://projects.arduinocontent.cc/da441d7e-fd1b-4b1b-ae98-00f56f0adbb1.ino"
documentationLinks: []
passwordHash: "4c04e33b7e40a314e0dfabedfc083bae2bc1f15df307288e505b45c2852700b3"
encryptedPayload: "U2FsdGVkX1+hsqcquKrI1dk6SbHGgNGLvs+T16esLwXt8Jv2ESpm2obkwduMWckGtp/a0B8yrTdO35WwjyGlOShaTxHJNeysU9Gl6HwXpUE="
seoDescription: "Build an Arduino circuit that displays Distance using a Red, Green, or Blue LED."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/rgb-led-based-on-distance-718600_cover.jpg"
lang: "th"