V posledním dílu ze seriálu článků o kitu TinyLab jsme se podívali, jak se dá ovládat piezo bzučák. Dnes si ukážeme, jak můžeme využít fotorezistor, který je dostupný na desce.
Co je to rezistor
Ještě před tím, než se podíváme na fotorezistor, si v rychlosti shrneme, co je to rezistor. Rezistor, je součástka, kterou používáme hlavně kvůli jedné její vlastnosti, kterou je odpor (značí se Ω – ohm). Pomocí odporu vyjadřujeme, jak obtížné je pro proud, aby zkoumanou součástkou protékal. Říkáme, že „součástka klade proudu odpor“.
Každá reálná elektronická součástka nějaký odpor má, ale u nich je většinou odpor nechtěný (vzniká nedokonalými výrobními procesy, opotřebením, …). Naopak je tomu u rezistoru, u kterého přesně známe jeho odpor, který je neměnný a také žádoucí. Používáme ho například při zapojení LED diody, aby nedošlo k jejímu poškození příliš velkým proudem.
Ve většině případů si vystačíme s rezistory, jejichž odpor se nemění. Co ale dělat v případě, kdy bychom potřebovali jejich odpor měnit na základně nějakého vstupu? S jedním proměnným rezistorem jsme se už setkali – bylo to ve článku o potenciometru. U něj jsme měnili odpor otáčením středové osy. Existují ale součástky, které mění svůj odpor na základě jiných podnětů – například teploty, nebo osvětlení.
Fotorezistor
Fotorezistor je součástka, která mění svůj odpor podle toho, jak intenzivní záření na ní dopadá. Jeho princip si představíme velice zjednodušeně – použijeme k tomu mravence.
Existuje druh mravenců, který umí stavět mosty. Nejsou to ale mosty ledajaké – mravenci je staví z vlastních těl. Když narazí na nějaký příkop, první mravenci se přichytí za okraj, na ně se chytí další, na ně další a tak dále, dokud příkop nepřekonají. Pokud jich je dostatek, příkop překonají, a můžou se tak dostat dále. Pokud jich je málo, překážku nepřekonají. Čím více jich je, tím pevnější a delší mosty můžou stavět.
Vraťme se nyní k fotorezistoru. Představme si elektrony jako mravence a fotorezistor jako příkop. Elektrický proud není nic jiného, než pohyb elektronů – mravenců. Pokud fotorezistor není osvětlený, pohybuje se v jeho okolí velice málo mravenců, kteří nejsou schopní most postavit, popřípadě postaví jen velice tenký most, po kterém přejde jen pár mravenců najednou. Situace se mění, když na fotorezistor zasvítíme – z látky, ze které je vyroben, se začnou uvolňovat volné elektrony (mravenci), kteří pak mohou stavět větší a robustnější mosty, po kterých se mohou začít hrnout davy mravenců. Pokud opět na fotorezistor přestaneme svítit, mravenci se z mostu vrátí na svá původní místa a most tak postupně zaniká.
Na této jednoduché ukázce můžeme vidět, jak spolu souvisí intenzita osvícení fotorezistoru a odpor, který tato součástka proudu klade
Čím více fotorezistor osvítíme, tím více se uvolní elektronů a tím menší odpor nakonec klade.
Fotorezistor na TinyLab
Na desce TinyLab nalezneme fotorezistor v pravém dolním rohu, hned vedle potenciometru. Součástka je označená nápisem PHOTORESISTOR a je připojená na analogový pin A2. Abychom měli k fotorezistoru přístup, musíme si přepnout přepínač u pinu A2 do pozice ON.
Měření analogových hodnot
Na Arduinu obecně (tedy i na TinyLabu) slouží k měření analogových hodnot funkce analogRead(). Ta má jeden parametr, a to pin, na kterém chceme hodnotu měřit. Funkce vrací naměřenou hodnotu, která může být v rozsahu 0 až 1023. Jednoduchý program, který nám bude posílat naměřené hodnoty na fotorezistoru, může vypadat třeba takto:
void setup() { Serial.begin(9600); } void loop() { int mereni = analogRead(A2); Serial.println(mereni); delay(1000); }
Když nyní budeme fotorezistor zakrývat a odkrývat, měla by se hodnota na sériové lince měnit – 0 značí maximální intenzitu světla, 1023 absolutní tmu. Krajních hodnot ale nemusíme dosáhnout, závisí to i na vnitřním zapojení součástek na desce.
Změna tónu podle osvětlení
Pojďme si vytvořit jednoduchý hudební nástroj, který bude hrát tu frekvenci, jaká je zrovna naměřená hodnota na fotorezistoru. Pokud si nevzpomínáte, jak se dá s TinyLab tvořit hudba, přečtěte si článek o piezo bzučáku. Bzučák je připojený na A1, takže nesmíme zapomenout přepnout jeho přepínač do polohy ON.
void setup() {} void loop() { int mereni = analogRead(A2); tone(A1, mereni); }
Výsledný zvuk je jako ze špatného sci-fi, ale základní myšlenka je myslím jasná. Nyní nastal čas na vaše experimenty. Zkuste tento příklad libovolně upravit, nebo například vytovřte program, který bude měnit rychlost blikání LED podle osvětlení, přehrávat různé melodie v závislosti na osvětlení a další. Podělte se se svými nápady v komentářích.