Inhoudsopgave:

Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit: 5 stappen
Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit: 5 stappen

Video: Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit: 5 stappen

Video: Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit: 5 stappen
Video: Waarom hebben dingen een kleur? 2024, November
Anonim
Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit
Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit
Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit
Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit
Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit
Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit

Ik had eerder aan een aantal apparaten gewerkt die licht- en kleurmetingen mogelijk maakten en je kunt hier en hier veel vinden over de theorie achter dergelijke metingen, de instructables.

Pimoroni heeft onlangs de enviro:bit uitgebracht, een add-on voor de micro:bit, die wordt geleverd met een MEMS-microfoon voor geluidsniveaumetingen, een BME280 temperatuur-/vochtigheids-/luchtdruksensor en een TCS3475 licht- en kleurensensor (RGBC). Daarnaast zijn er twee LED's aan de zijkanten van de kleurensensor geplaatst, waardoor de kleur van objecten kan worden gemeten door gereflecteerd licht. Zelf een tool bouwen om deze metingen uit te voeren was nog nooit zo eenvoudig.

Ik zou hier willen beschrijven hoe de enviro:bit kan worden gebruikt voor kleur- en lichtmetingen en het MakeCode-script waarmee deze kunnen worden uitgevoerd. De combinatie van micro:bit en enviro:bit is een mooi en goedkoop apparaat om de principes van wetenschappelijke metingen hands-on te demonstreren en ermee te spelen.

Deze instructable maakt deel uit van de "Rainbow"-wedstrijd. Als je het leuk vindt, geef het dan je stem. BedanktH

Stap 1: Gebruikte materialen

Micro:bit, 13 GBP bij Pimoroni.

Pimoroni Enviro:bit, 20 GBP bij Pimoroni.

Pimoroni Power:bit, 6 GBP bij Piomoroni. U kunt ook batterijpakketten of een LiPo gebruiken voor de micro:bit

Rosco Cinegel kleurfilter monsterblok. Ik heb de mijne van Modulor, Berlijn.

IKEA gekleurde plastic bekers. Ikea, Berlijn.

Wilde bloemen. Een weiland bij Potsdam-Golm.

Stap 2: Het MakeCode/JavaScript-script

Pimoroni heeft een bibliotheek ontwikkeld voor de Enviro:bit, zowel voor de MakeCode/JavaScript-coderingsomgeving als voor MicroPython. Ik heb hier MakeCode gebruikt, omdat de scripts rechtstreeks naar de micro:bit kunnen worden geüpload en blokcodering mogelijk is.

Het script leest de waarden van de rode, groene en blauwe (RGB) en de heldere (C) kanalen. De eersten worden gegeven in waarden van 0 tot 255, de tweede in het hele bereik van 0 tot ongeveer 61000.

Het bereik van het heldere kanaal is zeer breed en maakt metingen mogelijk van helder daglicht tot een donkere kamer.

Inmiddels begrijp ik niet alle details van de kleurmeetfunctie, maar ik neem aan dat ze een aantal correctie- en normalisatiemechanismen hebben geïmplementeerd.

Eerst worden de waarden van alle vier de kanalen genomen. Om de resultaten op de 5x5 LED-matrix weer te geven, worden meetwaarden gebruikt om de resultaten in 5 (RGB) of 10 (C) bakken te plaatsen, die worden weergegeven door één LED in één (R, G, B) of twee (C) rijen.

In het geval van RGB is de schaalverdeling lineair en is de intervalgrootte van elke bak 51 eenheden breed. In het geval van C is de schaling logaritmisch over 10 stappen (log3, dus elke stap is het 3-voud van de vorige). Dit maakt het mogelijk om zowel zeer donkere als zeer heldere omstandigheden weer te geven.

Door op knop A te drukken, worden de R-, G- en B-waarden in cijfers weergegeven, door op B de C-waarde te drukken. A+B activeert de LED's en B zal ze uitschakelen.

laat bR = 0 // bakken

let bG = 0 let bB = 0 let bS = 0 let bC = 0 let bCx = 0 let S = 0 // gemeten waarden let C = 0 let B = 0 let G = 0 let 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) } 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, 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 } 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) { // Verzadiging 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} // schrijf naar 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) } })

Stap 3: RGB-metingen uitvoeren: modus doorgelaten licht

RGB-metingen uitvoeren: doorgelaten lichtmodus
RGB-metingen uitvoeren: doorgelaten lichtmodus
RGB-metingen uitvoeren: doorgelaten lichtmodus
RGB-metingen uitvoeren: doorgelaten lichtmodus
RGB-metingen uitvoeren: doorgelaten lichtmodus
RGB-metingen uitvoeren: doorgelaten lichtmodus
RGB-metingen uitvoeren: doorgelaten lichtmodus
RGB-metingen uitvoeren: doorgelaten lichtmodus

Zoals eerder aangegeven, zijn er twee manieren van kleurmetingen: doorgelaten en gereflecteerde lichtspectroscopie. In de doorvallende lichtmodus gaat het licht door een gekleurd filter of oplossing naar de sensor. Bij metingen van gereflecteerd licht wordt het uitgestraalde licht b.v. van de LED's wordt gereflecteerd door een object en wordt gedetecteerd door de sensor.

De RGB-waarden worden vervolgens weergegeven in de 3e tot 5e rij van de micro:bit 5x5 LED-matrix, waarbij de bovenste LED's laag zijn, de onderste LED's de hoge waarden.

Voor de hier getoonde experimenten met doorvallende lichtmetingen heb ik daglicht gebruikt en gekleurde filters uit een Rosco proefpakket voor de sensor geplaatst. Je ziet de effecten op het display, vooral in het rode kanaal. Bekijk de foto's en vergelijk de patronen.

Om de werkelijke waarden af te lezen, drukt u gewoon op knop A.

Stap 4: Gereflecteerd licht RGB en helderheidsmetingen

Gereflecteerd licht RGB en helderheidsmetingen
Gereflecteerd licht RGB en helderheidsmetingen
Gereflecteerd licht RGB en helderheidsmetingen
Gereflecteerd licht RGB en helderheidsmetingen
Gereflecteerd licht RGB en helderheidsmetingen
Gereflecteerd licht RGB en helderheidsmetingen

Voor het meten van gereflecteerd licht heb ik de LED's aangezet (knop [A+B]) en enkele felgekleurde stukjes IKEA kinderbekers voor de sensor geplaatst. Zoals op de foto's te zien is, veranderen de RGB-waarden zoals verwacht.

Voor helderheidsmetingen worden lage waarden weergegeven in de eerste, hoge waarden in de tweede rij. Lage waarden in de bovenste, hogere waarden bij de onderste LED's. Druk op knop B om de exacte waarde af te lezen.

Stap 5: Gereflecteerd lichtmetingen: bloemen

Afmetingen gereflecteerd licht: bloemen
Afmetingen gereflecteerd licht: bloemen
Afmetingen gereflecteerd licht: bloemen
Afmetingen gereflecteerd licht: bloemen
Afmetingen gereflecteerd licht: bloemen
Afmetingen gereflecteerd licht: bloemen
Afmetingen gereflecteerd licht: bloemen
Afmetingen gereflecteerd licht: bloemen

Ik plukte wat wilde bloemen uit een weiland en probeerde er wat kleurmetingen op uit te voeren. Het was klaproos, korenbloem, bruin knoopkruid, muurharkwe en een dilandelonblad. De RGB-waarden waren [R, G, B]:

  • geen [92, 100, 105]
  • klaproos (rood) [208, 98, 99]
  • korenbloem (blauw) [93, 96, 138]
  • bruin knoopkruid (lila) [122, 97, 133]
  • muur harkwe (geel) [144, 109, 63]
  • paardenbloemblad (groen) [164, 144, 124]

Wat voldoet aan de verwachtingen, in ieder geval voor de eerste drie planten. Om de kleuren van de waarden weer te geven, kunt u een kleurencalculator gebruiken, zoals hier.

Aanbevolen: