INHOUDSOPGAWE:

Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit: 5 stappe
Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit: 5 stappe

Video: Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit: 5 stappe

Video: Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit: 5 stappe
Video: DIY Smart Home Weather Station - Wind, Rain, Temperature, Pressure, Humidity, Light 2024, Julie
Anonim
Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit
Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit
Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit
Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit
Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit
Ligte en kleurmetings Met die Pimoroni Enviro: bit vir die Micro: bit

Ek het voorheen gewerk aan 'n paar toestelle wat lig- en kleurmetings moontlik maak, en u kan baie vind oor die teorie agter sulke metings, die instruksies hier en hier.

Pimoroni het onlangs die enviro: bit vrygestel, 'n byvoeging vir die micro: bit, met 'n MEMS-mikrofoon vir klankvlakmetings, 'n BME280 temperatuur/humiditeit/lugdruksensor en 'n TCS3475 lig- en kleursensor (RGBC). Daarbenewens is daar twee LED's aan die kante van die kleursensor geplaas, waarmee u die kleur van voorwerpe met weerkaatsende lig kan meet. Dit was nog nooit so maklik om 'n instrument te bou om hierdie metings uit te voer nie.

Ek wil hier beskryf hoe die enviro: bit gebruik kan word vir kleur- en ligmetings en die MakeCode -script waarmee u dit kan uitvoer. Die kombinasie van micro: bit en enviro: bit is 'n goeie en goedkoop toestel om die beginsels van wetenskaplike metings prakties te demonstreer en daarmee te speel.

Hierdie instruksies is deel van die "Rainbow" -kompetisie. As jy daarvan hou, gee dit asseblief jou stem. Dankie H.

Stap 1: Gebruikte materiaal

Mikro: bietjie, 13 GBP by Pimoroni.

Pimoroni Enviro: bietjie, 20 GBP by Pimoroni.

Pimoroni Power: bietjie, 6 GBP by Piomoroni. U kan ook batterypakke of 'n LiPo vir die micro: bit gebruik

Rosco Cinegel kleurfiltermonsterblok. Ek het myne by Modulor, Berlyn, gekry.

IKEA gekleurde plastiekbekers. IKEA, Berlyn.

Wilde blomme. 'N Weide by Potsdam-Golm.

Stap 2: Die MakeCode/JavaScript -skrip

Pimoroni het 'n biblioteek vir die Enviro: bit ontwikkel, beide vir die MakeCode/JavaScript -koderingsomgewing en vir MicroPython. Ek het hier MakeCode gebruik, aangesien die skrifte direk na die micro: bit opgelaai kan word en blokkodering moontlik is.

Die skrif lees die waardes van die rooi, groen en blou (RGB) en die duidelike (C) kanale. Die eerstes word gegee in waardes van 0 tot 255, die tweede in die hele reeks van 0 tot ongeveer 61000.

Die omvang van die duidelike kanaal is baie breed en maak metings moontlik van helder daglig tot 'n donker kamer.

Ek verstaan nou nie al die besonderhede van die kleurmetingsfunksie nie, maar ek neem aan dat dit 'n paar regstellings- en normaliseringsmeganismes het.

Aanvanklik word die waardes van al vier kanale geneem. Om die resultate op die 5x5 LED -matriks te kan vertoon, word meetwaardes gebruik om die resultate in 5 (RGB) of 10 (C) bakke te plaas, wat deur een LED in een (R, G, B) of twee (C) rye.

In die geval van RGB is die skaal lineêr en is die intervalgrootte van elke as 51 eenhede breed. In die geval van C is die skaal logaritmies oor 10 stappe (log3, dus is elke stap die drievoud van die vorige). Dit laat baie swak en baie helder toestande toe.

Deur op knoppie A te druk, word die R-, G- en B -waardes in getalle gedruk, terwyl B op die C -waarde gedruk word. A+B aktiveer die LED's en B sluit hulle af.

laat bR = 0 // asblikke

laat bG = 0 laat bB = 0 laat bS = 0 laat bC = 0 laat bCx = 0 laat S = 0 // gemeet waardes laat C = 0 laat B = 0 laat G = 0 laat R = 0 basies.vir altyd (() => {if (input.buttonIsPressed (Button. AB)) {envirobit.setLEDs (envirobit. OnOff. On)} anders as (input.buttonIsPressed (Button. A)) {basic.showString ("R:" + R + "G:" + G + "B:" + B)} anders as (input.buttonIsPressed (Button. B)) {basic.showString ("C:" + C) envirobit.setLEDs (envirobit. OnOff. Off)} anders {basic.pause (100) R = envirobit.getRed () G = envirobit.getGreen () B = envirobit.getBlue () C = envirobit.getLight () bC = 5 bCx = 5 if (R> = 204) { // binning, maksimum 255 bR = 4} anders as (R> = 153) {bR = 3} anders as (R> = 102) {bR = 2} anders as (R> = 51) {bR = 1} anders {bR = 0} as (G> = 204) {bG = 4} anders as (G> = 153) {bG = 3} anders as (G> = 102) {bG = 2} anders as (G> = 51) {bG = 1} anders {bG = 0} as (B> = 204) {bB = 4} anders as (B> = 153) {bB = 3} anders as (B> = 102) {bB = 2} anders as (B> = 51) {bB = 1} anders {bB = 0} as (C> = 60000) {// Versadiging bCx = 4} anders as (C> = 20000) {bCx = 3} anders as (C> = 6600) {bCx = 2} anders as (C> = 2200) {bCx = 1} anders as (C> = 729) {bCx = 0} anders as (C> = 243) {bC = 4} anders as (C> = 81) {bC = 3} anders as (C> = 27) {bC = 2} anders as (C> = 9) {bC = 1} anders {bC = 0} // skryf aan led basic.clearScreen () as (bCx <5) {led.plot (1, bCx)} anders {led.plot (0, bC)} led.plot (2, bR) led.plot (3, bG) led.plot (4, bB)}})

Stap 3: RGB -metings doen: transmissieligmodus

RGB -metings neem: transmissieligmodus
RGB -metings neem: transmissieligmodus
RGB -metings neem: transmissieligmodus
RGB -metings neem: transmissieligmodus
RGB -metings neem: transmissieligmodus
RGB -metings neem: transmissieligmodus
RGB -metings neem: transmissieligmodus
RGB -metings neem: transmissieligmodus

Soos voorheen aangedui, is daar twee maniere van kleurmetings: transmissie- en weerkaatsende ligspektroskopie. In die transmissieligmodus gaan lig deur 'n gekleurde filter of oplossing na die sensor. In weerkaatsingsmetings word lig uitgestraal bv. van die LED's word deur 'n voorwerp gereflekteer en deur die sensor bespeur.

Die RGB -waardes word dan in die 3de tot 5de rye van die mikro: bis 5x5 LED -matriks vertoon, met die boonste LED's laag, die onderste LED's die hoë waardes.

Vir die eksperimente wat hier op transmissieligte metings getoon word, het ek daglig gebruik en gekleurde filters uit 'n Rosco -monsterpakket voor die sensor geplaas. U kan die effekte op die skerm sien, veral in die rooi kanaal. Kyk na die prente en vergelyk die patrone.

Druk die knoppie A. om die werklike waardes te lees.

Stap 4: Weerkaatsing van ligte RGB en helderheidmetings

Weerspieël lig RGB, en helderheidmetings
Weerspieël lig RGB, en helderheidmetings
Weerspieël lig RGB, en helderheidmetings
Weerspieël lig RGB, en helderheidmetings
Weerspieël lig RGB, en helderheidmetings
Weerspieël lig RGB, en helderheidmetings

Vir metings van weerkaatsende lig het ek die LED's aangeskakel (knoppie [A+B]) en 'n paar helderkleurige stukke IKEA kinderbekers voor die sensor geplaas. Soos uit die foto's blyk, verander die RGB -waardes soos verwag.

Vir helderheidmetings word lae waardes in die eerste, hoë waardes in die tweede ry vertoon. Lae waardes in die boonste, hoër waardes deur die onderste LED's. Druk die knoppie B. om die presiese waarde te lees.

Stap 5: Weerspieël ligmetings: blomme

Weerspieël ligmetings: blomme
Weerspieël ligmetings: blomme
Weerspieël ligmetings: blomme
Weerspieël ligmetings: blomme
Weerspieël ligmetings: blomme
Weerspieël ligmetings: blomme
Weerspieël ligmetings: blomme
Weerspieël ligmetings: blomme

Ek het 'n paar wilde blomme uit 'n weide gepluk en probeer om 'n paar kleurmetings daarop uit te voer. Dit was papawer, mielieblom, bruin rietweefsel, muurharkweed en 'n blommetjie van dilleblomme. Die RGB -waardes was [R, G, B]:

  • geen [92, 100, 105]
  • papaver (rooi) [208, 98, 99]
  • koringblom (blou) [93, 96, 138]
  • bruin knypweed (lila) [122, 97, 133]
  • muurharkweed (geel) [144, 109, 63]
  • paardeblaarblaar (groen) [164, 144, 124]

Dit pas by die verwagtinge, ten minste vir die eerste drie plante. Om die kleure uit die waardes te vertoon, kan u 'n kleurrekenaar gebruik soos hier.

Aanbeveel: