สารบัญ:

การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit: 5 ขั้นตอน
การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit: 5 ขั้นตอน

วีดีโอ: การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit: 5 ขั้นตอน

วีดีโอ: การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit: 5 ขั้นตอน
วีดีโอ: Review of Pimoroni's Enviro+ board- Part2: LCD, noise level, light+proximity 2024, พฤศจิกายน
Anonim
การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit
การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit
การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit
การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit
การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit
การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit

ฉันเคยทำงานกับอุปกรณ์บางตัวที่อนุญาตให้วัดแสงและสีได้ก่อนหน้านี้ และคุณอาจพบมากเกี่ยวกับทฤษฎีที่อยู่เบื้องหลังการวัดดังกล่าวได้จากคำแนะนำที่นี่และที่นี่

Pimoroni เพิ่งเปิดตัว enviro:bit ซึ่งเป็นส่วนเสริมสำหรับ micro:bit ซึ่งมาพร้อมกับไมโครโฟน MEMS สำหรับการวัดระดับเสียง เซ็นเซอร์อุณหภูมิ/ความชื้น/ความดันอากาศ BME280 และเซ็นเซอร์แสงและสี TCS3475 (RGBC) นอกจากนี้ยังมีไฟ LED สองดวงที่ด้านข้างของเซ็นเซอร์สี ซึ่งช่วยให้วัดสีของวัตถุด้วยแสงสะท้อนได้ การสร้างเครื่องมือด้วยตนเองเพื่อทำการวัดเหล่านี้ง่ายกว่าที่เคย

ฉันอยากจะอธิบายว่า enviro:bit สามารถใช้สำหรับการวัดสีและแสงได้อย่างไร และสคริปต์ MakeCode ที่อนุญาตให้ดำเนินการเหล่านี้ การผสมผสานระหว่าง micro:bit และ enviro:bit เป็นอุปกรณ์ที่ดีและราคาไม่แพงในการแสดงหลักการของการวัดทางวิทยาศาสตร์โดยลงมือปฏิบัติจริงและลองเล่นกับอุปกรณ์เหล่านี้

คำแนะนำนี้เป็นส่วนหนึ่งของการแข่งขัน "สายรุ้ง" ถ้าชอบก็ช่วยโหวตด้วยนะครับ ThanksH

ขั้นตอนที่ 1: วัสดุที่ใช้

Micro:bit, 13 GBP ที่ Pimoroni

Pimoroni Enviro:bit, 20 GBP ที่ Pimoroni

Pimoroni Power:bit, 6 GBP ที่ Piomoroni คุณอาจใช้แบตเตอรี่หรือ LiPo สำหรับ micro:bit

บล็อกตัวอย่างตัวกรองสี Rosco Cinegel ฉันได้ของฉันจาก Modulor เบอร์ลิน

ถ้วยพลาสติกสีอิเกีย อิเกีย, เบอร์ลิน.

ดอกไม้ป่า. ทุ่งหญ้าที่ Potsdam-Golm

ขั้นตอนที่ 2: สคริปต์ MakeCode/JavaScript

Pimoroni ได้พัฒนาไลบรารี่สำหรับ Enviro:bit ทั้งสำหรับสภาพแวดล้อมการเข้ารหัส MakeCode/JavaScript และสำหรับ MicroPython ฉันใช้ MakeCode ที่นี่ เนื่องจากสามารถอัปโหลดสคริปต์ไปยัง micro:bit ได้โดยตรง และอนุญาตให้เข้ารหัสบล็อก

สคริปต์อ่านค่าของช่องสีแดง สีเขียว และสีน้ำเงิน (RGB) และช่องสัญญาณที่ชัดเจน (C) ค่าแรกมีค่าตั้งแต่ 0 ถึง 255 ค่าที่สองในช่วงทั้งหมดตั้งแต่ 0 ถึงประมาณ 61000

ช่วงของช่องสัญญาณที่ชัดเจนนั้นกว้างมากและช่วยให้สามารถวัดได้ตั้งแต่กลางวันสว่างไปจนถึงห้องมืด

ถึงตอนนี้ ฉันไม่เข้าใจรายละเอียดทั้งหมดของฟังก์ชันการวัดสี แต่ฉันคิดว่าพวกมันมีกลไกการแก้ไขและการปรับให้เป็นมาตรฐาน

ในตอนแรกจะใช้ค่าของทั้งสี่ช่อง เพื่อให้สามารถแสดงผลบนเมทริกซ์ LED 5x5 ได้ ค่าที่วัดได้จะถูกใช้เพื่อวางผลลัพธ์ในถังขยะ 5 (RGB) หรือ 10 (C) ที่แสดงด้วย LED หนึ่งดวงในหนึ่งรายการ (R, G, B) หรือ สองแถว (C)

ในกรณีของ RGB มาตราส่วนจะเป็นเส้นตรง และขนาดช่วงของถังแต่ละถังกว้าง 51 หน่วย ในกรณีของ C สเกลจะเป็นลอการิทึมมากกว่า 10 ขั้นตอน (log3 ดังนั้นทุกขั้นตอนจึงเป็น 3 เท่าของขั้นตอนก่อนหน้า) ซึ่งช่วยให้แสดงสภาวะที่สลัวและสว่างมากได้เหมือนกัน

การกดปุ่ม A จะแสดงค่า R, G และ B เป็นตัวเลข โดยกด B ค่า C A+B เปิดใช้งาน LED และ B จะปิดตัวลง

ให้ bR = 0 // ถังขยะ

ให้ bG = 0 ให้ bB = 0 ให้ bS = 0 ให้ bC = 0 ให้ bCx = 0 ให้ S = 0 // ค่าที่วัดได้ ให้ C = 0 ให้ B = 0 ให้ G = 0 ให้ R = 0 basic.forever(() => { if (input.buttonIsPressed (Button. AB)) { envirobit.setLEDs (envirobit. OnOff. On) } else if (input.buttonIsPressed (Button. A)) { basic.showString ("R: " + R + " G: " + G + " B: " + B) } อย่างอื่น if (input.buttonIsPressed (Button. B)) { basic.showString ("C: " + C) envirobit.setLEDs (envirobit. OnOff. Off) } อื่น { basic.pause (100) R = envirobit.getRed () G = envirobit.getGreen () B = envirobit.getBlue () C = envirobit.getLight () bC = 5 bCx = 5 ถ้า (R > = 204) { // binning สูงสุด 255 bR = 4 } else if (R >= 153) { bR = 3 } else if (R >= 102) { bR = 2 } else if (R >= 51) { bR = 1 } อื่น ๆ { bR = 0 } if (G >= 204) { bG = 4 } else if (G >= 153) { bG = 3 } else if (G >= 102) { bG = 2 } else if (G >= 51)) { bG = 1 } อื่น { bG = 0 } if (B >= 204) { bB = 4 } else if (B >= 153) { bB = 3 } else if (B >= 102) { bB = 2 } อื่น ๆ ถ้า (B >= 51) { bB = 1 } อื่น ๆ { bB = 0 } ถ้า (C >= 60000) { // ความอิ่มตัว bCx = 4 } else if (C >= 20000) { bCx = 3 } else if (C >= 6600) { bCx = 2 } else if (C >= 2200) { bCx = 1 } else if (C >= 729) { bCx = 0 } else if (C >= 243) { bC = 4 } else if (C >= 81) { bC = 3 } else if (C >= 27) { bC = 2 } else if (C >= 9) { bC = 1 } else { bC = 0 } // เขียนไปที่ led basic.clearScreen() if (bCx < 5) { led.plot (1, bCx) } else { led.plot (0, bC) } led.plot(2, bR) led.plot(3, bG) led.plot(4, bB) } })

ขั้นตอนที่ 3: การวัด RGB: โหมดแสงที่ส่งผ่าน

การวัด RGB: โหมดแสงที่ส่งผ่าน
การวัด RGB: โหมดแสงที่ส่งผ่าน
การวัด RGB: โหมดแสงที่ส่งผ่าน
การวัด RGB: โหมดแสงที่ส่งผ่าน
การวัด RGB: โหมดแสงที่ส่งผ่าน
การวัด RGB: โหมดแสงที่ส่งผ่าน
การวัด RGB: โหมดแสงที่ส่งผ่าน
การวัด RGB: โหมดแสงที่ส่งผ่าน

ตามที่ระบุไว้ก่อนหน้านี้ การวัดสีมีสองโหมด: สเปกโทรสโกปีแบบส่งและแบบสะท้อนแสง ในโหมดแสงที่ส่องผ่าน แสงจะผ่านฟิลเตอร์สีหรือสารละลายไปยังเซ็นเซอร์ ในการวัดแสงสะท้อน จาก LEDs ถูกสะท้อนโดยวัตถุและถูกตรวจจับโดยเซ็นเซอร์

จากนั้น ค่า RGB จะแสดงในแถวที่ 3 ถึง 5 ของเมทริกซ์ LED micro:bit 5x5 โดยที่ LED ด้านบนแสดงค่าต่ำ LED ที่ต่ำกว่าจะเป็นค่าสูง

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

หากต้องการอ่านค่าจริง ให้กดปุ่ม A

ขั้นตอนที่ 4: แสงสะท้อน RGB และการวัดความสว่าง

RGB แสงสะท้อนและการวัดความสว่าง
RGB แสงสะท้อนและการวัดความสว่าง
RGB แสงสะท้อนและการวัดความสว่าง
RGB แสงสะท้อนและการวัดความสว่าง
RGB แสงสะท้อนและการวัดความสว่าง
RGB แสงสะท้อนและการวัดความสว่าง

สำหรับการวัดแสงสะท้อน ฉันเปิดไฟ LED (ปุ่ม [A+B]) และวางถ้วยเด็ก IKEA สีสันสดใสไว้ด้านหน้าเซ็นเซอร์ ดังที่เห็นได้จากรูปภาพ ค่า RGB กำลังเปลี่ยนแปลงตามที่คาดไว้

สำหรับการวัดความสว่าง ค่าต่ำจะแสดงเป็นค่าแรก ค่าสูงในแถวที่สอง ค่าต่ำในด้านบน ค่าที่สูงขึ้นโดย LED ด้านล่าง หากต้องการอ่านค่าที่แม่นยำ ให้กดปุ่ม B

ขั้นตอนที่ 5: การวัดแสงสะท้อน: ดอกไม้

การวัดแสงสะท้อน: ดอกไม้
การวัดแสงสะท้อน: ดอกไม้
การวัดแสงสะท้อน: ดอกไม้
การวัดแสงสะท้อน: ดอกไม้
การวัดแสงสะท้อน: ดอกไม้
การวัดแสงสะท้อน: ดอกไม้
การวัดแสงสะท้อน: ดอกไม้
การวัดแสงสะท้อน: ดอกไม้

ฉันเลือกดอกไม้ป่าจากทุ่งหญ้าและพยายามวัดสีดอกไม้ ดอกป๊อปปี้ ดอกคอร์นฟลาวเวอร์ แน็ปวีดสีน้ำตาล ฮาร์กวีดติดผนัง และใบไม้ไดแลนเดลอน ค่า RGB คือ [R, G, B]:

  • ไม่มี [92, 100, 105]
  • ดอกป๊อปปี้ (สีแดง) [208, 98, 99]
  • คอร์นฟลาวเวอร์ (สีน้ำเงิน) [93, 96, 138]
  • แหนบสีน้ำตาล (ม่วง) [122, 97, 133]
  • ฮาร์กวีดผนัง (สีเหลือง) [144, 109, 63]
  • ใบแดนดิลอน (สีเขียว) [164, 144, 124]

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

แนะนำ: