Mục lục:

Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit: 5 bước
Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit: 5 bước

Video: Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit: 5 bước

Video: Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit: 5 bước
Video: Giao thoa ánh sáng | Vật lý 12 - Chương 5 Bài 25 2024, Tháng bảy
Anonim
Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit
Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit
Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit
Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit
Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit
Các phép đo ánh sáng và màu sắc với Pimoroni Enviro: bit cho Micro: bit

Tôi đã làm việc trên một số thiết bị cho phép đo ánh sáng và màu sắc trước đây và bạn có thể tìm thấy nhiều điều về lý thuyết đằng sau các phép đo như vậy trong tài liệu hướng dẫn ở đây và ở đây.

Pimoroni gần đây đã phát hành enviro: bit, một tiện ích bổ sung cho micro: bit, đi kèm với micrô MEMS để đo mức âm thanh, cảm biến nhiệt độ / độ ẩm / áp suất không khí BME280 và cảm biến màu và ánh sáng TCS3475 (RGBC). Ngoài ra có hai đèn LED được đặt ở hai bên của cảm biến màu, cho phép đo màu sắc của vật thể bằng ánh sáng phản xạ. Tự mình xây dựng một công cụ để thực hiện các phép đo này chưa bao giờ dễ dàng hơn thế.

Ở đây tôi muốn mô tả cách enviro: bit có thể được sử dụng cho các phép đo màu sắc và ánh sáng và tập lệnh MakeCode cho phép thực hiện các phép đo này. Sự kết hợp của micro: bit và enviro: bit là một thiết bị đẹp và rẻ tiền để chứng minh các nguyên tắc đo lường khoa học thực hành và chơi với chúng.

Hướng dẫn này là một phần của cuộc thi "Rainbow". Nếu bạn thích nó, hãy bình chọn cho nó.

Bước 1: Vật liệu được sử dụng

Micro: bit, 13 GBP tại Pimoroni.

Pimoroni Enviro: bit, 20 GBP tại Pimoroni.

Pimoroni Power: bit, 6 GBP tại Piomoroni. Bạn cũng có thể sử dụng bộ pin hoặc LiPo cho micro: bit

Khối mẫu lọc màu Rosco Cinegel. Tôi nhận được của tôi từ Modulor, Berlin.

Ly nhựa màu IKEA. IKEA, Berlin.

Những bông hoa dại. Một đồng cỏ ở Potsdam-Golm.

Bước 2: Mã MakeCode / JavaScript Script

Pimoroni đã phát triển một thư viện cho Enviro: bit, cho cả môi trường viết mã MakeCode / JavaScript và cho MicroPython. Tôi ở đây đã sử dụng MakeCode, vì các tập lệnh có thể được tải trực tiếp lên micro: bit và cho phép mã hóa khối.

Tập lệnh đọc giá trị của các kênh màu đỏ, xanh lục và xanh lam (RGB) và kênh rõ ràng (C). Số đầu tiên được cho trong các giá trị từ 0 đến 255, thứ hai trong toàn bộ phạm vi từ 0 đến khoảng 61000.

Phạm vi của kênh rõ ràng là rất rộng và cho phép đo từ ánh sáng ban ngày sáng đến phòng tối.

Bây giờ tôi không hiểu tất cả các chi tiết của chức năng đo màu, nhưng tôi cho rằng chúng có một số cơ chế hiệu chỉnh và chuẩn hóa được thực hiện.

Lúc đầu, các giá trị của cả bốn kênh được lấy. Để có thể hiển thị kết quả trên ma trận LED 5x5, các giá trị đo được sử dụng để đặt kết quả vào các ngăn 5 (RGB) hoặc 10 (C), được biểu thị bằng một đèn LED trong một (R, G, B) hoặc hai (C) hàng.

Trong trường hợp RGB, tỷ lệ là tuyến tính và kích thước khoảng của mỗi thùng rộng 51 đơn vị. Trong trường hợp của C, tỷ lệ là logarit trên 10 bước (log3, vì vậy mỗi bước gấp 3 lần trước đó). Điều này cho phép hiển thị các điều kiện rất mờ và rất sáng như nhau.

Nhấn nút A hiển thị các giá trị R, G và B bằng số, nhấn B giá trị C. A + B kích hoạt đèn LED và B sẽ tắt chúng.

để bR = 0 // thùng

cho bG = 0 cho bB = 0 cho bS = 0 cho bC = 0 cho bCx = 0 cho S = 0 // các giá trị đo được cho C = 0 cho B = 0 cho G = 0 cho R = 0 cơ bản.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)} else if (input.buttonIsPressed (Button. B)) {basic.showString ("C:" + C) envirobit.setLEDs (envirobit. OnOff. Off)} else {basic.pause (100) R = envirobit.getRed () G = envirobit.getGreen () B = envirobit.getBlue () C = envirobit.getLight () bC = 5 bCx = 5 if (R> = 204) { // binning, tối đa 255 bR = 4} else if (R> = 153) {bR = 3} else if (R> = 102) {bR = 2} else if (R> = 51) {bR = 1} else {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} else {bG = 0} if (B> = 204) {bB = 4} else if (B> = 153) {bB = 3} else if (B> = 102) {bB = 2} else if (B> = 51) {bB = 1} else {bB = 0} if (C> = 60000) {// Độ bão hòa 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} // ghi vào 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)}})

Bước 3: Thực hiện phép đo RGB: Chế độ ánh sáng truyền qua

Thực hiện phép đo RGB: Chế độ ánh sáng truyền qua
Thực hiện phép đo RGB: Chế độ ánh sáng truyền qua
Thực hiện phép đo RGB: Chế độ ánh sáng truyền qua
Thực hiện phép đo RGB: Chế độ ánh sáng truyền qua
Thực hiện phép đo RGB: Chế độ ánh sáng truyền qua
Thực hiện phép đo RGB: Chế độ ánh sáng truyền qua
Thực hiện phép đo RGB: Chế độ ánh sáng truyền qua
Thực hiện phép đo RGB: Chế độ ánh sáng truyền qua

Như đã chỉ ra trước đây, có hai chế độ đo màu: quang phổ ánh sáng truyền qua và phản xạ. Ở chế độ ánh sáng truyền qua, ánh sáng đi qua bộ lọc hoặc dung dịch có màu đến cảm biến. Trong các phép đo ánh sáng phản xạ, ánh sáng phát ra, v.d. từ các đèn LED được phản xạ bởi một đối tượng và được phát hiện bởi cảm biến.

Các giá trị RGB sau đó được hiển thị ở hàng thứ 3 đến hàng thứ 5 của ma trận LED vi: bit 5x5, với các đèn LED phía trên đại diện cho giá trị thấp, các đèn LED phía dưới biểu thị giá trị cao.

Đối với các thí nghiệm hiển thị ở đây về phép đo ánh sáng truyền qua, tôi đã sử dụng ánh sáng ban ngày và đặt các bộ lọc màu từ gói mẫu Rosco trước cảm biến. Bạn có thể thấy các hiệu ứng trên màn hình, đặc biệt là trong kênh màu đỏ. Hãy xem các hình ảnh và so sánh các mẫu.

Để đọc các giá trị thực, chỉ cần nhấn nút A.

Bước 4: Đo ánh sáng phản xạ RGB và đo độ sáng

Các phép đo ánh sáng phản xạ RGB và độ sáng
Các phép đo ánh sáng phản xạ RGB và độ sáng
Các phép đo ánh sáng phản xạ RGB và độ sáng
Các phép đo ánh sáng phản xạ RGB và độ sáng
Các phép đo ánh sáng phản xạ RGB và độ sáng
Các phép đo ánh sáng phản xạ RGB và độ sáng

Để đo ánh sáng phản xạ, tôi bật đèn LED (nút [A + B]) và đặt một số mảnh cốc IKEA trẻ em có màu sắc rực rỡ ở phía trước cảm biến. Như có thể thấy từ các hình ảnh, các giá trị RGB đang thay đổi như mong đợi.

Đối với các phép đo độ sáng, giá trị thấp được hiển thị ở hàng đầu tiên, giá trị cao ở hàng thứ hai. Giá trị thấp ở phía trên, giá trị cao hơn bằng đèn LED thấp hơn. Để đọc giá trị chính xác, hãy nhấn nút B.

Bước 5: Phép đo ánh sáng phản xạ: Hoa

Phép đo ánh sáng phản xạ: Hoa
Phép đo ánh sáng phản xạ: Hoa
Phép đo ánh sáng phản xạ: Hoa
Phép đo ánh sáng phản xạ: Hoa
Phép đo ánh sáng phản xạ: Hoa
Phép đo ánh sáng phản xạ: Hoa
Phép đo ánh sáng phản xạ: Hoa
Phép đo ánh sáng phản xạ: Hoa

Tôi hái một số bông hoa dại từ đồng cỏ và cố gắng thực hiện một số phép đo màu sắc trên chúng. Đó là cây anh túc, hoa ngô đồng, cây knapweed nâu, cây bông lan tường và lá dilandelon. Giá trị RGB là [R, G, B]:

  • không [92, 100, 105]
  • cây anh túc (đỏ) [208, 98, 99]
  • hoa ngô đồng (xanh lam) [93, 96, 138]
  • knapweed nâu (tử đinh hương) [122, 97, 133]
  • harkweed tường (màu vàng) [144, 109, 63]
  • lá bồ công anh (xanh) [164, 144, 124]

Phù hợp với mong đợi, ít nhất là đối với ba cây đầu tiên. Để hiển thị màu từ các giá trị, bạn có thể sử dụng máy tính màu như ở đây.

Đề xuất: