Inhoudsopgave:
- Stap 1: Gebruikte materialen
- Stap 2: Het MakeCode/JavaScript-script
- Stap 3: RGB-metingen uitvoeren: modus doorgelaten licht
- Stap 4: Gereflecteerd licht RGB en helderheidsmetingen
- Stap 5: Gereflecteerd lichtmetingen: bloemen
Video: Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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
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
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
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:
De Pimoroni Enviro+ FeatherWing gebruiken met de Adafruit Feather NRF52840 Express - Ajarnpa
De Pimoroni Enviro+ FeatherWing gebruiken met de Adafruit Feather NRF52840 Express: De Pimoroni Enviro+ FeatherWing is een board vol met sensoren ontworpen om te werken met de Adafruit Feather boards. Het is een nuttige plek om te beginnen voor iedereen die geïnteresseerd is in milieumonitoring, luchtvervuiling en dataverkeer. L
Network Rivalry: een spel met lage latentie voor de BBC Micro:bit: 10 stappen (met afbeeldingen)
Netwerkrivaliteit: een spel met lage latentie voor de BBC Micro:bit: In deze tutorial leg ik uit hoe je een basisspel voor meerdere spelers op de BBC micro:bit implementeert met de volgende kenmerken: Een eenvoudige interface Lage latentie tussen het indrukken van knoppen en schermupdates Een flexibel aantal deelnemers Gemakkelijk co
Muziek reactief licht--Hoe maak je super eenvoudig muziek reactief licht voor het maken van Desktop Awsome.: 5 stappen (met afbeeldingen)
Muziek reactief licht||Hoe maak je super eenvoudig muziek reactief licht voor het maken van een desktop geweldig .: Hey whats up jongens, vandaag zullen we een zeer interessant project bouwen. Vandaag gaan we muziek reactief licht bouwen. De led zal de helderheid veranderen volgens de bas die eigenlijk een laagfrequent audiosignaal is. Het is heel eenvoudig te bouwen. We zullen
Batterijconversie voor LED-licht: 4 stappen (met afbeeldingen)
Batterijconversie voor LED-licht: ik heb net een mooie nieuwe LED-uplighter voor mezelf, maar kijk waar ik het test - onder een bureau op kantoor, waar veel stopcontacten zijn! Ik ga het ombouwen het op batterijvoeding, zodat ik het overal mee naartoe kan nemen. Een build als deze zou w
Klaar voor de start, af! Licht: 7 stappen (met afbeeldingen)
Klaar voor de start, af! Light: Dit is een project waar ik momenteel aan werk voor mijn lokale gevechtsroboticaclub. Het is een LED-lichtsysteem dat de coureurs aangeeft wanneer de wedstrijd begint. Dit zijn de doelen waar ik naar streefde: - Lichamelijk lijken op een verkeer in oudere stijl