Světelný senzor TEMT6000 je přídavný vstupní modul pro Arduino. Tento modul obsahuje senzor osvětlení, který pracuje podobně jako NPN tranzistor. Při nulovém osvětlení je přechod zavřený a na výstupu naměříme napětí 0 Voltů. Se vzrůstajícím množstvím světla dopadajícího na senzor se pak začne zvedat i napětí na výstupu senzoru, přičemž maximum odpovídá napětí připojenému na napájení senzoru.
Senzor je nejvíce citlivý na záření, které má vlnovou délku 570 nm a poloměr citlivosti senzoru je +- 60 stupňů. Pro napájení senzoru můžeme využít napájecí napětí 3,3 nebo 5 Voltů.
Pro úspěšné propojení senzoru TEMT6000 a Arduino desky je nutné zapojit celkem 3 vodiče. Propojíme S s pinem A0, G se zemí Arduina a V s +5V Arduina. Pro analogový výstup S je možné využít také jiný volný analogový pin, ale je nutné tuto volbu provést také na začátku programu.
Ukázkový kód obsahuje na svém začátku nastavení čísla propojovacího pinu a vytvoření proměnných, do kterých se ukládají výsledky měření. V podprogramu setup provedeme inicializaci komunikace po sériové lince a přejdeme do smyčky loop.
V prvním kroku v nekonečné smyčce loop vždy načteme hodnoty z analogového pinu do proměnné. Pro získání procentuálního vyjádření naměřených dat pak v dalším příkazu namapujeme rozsah analogových dat 0-1023 na kratší rozsah 0-100 a uložíme jeho hodnotu do druhé proměnné. V následujícím kroku vypíšeme obě informace po sériové lince a poté ještě pro ukázku budeme ověřovat hodnotu procentuálního množství světla v okolí. Pomocí podmínky if kontrolujeme, jestli je v okolí více než 50 % z maximálního rozsahu. Pokud je podmínka splněna, vypíšeme informaci o dostatku světla po sériové lince. Pokud je ale hodnota menší, vypíšeme informaci o jeho nedostatku. Na konci programu se nachází už jen pauza před novým během smyčky.
// Světelný senzor TEMT6000 // nastavení čísla propojovacího pinu #define analogPin A0 // vytvoření proměnných pro výsledky měření int analogHodnota; int prepocet; void setup() { // zahájení komunikace po sériové lince // rychlostí 9600 baud Serial.begin(9600); } void loop() { // načtení hodnoty z analogového pinu analogHodnota = analogRead(analogPin); // přepočet analogové hodnoty z celého rozsahu // 0-1023 na procentuální rozsah 0-100 prepocet = map(analogHodnota, 0, 1023, 0, 100); // výpis načtených dat po sériové lince Serial.print("Nactena hodnota: "); Serial.print(analogHodnota); Serial.print(", v procentech: "); Serial.print(prepocet); if (prepocet > 50) { Serial.println(" | V okoli je dostatek svetla."); } else { Serial.println(" | V okoli je nedostatek svetla."); } // pauza před novým během loop smyčky delay(500); }
Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem TEMT6000 dostaneme například tento výsledek v Sériovém monitoru:
Nactena hodnota: 0, v procentech: 0 | V okoli je nedostatek svetla. Nactena hodnota: 325, v procentech: 31 | V okoli je nedostatek svetla. Nactena hodnota: 361, v procentech: 35 | V okoli je nedostatek svetla. Nactena hodnota: 578, v procentech: 56 | V okoli je dostatek svetla. Nactena hodnota: 990, v procentech: 96 | V okoli je dostatek svetla. Nactena hodnota: 1003, v procentech: 98 | V okoli je dostatek svetla. Nactena hodnota: 998, v procentech: 97 | V okoli je dostatek svetla. Nactena hodnota: 81, v procentech: 7 | V okoli je nedostatek svetla.
Světelný senzor TEMT6000 je jednoduchý modul, kterým nám přes jeden analogový pin dokáže pomoci s detekcí světla v okolí. Hodí se tedy do projektů, kde potřebujeme rozlišovat mezi různými hladinami osvětlení, ale nevyžadujeme přesnou hodnotu v luxech. Například tedy může sloužit pro spínání světla v místnostech, když se venku dostatečně zatmí, nebo jako detektor černé čáry pro malé roboty.
Výhodou tohoto senzoru je rozhodně jeho nízká cena a rozměry. Nevýhodou pak pro někoho může být omezení citlivosti pro zmíněnou vlnovou délku nebo nejasný vztah mezi výstupním napětím a osvětlením v luxech. Avšak po pečlivé kalibraci by bylo i to možné.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/1737-svetelny-senzor-temt6000-modul-pro-arduino-1502184137.html