Search Code

คอร์ส บทเรียนที่ 5 จาก 10: การควบคุม RGB LED WS2812B โดยใช้ Raspberry Pi Pico

บทเรียนนี้เป็นส่วนหนึ่งของ: Raspberry Pi Pico 4WD รถอัจฉริยะ

คอร์ส บทเรียนที่ 5 จาก 10: การควบคุม RGB LED WS2812B โดยใช้ Raspberry Pi Pico

บทเรียนนี้เป็นส่วนหนึ่งของคอร์สเรียน Robojax Raspberry Pi Pico Smart Car เน้นไปที่การควบคุมแถบไฟ RGB LED (WS2812B) บนชุดรถยนต์ขับเคลื่อน 4 ล้อ SunFounder คุณจะได้เรียนรู้มากกว่าการควบคุมแบบเปิด/ปิดธรรมดา และเรียนรู้วิธีผสมค่าสีแดง เขียว และน้ำเงินเพื่อสร้างสีใดก็ได้ ควบคุม LED แต่ละดวง และสร้างลำดับแสงแบบไดนามิก เช่น เอฟเฟกต์แสง "เดิน" ทักษะนี้เป็นพื้นฐานสำคัญสำหรับการเพิ่มการตอบสนองทางภาพและบุคลิกให้กับโปรเจกต์หุ่นยนต์ของคุณ

การควบคุม RGB LED เป็นทักษะหลักสำหรับโปรเจกต์หุ่นยนต์หรืออิเล็กทรอนิกส์ใดๆ ต่อไปนี้คือสิ่งที่เป็นประโยชน์ที่คุณสามารถสร้างได้ด้วยความรู้นี้:

  • ตัวบ่งชี้สถานะแบบกำหนดเอง: ใช้สีต่างๆ เพื่อแสดงสถานะของหุ่นยนต์ เช่น สีเขียวสำหรับ "พร้อม" สีน้ำเงินสำหรับ "กำลังทำงาน" และสีแดงสำหรับ "ข้อผิดพลาด"
  • เอฟเฟกต์แสงแบบโต้ตอบ: สร้างรูปแบบแสงแบบ "ไล่ตาม" หรือ "ไนท์ไรเดอร์" เพื่อให้หุ่นยนต์ดูมีชีวิตชีวาและน่าสนใจยิ่งขึ้น
  • การตอบสนองทางภาพสำหรับเซนเซอร์: เขียนโปรแกรมให้ LED เปลี่ยนสีตามข้อมูลจากเซนเซอร์ เช่น เปลี่ยนเป็นสีแดงเมื่อมีสิ่งกีดขวางอยู่ใกล้ หรือสีน้ำเงินเมื่อกำลังวิ่งตามเส้น
  • ไฟส่องสว่างโดยรอบ: ตั้งค่า LED เป็นสีสุ่มหรือเฉดสีเฉพาะเพื่อสร้างบรรยากาศที่กำหนดเองสำหรับรถหรือโปรเจกต์อื่นๆ ของคุณ

ฮาร์ดแวร์/อุปกรณ์

โปรเจกต์นี้ใช้อุปกรณ์ที่มาพร้อมกับชุดรถยนต์ขับเคลื่อน 4 ล้อ SunFounder Raspberry Pi Pico อุปกรณ์หลักคือแถบไฟ RGB LED ซึ่งควบคุมโดย Raspberry Pi Pico

  • Raspberry Pi Pico
  • ชุดรถยนต์ขับเคลื่อน 4 ล้อ SunFounder (ซึ่งรวมแถบไฟ RGB LED WS2812B)
  • ชุดแบตเตอรี่สำหรับรถ (เพื่อจ่ายไฟให้ LED ตามที่กล่าวในวิดีโอ)

คู่มือการเดินสายไฟ

บทเรียนวิดีโอนี้ไม่ได้ลงรายละเอียดเกี่ยวกับกระบวนการเดินสายไฟ เนื่องจากเป็นส่วนหนึ่งของการออกแบบที่ประกอบไว้ล่วงหน้าของชุดรถยนต์ LED เชื่อมต่อกับ Raspberry Pi Pico อยู่แล้ว สำหรับการตั้งค่าแบบกำหนดเอง โดยทั่วไปคุณจะต้องเชื่อมต่อพินข้อมูลของแถบ WS2812B เข้ากับพิน GPIO บน Pico พร้อมกับไฟเลี้ยง (5V) และกราวด์ (GND) เนื่องจากบทเรียนนี้ใช้ชุดรถยนต์ จึงไม่จำเป็นต้องเดินสายไฟเพิ่มเติม

หากคุณกำลังสร้างสิ่งนี้บนเบรดบอร์ด คุณจะต้องเชื่อมต่อสายข้อมูลของแถบ LED เข้ากับพิน GPIO (เช่น GP0) และจ่ายไฟด้วยแหล่งจ่ายไฟภายนอก 5V

คำอธิบายโค้ด

บทเรียนนี้เน้นการใช้ฟังก์ชันที่เขียนไว้ล่วงหน้าจากไลบรารีของชุดรถยนต์ ฟังก์ชันหลักสำหรับควบคุมไฟคือ set_light_color() เมธอดนี้ถูกเรียกบนออบเจกต์รถ และรับอาร์กิวเมนต์หลักสองตัว: หมายเลข ID ของไฟ และรายการค่าสามค่าที่แทนความเข้มของสีแดง เขียว และน้ำเงิน (RGB)

นี่คือรายละเอียดวิธีการใช้ฟังก์ชันหลักที่สาธิตในวิดีโอ:

  • car.set_light_color(LED_ID, [R, G, B]): นี่คือวิธีที่ตรงที่สุดในการควบคุม LED แต่ละดวง LED_ID เป็นจำนวนเต็มตั้งแต่ 0 ถึง 23 และสีเป็นรายการเช่น [255, 0, 0] สำหรับสีแดง
  • ฟังก์ชันตัวช่วยจากไลบรารี: ไลบรารีของชุดรถยนต์มีฟังก์ชันระดับสูง เช่น set_all_light_color(), set_bottom_left_color() และ set_bottom_right_color() เพื่อควบคุมกลุ่ม LED ได้ง่ายขึ้น

เพื่อสร้างสีที่กำหนดเอง คุณสามารถปรับค่าสามค่าในรายการได้ ตัวอย่างเช่น [255, 255, 0] ทำให้เป็นสีเหลือง [0, 255, 255] ทำให้เป็นสีฟ้า และ [255, 0, 255] ทำให้เป็นสีชมพูหรือสีม่วงแดง วิดีโอสาธิตการสร้างสีเหล่านี้โดยการผสมค่า RGB หลัก

สำหรับสีสุ่ม คุณสามารถใช้ฟังก์ชัน random.randint(0, 255) เพื่อสร้างค่าสุ่มสำหรับ R, G และ B ดังที่แสดงในตัวอย่าง "random" ซึ่งกำหนดสีสุ่มที่ไม่ซ้ำกันให้กับ LED ทั้ง 24 ดวง

โปรเจกต์สด/การสาธิต

ในวิดีโอ ผู้สอนสาธิตแนวคิดแบบสด เขาเริ่มด้วยการแสดงวิธีเปิดไฟด้านล่างทั้งหมดเป็นสีเขียวทึบโดยตั้งค่า RGB เป็น [0, 255, 0] จากนั้นเปลี่ยนสีเป็นสีแดงโดยตั้งค่า [255, 0, 0] การสาธิตดำเนินต่อไปโดยแสดงวิธีควบคุม LED แต่ละดวงด้วยหมายเลข ID (0-23) และตั้งค่าสีของแต่ละดวงอย่างอิสระ

ส่วนสำคัญของวิดีโออุทิศให้กับการสร้างเอฟเฟกต์แสง "เดิน" ซึ่งทำด้วยลูป for ที่วนซ้ำตั้งแต่ 1 ถึง 24 ในการวนซ้ำแต่ละครั้ง จะเปิด LED ปัจจุบันเป็นเวลาที่กำหนด (เช่น 300 มิลลิวินาที) จากนั้นปิดเป็นเวลาสั้นมาก (เช่น 10 มิลลิวินาที) ก่อนที่จะไปยังดวงถัดไป สิ่งนี้สร้างภาพลวงตาของแสงที่เคลื่อนที่ไปตามแถบไฟ ผู้สอนยังแสดงวิธีปรับความเร็วของเอฟเฟกต์นี้โดยการเปลี่ยนค่าหน่วงเวลา

สุดท้าย เขาสาธิตโปรแกรม "random color" ซึ่งใช้ไลบรารี random เพื่อสร้างสีที่ไม่ซ้ำกันสำหรับ LED ทั้ง 24 ดวงทุกครั้งที่รันโค้ด สร้างการแสดงผลหลากสีที่สดใส

บทต่างๆ

  • [00:00] แนะนำ RGB LED และคอร์สเรียน Smart Car
  • [02:36] ทำความเข้าใจโมเดลสี RGB
  • [05:00] การควบคุมไฟด้วยฟังก์ชันจากไลบรารี
  • [09:01] วิธีควบคุม LED แต่ละดวง (0-23)
  • [13:08] การสร้างเอฟเฟกต์แสงเดิน
  • [15:32] การสร้างสีสุ่มสำหรับ LED แต่ละดวง
ไม่มีรหัสแนบมา

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

ยังไม่มีทรัพยากรเลย

ไฟล์📁

ไม่มีไฟล์ที่พร้อมใช้งาน