สารบัญ:

โต๊ะกาแฟ LED แบบโต้ตอบ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)
โต๊ะกาแฟ LED แบบโต้ตอบ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: โต๊ะกาแฟ LED แบบโต้ตอบ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: โต๊ะกาแฟ LED แบบโต้ตอบ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: DIY Interactive LED Coffee Table - Arduino Project 2024, กรกฎาคม
Anonim
Image
Image
โต๊ะกาแฟ LED แบบโต้ตอบ Arduino
โต๊ะกาแฟ LED แบบโต้ตอบ Arduino

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

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

วิดีโอที่แนบมานี้อธิบายขั้นตอนการสร้างทั้งหมด ขณะที่ฉันสรุปรายละเอียดเพิ่มเติมด้านล่าง

เสบียง

  1. ws2812b หลอดไฟ LED -
  2. แหล่งจ่ายไฟ 5V -
  3. Arduino ใด ๆ ที่ฉันใช้ 2560 -
  4. โฟโตไดโอด
  5. IR Emitters
  6. ตัวต้านทาน 10 โอห์ม
  7. ตัวต้านทาน 1 MOhms
  8. ตัวเก็บประจุ 47 pF
  9. CD4051B มัลติเพล็กเซอร์
  10. SN74HC595 Shift Registers
  11. ULN2803A อาร์เรย์ดาร์ลิงตัน
  12. วัสดุพิมพ์ใด ๆ ที่จะใช้เป็นบอร์ดขนาดใหญ่สำหรับไฟ LED ฉันใช้กระดาษคอมโพสิตบอร์ดจากโฮมดีโป

ขั้นตอนที่ 1: สร้างบอร์ดและใส่ LEDs

สร้างบอร์ดและใส่ LEDs
สร้างบอร์ดและใส่ LEDs
สร้างบอร์ดและใส่ LEDs
สร้างบอร์ดและใส่ LEDs
สร้างบอร์ดและใส่ LEDs
สร้างบอร์ดและใส่ LEDs
สร้างบอร์ดและใส่ LEDs
สร้างบอร์ดและใส่ LEDs

สิ่งแรกที่ฉันทำคือสร้างกระดานซึ่งจะมีไฟ LED ที่เราจะใส่ไว้ในโต๊ะกาแฟ ฉันใช้แผ่นกระดาษคอมโพสิตจากโฮมดีโปแล้วตัดให้ได้ขนาดที่เหมาะสมสำหรับโต๊ะกาแฟที่ฉันมี หลังจากตัดกระดานตามขนาดแล้ว ฉันก็เจาะรูทั้งหมดสำหรับตำแหน่งที่ไฟ LED กำลังไป ตัวกระดานเองมี 8 แถวและ 12 คอลัมน์ของไฟ LED ws2812b แยกจากกัน 3 นิ้วและติดในรูปแบบคดเคี้ยว ฉันใช้กาวร้อนเพื่อยึดให้เข้าที่

ฉันยังต้องเจาะรูตรงกลางของสิ่งที่จะกลายเป็นโหนด: ไฟ LED 4 ws2812b ที่ประกอบเป็นสี่เหลี่ยมจัตุรัส, โฟโต้ไดโอด 2 ตัวและตัวปล่อย IR 2 ตัวในสี่เหลี่ยมจัตุรัสเล็กกว่าตรงกลางนั้น 4 รูเหล่านี้ตรงกลางโหนดจะเป็นจุดสำหรับโฟโตไดโอดและตัวปล่อยรังสี (2 อัน) ฉันสลับพวกมันเพื่อให้แน่ใจว่าเปิดรับแสงสูงสุด และวางไว้ห่างกันประมาณ 1 นิ้วตรงกลางของแต่ละโหนด ฉันไม่ต้องการกาวร้อนเหล่านี้เข้าที่ ฉันแค่งอสายนำอีกด้านหนึ่งเพื่อให้แน่ใจว่าจะไม่ออกมาอีกด้านหนึ่ง ฉันยังตรวจสอบให้แน่ใจว่าได้โค้งงอปลายด้านบวกและด้านลบในบางทิศทางเพื่อให้อยู่ในวงจรอย่างถูกต้อง ลีดที่เป็นบวกทั้งหมดอยู่ทางด้านซ้ายของด้านหลังของบอร์ด ในขณะที่ลีดที่เป็นลบทั้งหมดจะอยู่ทางด้านขวาของกระดาน

ขั้นตอนที่ 2: ทำความเข้าใจวงจร

เข้าใจวงจร
เข้าใจวงจร
เข้าใจวงจร
เข้าใจวงจร
เข้าใจวงจร
เข้าใจวงจร

หมายเหตุ: ภาพวาดแอนิเมชั่นทั้งหมดไม่ตรงกับการใช้งาน (หมุด Arduino บางตัวแตกต่างกันและฉันเดซี่เชนอีกสองสามอันในภายหลัง) ผลลัพธ์ที่ได้แตกต่างกันเล็กน้อยเนื่องจากความซับซ้อนของวงจร แต่วงจรแอนิเมชั่นทั้งหมดเป็นพื้นฐานที่ดีในการทำความเข้าใจวิธีการสร้างต้นแบบแต่ละส่วน แผนผังและแผนภาพวงจรปกติจะเหมือนกับบน PCB ที่ใช้ในโครงการ

รหัส PCB ที่มีโครงการ KiCad และไฟล์ gerber สามารถพบได้ที่นี่: https://github.com/tmckay1/interactive_coffee_tabl… ในกรณีที่คุณต้องการสั่งซื้อ PCB ด้วยตัวเองและสร้างโครงการที่คล้ายกัน ฉันใช้ NextPCB เพื่อสร้างบอร์ด

โดยทั่วไปมีสามวงจรที่แตกต่างกันที่ประกอบเป็นตารางนี้ อย่างแรกเราจะไม่พูดถึงรายละเอียดและเป็นวงจรง่ายๆ ที่จ่ายไฟให้กับไฟ LED ws2812b สัญญาณข้อมูล PWM ถูกส่งจาก Arduino ไปยังหลอดไฟ led ws2812b และควบคุมสีที่จะแสดงที่ใด เรากำลังใช้ไฟ LED ws2812b เนื่องจากสามารถระบุแอดเดรสแยกกันได้ ดังนั้นเราจะสามารถควบคุมไฟ LED ที่จะเปิดและปิดได้ ไฟ LED ws2812b ใช้พลังงานจากแหล่งพลังงานภายนอก 5V เนื่องจาก Arduino เพียงอย่างเดียวไม่มีพลังงานเพียงพอที่จะเปิดไฟทั้งหมด ในไดอะแกรมแอนิเมชั่นที่แนบมาพวกเขาใช้ตัวต้านทานแบบดึงขึ้นที่ 330 โอห์ม แต่ฉันไม่ได้ใช้มันในบิลด์ของฉัน

วงจรที่สองเปิดตัวส่งสัญญาณ IR วงจรนี้ใช้ shift register เพื่อควบคุมอาร์เรย์ดาร์ลิงตันซึ่งส่งพลังงานไปยังตัวปล่อย IR shift register เป็นวงจรรวมที่สามารถส่งสัญญาณ HIGH และ LOW ไปยังพินหลายพินจากพินจำนวนเล็กน้อยเท่านั้น ในกรณีของเรา เราใช้ SN74HC595 shift register ที่สามารถควบคุมได้จาก 3 อินพุต แต่ควบคุมได้ถึง 8 เอาต์พุต ข้อดีของการใช้สิ่งนี้กับ Arduino คือคุณสามารถเดซี่เชนได้มากถึง 8 กะรีจิสเตอร์ในหนึ่งแถว (arduino สามารถรองรับได้มากถึง 8 ตัวเท่านั้น) ซึ่งหมายความว่าคุณต้องการเพียง 3 พินจาก Arduino เพื่อเปิดและปิดตัวปล่อย IR 64 ตัว อาร์เรย์ดาร์ลิงตันช่วยให้คุณจ่ายไฟให้กับอุปกรณ์จากแหล่งภายนอกได้หากสัญญาณอินพุตสูง หรือปิดอุปกรณ์นั้นหากสัญญาณอินพุตต่ำ ในตัวอย่างของเรา เราใช้อาร์เรย์ดาร์ลิงตัน ULN2803A ซึ่งช่วยให้แหล่งจ่ายไฟภายนอก 5V เปิดและปิดตัวปล่อย IR ได้สูงสุด 8 ตัว เราใช้ตัวต้านทาน 10 โอห์มกับตัวปล่อย IR แบบอนุกรมเพื่อรับค่าแอมแปร์สูงสุดจากตัวปล่อย IR

วงจรที่สามใช้มัลติเพล็กเซอร์เพื่อรับอินพุตหลายตัวจากโฟโตไดโอด และส่งสัญญาณออกเป็นสัญญาณข้อมูล มัลติเพล็กเซอร์เป็นอุปกรณ์ที่ใช้ในการรับอินพุตหลายรายการที่คุณต้องการอ่าน และต้องการเพียงพินไม่กี่พินเพื่ออ่านจากอินพุตเหล่านั้น นอกจากนี้ยังสามารถทำสิ่งที่ตรงกันข้ามได้ (demultiplex) แต่เราไม่ได้ใช้สำหรับแอปพลิเคชันนั้นที่นี่ ดังนั้นในกรณีของเรา เราใช้มัลติเพล็กเซอร์ CD4051B เพื่อรับสัญญาณสูงสุด 8 จากโฟโตไดโอด และเราต้องการเพียง 3 อินพุตเพื่ออ่านจากสัญญาณเหล่านั้น นอกจากนี้ เราสามารถต่อเดซี่เชนได้ถึง 8 มัลติเพล็กเซอร์ (arduino สามารถรองรับได้ถึง 8 ตัวเท่านั้น) ซึ่งหมายความว่า Arduino สามารถอ่านสัญญาณโฟโตไดโอด 64 ตัวจากพินดิจิทัลเพียง 3 ตัว โฟโตไดโอดเป็นแบบเอนเอียงแบบย้อนกลับ ซึ่งหมายความว่าแทนที่จะมุ่งไปในทิศทางปกติโดยมีตะกั่วที่เป็นบวกติดอยู่กับแหล่งจ่ายแรงดันบวก เราจะกำหนดตะกั่วเชิงลบให้กับแหล่งจ่ายแรงดันบวก สิ่งนี้จะเปลี่ยนโฟโตไดโอดเป็นตัวต้านทานภาพถ่ายอย่างมีประสิทธิภาพ ซึ่งจะเปลี่ยนความต้านทานขึ้นอยู่กับปริมาณแสงที่ได้รับ จากนั้นเราสร้างตัวแบ่งแรงดันไฟเพื่ออ่านแรงดันไฟฟ้าที่ขึ้นอยู่กับความต้านทานที่แตกต่างกันของโฟโตไดโอดโดยการเพิ่มตัวต้านทาน 1 MOhms ที่มีความต้านทานสูงลงกราวด์ สิ่งนี้ช่วยให้เราได้รับแรงดันไฟฟ้าที่สูงขึ้นและต่ำลงไปยัง Arduino ขึ้นอยู่กับปริมาณแสงอินฟราเรดที่โฟโตไดโอดได้รับ

ฉันติดตามการออกแบบส่วนใหญ่จากบุคคลอื่นที่ทำสิ่งนี้ที่นี่: https://www.instructables.com/Infrared-Proximity-S… ในการออกแบบนั้นพวกเขายังเพิ่มตัวเก็บประจุ 47pF เช่นเดียวกับที่เราทำ ตรงข้ามตัวต้านทาน 1 MOhm ใช้สร้างตัวแบ่งแรงดันไฟด้วยโฟโตไดโอด เหตุผลที่เขาเพิ่มเป็นเพราะเขาเปิดและปิดตัวส่งสัญญาณ IR ที่ผันผวนด้วยสัญญาณ PWM และการทำเช่นนี้ทำให้แรงดันไฟฟ้าตกเล็กน้อยจากโฟโตไดโอดเมื่อเปิดตัวปล่อย IR ทันที สิ่งนี้ทำให้โฟโตไดโอดเปลี่ยนความต้านทานแม้ว่าจะไม่ได้รับแสง IR จากวัตถุมากขึ้นเพราะตัวปล่อย IR ใช้แหล่งพลังงาน 5V เดียวกันกับโฟโตไดโอด ตัวเก็บประจุถูกใช้เพื่อให้แน่ใจว่าไม่มีแรงดันไฟฟ้าตกเมื่อเปิดและปิดตัวส่งสัญญาณ IR เดิมทีฉันวางแผนที่จะใช้กลยุทธ์แบบเดียวกันนี้ แต่หมดเวลาทดสอบแล้ว ดังนั้นฉันจึงเปิด IR emitter ไว้เสมอ ฉันต้องการเปลี่ยนแปลงสิ่งนี้ในอนาคต แต่จนกว่าฉันจะออกแบบโค้ดและวงจรใหม่ ตอนนี้ PCB ได้รับการออกแบบให้เปิดไฟ IR ตลอดเวลา และฉันก็เก็บตัวเก็บประจุไว้อยู่ดี คุณไม่จำเป็นต้องใช้ตัวเก็บประจุหากคุณใช้การออกแบบ PCB นี้ แต่ฉันกำลังจะแนะนำ PCB เวอร์ชันอื่นที่ยอมรับอินพุตเพิ่มเติมไปยัง shift register ที่จะช่วยให้คุณสามารถมอดูเลต IR emitters เปิดและปิดได้ วิธีนี้จะช่วยประหยัดพลังงานได้มาก

คุณสามารถตรวจสอบไดอะแกรมแบบเคลื่อนไหวที่แนบมาสำหรับการตั้งค่าต้นแบบสำหรับการทดสอบบน Arduino ของคุณ นอกจากนี้ยังมีแผนผังสีที่มีรายละเอียดมากขึ้นสำหรับแต่ละวงจร ซึ่งจะสรุปการตั้งค่าและการวางแนวของอุปกรณ์อิเล็กทรอนิกส์ ในแผนผัง PCB ที่แนบมา เรามีทั้งหมด 4 วงจร, 2 วงจรที่ใช้เปิด IR emitter และ 2 วงจรสำหรับอ่านจากโฟโตไดโอด พวกมันถูกวางบน PCB 2 กลุ่มที่อยู่ติดกันโดยมีกลุ่มที่ประกอบด้วยวงจรอีซีแอล IR 1 วงจรและวงจรโฟโตไดโอด 1 วงจร เพื่อให้สามารถใส่ 2 คอลัมน์จาก 8 โหนดใน PCB เดียวได้ นอกจากนี้เรายังเชื่อมโยงวงจรทั้งสองเข้าด้วยกัน ดังนั้นหมุดสามตัวจาก Arduino สามารถควบคุมการลงทะเบียนกะทั้งสองได้ และหมุดเพิ่มเติมอีก 3 ตัวสามารถควบคุมมัลติเพล็กเซอร์สองตัวบนบอร์ดได้ มีส่วนหัวเอาต์พุตเพิ่มเติมเพื่อให้สามารถต่อเดซี่เชนกับ PCB เพิ่มเติมได้

ต่อไปนี้คือแหล่งข้อมูลบางส่วนที่ฉันติดตามเพื่อสร้างต้นแบบ:

  • https://lastminuteengineers.com/74hc595-shift-regi…
  • https://techtutorialsx.com/2016/02/08/using-a-uln2…
  • https://tok.hakynda.com/article/detail/144/cd4051be…

ขั้นตอนที่ 3: บัดกรีสายไฟเข้ากับโหนด

สายบัดกรีไปยังโหนด
สายบัดกรีไปยังโหนด
สายบัดกรีไปยังโหนด
สายบัดกรีไปยังโหนด
สายบัดกรีไปยังโหนด
สายบัดกรีไปยังโหนด
สายบัดกรีไปยังโหนด
สายบัดกรีไปยังโหนด

ตอนนี้คุณเข้าใจวิธีสร้างวงจรแล้ว ให้ต่อสายเข้ากับแต่ละโหนด ฉันบัดกรีโฟโตไดโอดแบบขนาน (สายสีเหลืองและสีเทา) และตัวส่งสัญญาณ ir เป็นอนุกรม (ลวดสีส้ม) จากนั้นฉันก็บัดกรีลวดสีเหลืองที่ยาวกว่ากับโฟโตไดโอดแบบขนานซึ่งจะต่อกับแหล่งพลังงาน 5V และลวดสีน้ำเงินที่จะต่อเข้ากับอินพุตโฟโตไดโอดของ pcb ฉันบัดกรีสายสีแดงยาวเข้ากับวงจรตัวส่งสัญญาณ IR ที่จะใช้เชื่อมต่อกับแหล่งพลังงาน 5V และสายสีดำที่จะเชื่อมต่อกับอินพุตตัวปล่อย IR ของ PCB อันที่จริงฉันทำให้สายไฟหมดเวลาเพียงเล็กน้อยเท่านั้น ดังนั้นฉันจึงเชื่อมต่อได้เพียง 5 โหนดในแต่ละคอลัมน์ในตอนท้าย (แทนที่จะเป็น 7) ฉันวางแผนที่จะแก้ไขปัญหานี้ในภายหลัง

ขั้นตอนที่ 4: ประสานส่วนประกอบ PCB และแนบเข้ากับบอร์ด

ประสานส่วนประกอบ PCB และแนบเข้ากับบอร์ด
ประสานส่วนประกอบ PCB และแนบเข้ากับบอร์ด
ประสานส่วนประกอบ PCB และแนบเข้ากับบอร์ด
ประสานส่วนประกอบ PCB และแนบเข้ากับบอร์ด
ประสานส่วนประกอบ PCB และแนบเข้ากับบอร์ด
ประสานส่วนประกอบ PCB และแนบเข้ากับบอร์ด

หมายเหตุ: PCB ในภาพที่แนบมาเป็นรุ่นแรกที่ฉันทำโดยไม่มีอินพุตและเอาต์พุตกำลังและยังมีสายโซ่เดซี่สำหรับวงจรภายในแต่ละอัน การออกแบบ PCB ใหม่แก้ไขข้อผิดพลาดนี้

ที่นี่คุณเพียงแค่ต้องปฏิบัติตามแผนผัง PCB เพื่อประสานส่วนประกอบเข้ากับ PCB จากนั้นเมื่อเสร็จแล้วให้บัดกรี PCB เข้ากับบอร์ด ฉันใช้แผงวงจรภายนอกเพื่อต่อสัญญาณไฟ 5V ซึ่งฉันแจกจ่ายไปยังสายสีเหลืองและสีแดงทั้งหมด เมื่อมองย้อนกลับไป ฉันไม่ต้องการสายสีแดงและสีเหลืองที่ยาวขนาดนั้น และสามารถเชื่อมต่อโหนดเข้าด้วยกันได้ (แทนที่จะเชื่อมต่อกับแผงวงจรภายนอกทั่วไป) สิ่งนี้จะช่วยลดปริมาณความยุ่งเหยิงที่ด้านหลังของกระดานได้จริงๆ

เนื่องจากฉันมีไฟ led ws2812b 8 แถวและ 12 คอลัมน์ ฉันจึงลงเอยด้วยโหนด 7 แถวและ 11 คอลัมน์ของโหนด (ทั้งหมด 77 โหนด) แนวคิดคือการใช้ PCB ด้านหนึ่งสำหรับโหนดหนึ่งคอลัมน์และอีกด้านหนึ่งสำหรับคอลัมน์อื่น เนื่องจากฉันมี 11 คอลัมน์ ฉันจึงต้องการ PCB 6 ชิ้น (อันสุดท้ายต้องการส่วนประกอบเพียงกลุ่มเดียว) เนื่องจากฉันทำให้สายสั้นเกินไป ฉันจึงสามารถเชื่อมต่อได้เพียง 55 โหนด 11 คอลัมน์ และ 5 แถวเท่านั้น คุณสามารถเห็นในภาพ ฉันทำผิดพลาดและบัดกรีลวดดิบเข้ากับบอร์ด ซึ่งคงจะดีถ้าลวดบางพอ แต่ในกรณีของฉัน มันหนาเกินไป นี่หมายความว่าฉันมีเส้นลวดหลุดลุ่ยใกล้กันมากสำหรับอินพุตตัวส่ง IR และอินพุตโฟโตไดโอดแต่ละตัว ดังนั้นจึงมีการดีบักเกิดขึ้นมากมายจากการลัดวงจรทั้งหมด ในอนาคต ฉันจะใช้ตัวเชื่อมต่อเพื่อเชื่อมต่อ PCB กับสายไฟบนบอร์ดเพื่อหลีกเลี่ยงการลัดวงจรและทำความสะอาดสิ่งต่างๆ

เนื่องจาก Arduino สามารถเชื่อมต่อเดซี่เชนได้มากถึง 8 กะรีจิสเตอร์และมัลติเพล็กเซอร์ ฉันจึงสร้างโซ่แยกสองอัน อันหนึ่งใช้ 8 คอลัมน์แรกและอีกอันใช้ 3 คอลัมน์ที่เหลือ จากนั้นฉันก็แนบแต่ละเชนกับ pcb อื่นที่มีมัลติเพล็กเซอร์ 2 ตัวเพื่อที่ฉันจะได้อ่านสัญญาณข้อมูลมัลติเพล็กเซอร์แต่ละสายจากมัลติเพล็กเซอร์สองตัวนั้นใน Arduino มัลติเพล็กเซอร์สองตัวนี้ถูกล่ามโซ่ด้วยเดซี่ นั่นหมายความว่ามีสัญญาณเอาท์พุตทั้งหมด 16 ตัวและอินพุตแบบอะนาล็อก 2 ตัวที่ใช้ใน Arduino: 1 สัญญาณเอาท์พุตเพื่อควบคุมไฟ LED ws2812b, 3 สัญญาณเอาต์พุตสำหรับเชนแรกของ shift register, 3 สัญญาณเอาท์พุตสำหรับเชนแรกของมัลติเพล็กเซอร์ 3 สัญญาณเอาท์พุตสำหรับเชนที่สองของ shift register, 3 สัญญาณเอาท์พุตสำหรับเชนที่สองของมัลติเพล็กเซอร์, 3 สัญญาณเอาท์พุตสำหรับมัลติเพล็กเซอร์ 2 ตัวที่รวมสัญญาณข้อมูล PCB แต่ละอัน และสุดท้าย 2 อินพุทอนาล็อกสำหรับแต่ละสัญญาณข้อมูลจากมัลติเพล็กเซอร์รวม 2 ตัว

ขั้นตอนที่ 5: ตรวจสอบรหัส

หมายเหตุ: นอกจากโค้ดแบบโต้ตอบด้านล่างแล้ว ฉันยังใช้ไลบรารีของบุคคลที่สามเพื่อสร้างภาพเคลื่อนไหวสำหรับไฟ LED ws2812b คุณสามารถค้นหาได้ที่นี่:

คุณสามารถค้นหารหัสที่ฉันใช้ได้ที่นี่:

ที่ด้านบนฉันกำหนดพิน Arduino ที่จะเชื่อมต่อกับแต่ละส่วนของ PCB ในวิธีการตั้งค่า ฉันตั้งค่าพินเอาต์พุตสำหรับมัลติเพล็กเซอร์ เปิด IR emitters ตั้งค่าอาร์เรย์ baseVal ที่ติดตามการอ่านค่าแสงแวดล้อมสำหรับโฟโตไดโอดแต่ละตัว และเริ่มต้น FastLED ที่จะเขียนไปยังไฟ LED ws2812b ในวิธีการวนซ้ำ เรารีเซ็ตรายการไฟ LED ที่ได้รับมอบหมายให้เปิดในแถบ ws2812b จากนั้นเราอ่านค่าจากโฟโตไดโอดในสายมัลติเพล็กเซอร์ และตั้งค่าไฟ led ws2812b ซึ่งควรจะเปิดหากการอ่านจากโฟโตไดโอดในโหนดเกินเกณฑ์ที่กำหนดไว้จากค่าฐานของการอ่านค่าแสงแวดล้อม จากนั้นเราจะแสดงผล LED หากมีการเปลี่ยนแปลงใด ๆ ในโหนดที่ควรเปิด มิฉะนั้นจะวนซ้ำจนกว่าจะมีการเปลี่ยนแปลงเพื่อเร่งความเร็ว

โค้ดน่าจะปรับปรุงได้และฉันกำลังดำเนินการอยู่ แต่มีความล่าช้าประมาณ 1-2 วินาทีนับจากเวลาที่ไฟเปิดขึ้นหลังจากวางวัตถุไว้บนโต๊ะ ฉันเชื่อว่าปัญหาพื้นฐานคือ FastLED ใช้เวลาในการแสดง 96 leds บนโต๊ะ และโค้ดต้องวนซ้ำและอ่านอินพุต 77 รายการจากตาราง ฉันพยายามรหัสนี้ด้วยไฟ LED 8 ดวงและพบว่าเกือบจะทันที แต่กำลังมองหาจุดที่น่าสนใจของ LED ที่จะทำงานกับรหัสนี้และเกือบจะทันที รวมทั้งปรับปรุงโค้ดด้วย

ขั้นตอนที่ 6: เปิด Arduino

เปิด Arduino!
เปิด Arduino!
เปิด Arduino!
เปิด Arduino!
เปิด Arduino!
เปิด Arduino!

ตอนนี้สิ่งที่คุณต้องทำคือเปิด Arduino และดูฟังก์ชั่นตาราง! การใช้ไลบรารีแอนิเมชั่นที่กล่าวถึงก่อนหน้านี้ คุณสามารถใส่แอนิเมชั่นนำ ws2812b เจ๋งๆ หรือคุณสามารถใส่โค้ดโต๊ะกาแฟแล้วดูมันสว่างขึ้นในแต่ละส่วน อย่าลังเลที่จะแสดงความคิดเห็นคำถามหรือความคิดเห็นใด ๆ และฉันจะพยายามติดต่อกลับหาคุณในเวลาที่เหมาะสม ไชโย!

แนะนำ: