Innehållsförteckning:

Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit: 5 steg
Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit: 5 steg

Video: Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit: 5 steg

Video: Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit: 5 steg
Video: Teknikstund: Introduktion till färgmätningar 2024, November
Anonim
Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit
Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit
Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit
Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit
Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit
Ljus- och färgmätningar Med Pimoroni Enviro: bit för Micro: bit

Jag hade arbetat med några enheter som tillåter ljus- och färgmätningar tidigare och du kan hitta mycket om teorin bakom sådana mätningar, instruktionerna här och här.

Pimoroni har nyligen släppt enviro: bit, ett tillägg för micro: bit, som levereras med en MEMS-mikrofon för ljudnivåmätningar, en BME280 temperatur/fuktighet/lufttryckssensor och en TCS3475 ljus- och färgsensor (RGBC). Dessutom finns det två lysdioder placerade på färgsensorns sidor, vilket gör det möjligt att mäta föremålens färg med reflekterat ljus. Att bygga ett verktyg själv för att utföra dessa mätningar har aldrig varit enklare.

Jag här skulle vilja beskriva hur enviro: bit kan användas för färg- och ljusmätningar och MakeCode -skriptet som gör det möjligt att utföra dessa. Kombinationen av micro: bit och enviro: bit är en trevlig och billig enhet för att demonstrera principerna för vetenskapliga mätningar praktiskt och leka med dem.

Detta instruerbara är en del av "Rainbow" -tävlingen. Om du gillar det, vänligen ge det din röst. Tack H

Steg 1: Material som används

Micro: bit, 13 GBP på Pimoroni.

Pimoroni Enviro: bit, 20 GBP på Pimoroni.

Pimoroni Power: bit, 6 GBP på Piomoroni. Du kan också använda batterier eller LiPo för micro: bit

Rosco Cinegel färgfilterprovblock. Jag fick min från Modulor, Berlin.

IKEA färgade plastmuggar. IKEA, Berlin.

Vilda blommor. En äng vid Potsdam-Golm.

Steg 2: Skriptet MakeCode/JavaScript

Pimoroni har utvecklat ett bibliotek för Enviro: bit, både för MakeCode/JavaScript -kodningsmiljön och för MicroPython. Jag här har använt MakeCode, eftersom skripten kan laddas upp direkt till micro: bit och tillåter blockkodning.

Skriptet läser värdena för de röda, gröna och blå (RGB) och de tydliga (C) kanalerna. De första ges i värden från 0 till 255, den andra i hela intervallet från 0 till cirka 61000.

Räckvidden för den klara kanalen är mycket bred och möjliggör mätningar från starkt dagsljus till ett mörkt rum.

Nu förstår jag inte alla detaljer i färgmätningsfunktionen, men jag antar att de har vissa korrigerings- och normaliseringsmekanismer implementerade.

Först tas värdena för alla fyra kanalerna. För att kunna visa resultaten på 5x5 LED -matrisen används mätvärden för att placera resultaten i 5 (RGB) eller 10 (C) fack, som representeras av en LED i antingen en (R, G, B) eller två (C) rader.

När det gäller RGB är skalningen linjär och intervallstorleken för varje fack är 51 enheter bred. När det gäller C är skalningen logaritmisk över 10 steg (log3, så varje steg är det trefaldiga av föregående). Detta gör det möjligt att visa mycket svaga och mycket ljusa förhållanden.

Genom att trycka på knapp A visas R-, G- och B -värdena i siffror, genom att trycka på B -värdet. A+B aktiverar lysdioderna och B stänger av dem.

låt bR = 0 // fack

låt bG = 0 låt bB = 0 låt bS = 0 låt bC = 0 låt bCx = 0 låt S = 0 // uppmätta värden låt C = 0 låt B = 0 låt G = 0 låt R = 0 basic.forever (() => {if (input.buttonIsPressed (Button. AB)) {envirobit.setLEDs (envirobit. OnOff. On)} annars if (input.buttonIsPressed (Button. A)) {basic.showString ("R:" + R + "G:" + G + "B:" + B)} annars if (input.buttonIsPressed (Button. B)) {basic.showString ("C:" + C) envirobit.setLEDs (envirobit. OnOff. Off)} annars {basic.pause (100) R = envirobit.getRed () G = envirobit.getGreen () B = envirobit.getBlue () C = envirobit.getLight () bC = 5 bCx = 5 if (R> = 204) { // binning, max 255 bR = 4} else if (R> = 153) {bR = 3} else if (R> = 102) {bR = 2} else if (R> = 51) {bR = 1} else {bR = 0} om (G> = 204) {bG = 4} annars om (G> = 153) {bG = 3} annars om (G> = 102) {bG = 2} annars om (G> = 51) {bG = 1} annat {bG = 0} om (B> = 204) {bB = 4} annat om (B> = 153) {bB = 3} annars om (B> = 102) {bB = 2} annars om (B> = 51) {bB = 1} annat {bB = 0} om (C> = 60000) {// Saturation 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} annars om (C> = 243) {bC = 4} annat om (C> = 81) {bC = 3} annars om (C> = 27) {bC = 2} else if (C> = 9) {bC = 1} else {bC = 0} // skriv till 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)}})

Steg 3: RGB -mätningar: Sändningsljusläge

Tar RGB -mätningar: Sändningsljusläge
Tar RGB -mätningar: Sändningsljusläge
Tar RGB -mätningar: Sändningsljusläge
Tar RGB -mätningar: Sändningsljusläge
Tar RGB -mätningar: Sändningsljusläge
Tar RGB -mätningar: Sändningsljusläge
Tar RGB -mätningar: Sändningsljusläge
Tar RGB -mätningar: Sändningsljusläge

Som anges tidigare finns det två sätt att färgmäta: överfört och reflekterat ljusspektroskopi. I läget för sänd ljus går ljuset genom ett färgat filter eller en lösning till sensorn. Vid mätning av reflekterat ljus utsändes ljus t.ex. från lysdioderna reflekteras av ett objekt och detekteras av sensorn.

RGB -värdena visas sedan i de tredje till femte raderna i mikro: bit 5x5 LED -matrisen, med de övre lysdioderna som låga, de nedre lysdioderna de höga värdena.

För de experiment som visas här på överförda ljusmätningar använde jag dagsljus och placerade färgade filter från ett Rosco -provpaket framför sensorn. Du kan se effekterna på displayen, särskilt i den röda kanalen. Ta en titt på bilderna och jämför mönstren.

För att läsa de faktiska värdena, tryck bara på knappen A.

Steg 4: Mätningar av reflekterat ljus RGB och ljusstyrka

Reflekterat ljus RGB och ljusstyrka
Reflekterat ljus RGB och ljusstyrka
Reflekterat ljus RGB och ljusstyrka
Reflekterat ljus RGB och ljusstyrka
Reflekterat ljus RGB och ljusstyrka
Reflekterat ljus RGB och ljusstyrka

För mätningar av reflekterat ljus slog jag på lysdioderna (knapp [A+B]) och placerade några färgglada bitar av IKEA barnkoppar framför sensorn. Som framgår av bilderna ändras RGB -värdena som förväntat.

För ljusmätningar visas låga värden i den första, höga värden i den andra raden. Låga värden i de övre, högre värden med de nedre lysdioderna. För att läsa det exakta värdet, tryck på knappen B.

Steg 5: Reflekterade ljusmätningar: Blommor

Reflekterade ljusmått: blommor
Reflekterade ljusmått: blommor
Reflekterade ljusmått: blommor
Reflekterade ljusmått: blommor
Reflekterade ljusmått: blommor
Reflekterade ljusmått: blommor
Reflekterade ljusmått: blommor
Reflekterade ljusmått: blommor

Jag plockade några vilda blommor från en äng och försökte utföra några färgmätningar på dem. Det har varit vallmo, majsblomma, brun knoppblad, väggharkweed och ett dilandelonblad. RGB -värdena var [R, G, B]:

  • ingen [92, 100, 105]
  • vallmo (röd) [208, 98, 99]
  • blåklint (blå) [93, 96, 138]
  • brun rödblad (lila) [122, 97, 133]
  • vägg harkweed (gul) [144, 109, 63]
  • maskrosblad (grönt) [164, 144, 124]

Vilket motsvarar förväntningarna, åtminstone för de tre första anläggningarna. För att visa färgerna från värdena kan du använda en färgkalkylator som den här.

Rekommenderad: