Мазмұны:
- 1 -қадам: Қолданылатын материалдар
- 2 -қадам: MakeCode/JavaScript сценарийі
- 3 -қадам: RGB өлшемдерін қабылдау: таратылған жарық режимі
- 4 -қадам: шағылысқан жарық RGB және жарықтық өлшемдері
- 5 -қадам: шағылысқан жарық өлшемдері: гүлдер
Бейне: Pimoroni Enviro көмегімен жарық пен түсті өлшеу: микро үшін бит: бит: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Мен бұрын жарық пен түстерді өлшеуге мүмкіндік беретін кейбір құрылғыларда жұмыс істедім, және сіз осындай өлшемдердің теориясы туралы көп нәрсені таба аласыз, мұнда және мұнда нұсқаулықтар.
Pimoroni жақында микро: битке арналған экологиялық ортаны шығарды, ол дыбыс деңгейін өлшеуге арналған MEMS микрофонымен, BME280 температура/ылғалдылық/ауа қысымы сенсорымен және TCS3475 жарық пен түс сенсорымен (RGBC) жабдықталған. Сонымен қатар, түс сенсорының екі жағында жарық диодтары бар, олар шағылысқан жарық арқылы заттардың түсін өлшеуге мүмкіндік береді. Бұл өлшемдерді орындау үшін өз қолыңызбен құрал жасау ешқашан оңай болған емес.
Мен мұнда enviro: bit түсі мен жарығын өлшеуге және оларды жасауға мүмкіндік беретін MakeCode сценарийін қолдануға болатынын сипаттағым келеді. Micro: bit және enviro: bit комбинациясы-бұл ғылыми өлшемдердің принциптерін практикалық түрде көрсетуге және олармен ойнауға арналған жақсы және арзан құрылғы.
Бұл нұсқаулық «Радуга» конкурсының бөлігі болып табылады. Егер сізге ұнаса, дауысыңызды беріңіз
1 -қадам: Қолданылатын материалдар
Микро: бит, Pimoroni -де 13 фунт стерлинг.
Pimoroni Enviro: бит, Pimoroni -де 20 GBP.
Pimoroni қуаты: бит, 6 GBP Piomoroni. Сондай -ақ, микро: бит үшін батарея пакеттерін немесе LiPo пайдалануға болады
Rosco Cinegel түсті сүзгі үлгі блогы. Менікі Берлиннің Модулор қаласынан келді.
IKEA түсті пластикалық шыныаяқтар. IKEA, Берлин.
Жабайы гүлдер. Потсдам-Голмдағы шалғын.
2 -қадам: MakeCode/JavaScript сценарийі
Pimoroni компаниясы MakeCode/JavaScript кодтау ортасы үшін де, MicroPython үшін де Enviro: bit үшін кітапхана әзірледі. Мен мұнда MakeCode қолдандым, себебі сценарийлерді micro: bitке тікелей жүктеуге болады және блокты кодтауға мүмкіндік береді.
Сценарий қызыл, жасыл және көк (RGB) және таза (C) арналардың мәндерін оқиды. Біріншілері 0 -ден 255 -ке дейінгі мәндерде беріледі, екіншісі 0 -ден 61000 -ға дейінгі аралықта.
Таза арнаның диапазоны өте кең және күндізгі жарықтан қараңғы бөлмеге дейін өлшеуге мүмкіндік береді.
Қазіргі уақытта мен түс өлшеу функциясының барлық мәліметтерін түсінбеймін, бірақ оларда түзету мен қалыпқа келтіру механизмдері бар деп ойлаймын.
Алдымен барлық төрт арнаның мәндері алынады. Нәтижелерді 5х5 жарықдиодты матрицада көрсете алу үшін өлшенген мәндер нәтижелерді 5 (RGB) немесе 10 (C) контейнерлерге орналастыру үшін қолданылады, олар бір жарық диодты бір (R, G, B) немесе екі (С) қатар.
RGB жағдайында масштабтау сызықты және әр қалтаның интервал өлшемі ені 51 бірлік. С жағдайында масштабтау 10 қадамнан астам логарифмдік болып табылады (log3, сондықтан әрбір қадам алдыңғыға қарағанда 3 есе). Бұл өте күңгірт және өте жарқын жағдайларды көрсетуге мүмкіндік береді.
А түймешігін басу R, G және B мәндерін сандарда көрсетеді, ал В мәнін басады. A+B жарық диодты қосады, ал В оларды өшіреді.
bR = 0 // bins болсын
bG = 0 болсын bB = 0 болсын bS = 0 болсын bC = 0 болсын bCx = 0 болсын S = 0 // өлшенген мәндер болсын C = 0 болсын B = 0 болсын G = 0 болсын R = 0 болсын базалық.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 егер (R> = 204) { // binning, max 255 bR = 4} else if (R> = 153) {bR = 3} else if (R> = 102) {bR = 2} if 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} if if (G> = 51)) {bG = 1} else {bG = 0} if (B> = 204) {bB = 4} else if (B> = 153) {bB = 3} if if (B> = 102) {bB = 2} else if (B> = 51) {bB = 1} else {bB = 0} if (C> = 60000)) {// Қанықтылық bCx = 4} if if (C> = 20000) {bCx = 3} else if (C> = 6600) {bCx = 2} if if (C> = 2200) {bCx = 1} else if (C> = 729) {bCx = 0} if 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} // led basic.clearScreen () -ге жазыңыз, егер (bCx <5) {led.plot (1, bCx)} басқа {led.plot (0, bC)} led.plot (2, bR) led.plot (3, bG) led.plot (4, bB)}})
3 -қадам: RGB өлшемдерін қабылдау: таратылған жарық режимі
Жоғарыда айтылғандай, түс өлшеудің екі режимі бар: өткізілген және шағылған жарық спектроскопиясы. Берілген жарық режимінде жарық түсті сүзгіден немесе сенсорға ерітіндіден өтеді. Шағылған жарық өлшемдерінде жарық шығаратын, мысалы. светодиодтардан объекті шағылысады және сенсор арқылы анықталады.
Содан кейін RGB мәндері микро: биттік 5х5 жарықдиодты матрицаның 3-5 -ші қатарларында көрсетіледі, жоғарғы светодиодтары төмен, төменгі жарық диодтары жоғары мәндерді көрсетеді.
Берілген жарық өлшеу бойынша көрсетілген эксперименттер үшін мен күндізгі жарықты қолдандым және сенсордың алдына Rosco үлгісінің пакетінен түсті сүзгілерді қойдым. Эффектілерді дисплейде, әсіресе қызыл арнада көруге болады. Суреттерге қарап, өрнектерді салыстырыңыз.
Нақты мәндерді оқу үшін А түймесін басыңыз.
4 -қадам: шағылысқан жарық RGB және жарықтық өлшемдері
Жарықтың шағылуын өлшеу үшін мен светодиодтарды ([A+B] түймесін) қосып, сенсордың алдына ашық түсті IKEA балалар шыныаяқтарының бірнеше бөлігін қойдым. Суреттерден көрініп тұрғандай, RGB мәндері күткендей өзгереді.
Жарықтықты өлшеу үшін бірінші жолда төмен мәндер, екінші жолда жоғары мәндер көрсетіледі. Төменгі светодиодтармен жоғарғы, төмен мәндер. Нақты мәнді оқу үшін B түймесін басыңыз.
5 -қадам: шағылысқан жарық өлшемдері: гүлдер
Мен шалғыннан жабайы гүлдерді алып, оларға түс өлшеуді жүргізуге тырыстым, ол көкнәр, жүгері гүлі, қоңыр тоқаш, қабырғадағы қарағай және диланделон жапырағы болды. RGB мәндері [R, G, B]:
- жоқ [92, 100, 105]
- көкнәр (қызыл) [208, 98, 99]
- жүгері гүлі (көк) [93, 96, 138]
- қоңыр өрік (сирень) [122, 97, 133]
- қабырғадағы харквид (сары) [144, 109, 63]
- одуванчика жапырағы (жасыл) [164, 144, 124]
Бұл күтулерге сәйкес келеді, кем дегенде алғашқы үш зауыт үшін. Түстерді мәндерден көрсету үшін сіз мұнда калькуляторды қолдана аласыз.
Ұсынылған:
XinaBox пен термистордың көмегімен температураны өлшеу: 8 қадам
XinaBox пен термистордың көмегімен температураны өлшеу: XinaBox xChip аналогты кірісін және термисторлық зондты пайдаланып сұйықтықтың температурасын өлшеңіз
HIH6130 және Arduino Nano көмегімен ылғалдылық пен температураны өлшеу: 4 қадам
HIH6130 мен Arduino Nano көмегімен ылғалдылық пен температураны өлшеу: HIH6130 - цифрлық шығысы бар ылғалдылық пен температура сенсоры. Бұл датчиктер ± 4% RH дәлдік деңгейін қамтамасыз етеді. Өнеркәсіптің жетекші ұзақ мерзімді тұрақтылығымен, шынайы температуралық компенсацияланған сандық I2C, өнеркәсіптің сенімділігі, энергия тиімділігі
HTS221 және Arduino Nano көмегімен ылғалдылық пен температураны өлшеу: 4 қадам
HTS221 және Arduino Nano көмегімен ылғалдылық пен температураны өлшеу: HTS221 - салыстырмалы ылғалдылық пен температураға арналған өте жинақы сыйымдылықты сандық сенсор. Ол сандық серия арқылы өлшеу ақпаратын беру үшін сенсорлық элементті және аралас сигналға арналған арнайы интегралды схеманы (ASIC) қамтиды
Микро бағдарламалау: бит робот және джойстик: MicroPython көмегімен бит контроллері: 11 қадам
Micro: Bit Robot & Joystick бағдарламалау: MicroPython көмегімен бит контроллері: Robocamp 2019 үшін біздің жазғы робототехника лагері, 10-13 жас аралығындағы жастар BBC микро: битке негізделген «салмаққа қарсы роботты» дәнекерлейді, бағдарламалайды және құрады. микро: бит қашықтан басқару құралы ретінде пайдаланылады. Егер сіз қазір Robocamp -та болсаңыз, шаңғымен
HTS221 және Raspberry Pi көмегімен ылғалдылық пен температураны өлшеу: 4 қадам
HTS221 мен Raspberry Pi көмегімен ылғалдылық пен температураны өлшеу: HTS221 - салыстырмалы ылғалдылық пен температураға арналған өте жинақы сыйымдылықты сандық сенсор. Ол сандық серия арқылы өлшеу ақпаратын беру үшін сенсорлық элементті және аралас сигналға арналған арнайы интегралды схеманы (ASIC) қамтиды