2. Analogisen sensorin asennus

Digitaalisen ja analogisen pinnin ero

Arduino Unossa näkyy sekä digitaalisia että analogisia pinnejä, eli paikkoja joihin voi kytkeä komponentteja. Mutta kumpaan kytken ledin? Entä servomoottorin? Miten on valosensorin laita? Mitä eroa siis on digitaalisella ja analogisella?


Arduinon pinnit antavat ulos sähkövirtaa, mutta myös lukevat sisälle sensorin lähettämää dataa. Kyse on siitä, millaista tietoa laite Arduinolle lähettää - onko tieto digitaalista vai analogista.

Digitaalinen tieto on lähtökohtaisesti joko 1 tai 0, eli päällä tai pois päältä. Ledvalo on joko päällä tai pois päältä.

Analoginen taas sisältää erilaisia arvoja. Esimerkiksi valosensori havaitsee valon määrää. Lukuna huonevalo voisi olla vaikka 160 välillä (riippuen varjoista ja valonmäärästä). Jos varjostat valosensoria, sen ulos tuottama luku muuttuu pienemmäksi. Luku nolla tarkoittaa täysin pimeää. Luvut siis vaihtelevat. Yksinkertainen vertaus analogiseen on stereovahvistin. Voit säätää äänenvoimakkuutta haluamallesi tasolle portaattomasti. Jos stereovahvistimessa olisi digitaalinen säätö, äänenvoimakkuus olisi joko nolla (pois päältä) tai yksi (täysillä).

Päättelytehtävä, digitaalinen vai analoginen?

Kirjaudu sisään lähettääksesi tämän lomakkeen

Kuvittele tilanne, jossa menet kauppaan. Kaupan liukuovi aukeaa automaattisesti, koska siinä on ylhäällä liikkeentunnistus sensori. Onko sensori digitaalinen vai analoginen?

Vihje. Digitaalinen sanoo kyllä tai ei, analoginen sanoo useita erilaisia arvoja.


Kirjaudu sisään lähettääksesi tämän lomakkeen

Jos, sitten (If, Else)

TEHTÄVÄ: Kytke kaksi LED:iä pinneihin 11 ja 13.
Jos et muista miten, käy katsomassa osiosta 1. Perusasiat (aukeaa uuteen ikkunaan)


Tavoite: Kun valomäärä on tietyllä tasolla, palaa toinen LED. Jos valonmäärä vähenee, tämä LED sammuu ja toinen LED syttyy. Valonmäärää vähennetään varjostamalla kädellä sensoria. Toisaalta jos valonmäärä taas lisääntyy, tapahtuu päinvastoin. Ledit ilmaisevat onko hämärää vai valoisaa.

TEHTÄVÄ: Kytke valosensori kuvan mukaisesti.
Valosensorin kytkentäkaavio:


TEHTÄVÄ: Tee ohjelma kuvien mukaisesti, lue myös tekstit.

Tarvittavat ohjelmapalikat:
CONTROL” valikosta: When cliked, Forever, If-Else
ARDUINO” valikosta: Set digital pin...

Yllä olen tehnyt asetukset, jossa digitaalipinni 11 menee pois päältä ja pinni 13 menee päälle, mutta ehto eli Jos -lauseke puuttuu vielä. Asetuksena toisaalta on jo, että muussa tapauksessa ledit toimivat päinvastoin. Forever loop on jo valmiina.




Ohjelman pitää pyöriä ikuisesti (forever), koska sensorin tulee tehdä havaintoja valosta jatkuvasti. Niinpä tiputin muut sen sisälle. "When clicked", eli kun klikkaan siitä hiirellä, ohjelma käynnistyy. Seuraavaksi pohditaan "jos lausekkeen" tekemistä.




Tarvittava ohjelmapalikka:
OPERATORS” valikosta ”Suurempi kuin”
- Huomaa palikoiden värikoodaus

Haluan lausekkeen tällaiseksi: jos (if) valonmäärä on tarpeeksi vähäinen (eli on hämärää), sammuta pin 11 led ja sytytä 13 led. Muussa tapauksessa (else) sytätä pin 11 led ja sammuta pin 13. Valosensori on analoginen, eli mittaa valonmäärää. Niinpä kaivoin Operators valikosta "pienempi kuin" palikan. Seuraavaksi pitää selvittää sopiva luku, jota vähäisempi valonmäärä on mielestäni hämärää tai pimeää.




Tarvittava ohjelmapalikka:
ARDUINO” valikosta ”Analog reading”

Tiputin "pienempi kuin" palikan "if" sisälle. Ohjelmalle pitää tietysti kertoa paikka, mistä valosensorin tietoa tulee. Valosensorihan oli kytketty analogiseen pinniin A0. Niinpä valitsen alasvetopalkista 0.



Tämäpä onkin näppärää: kun klikkaan Analog readin palkista, se näyttää sensorin dataa. Voin varjostaa kädellä sensoria, klikkailla palkkia ja huomata, että luku muuttuu. Mielestäni luku 90 voisi olla sopiva, eli jos sensorin antama luku on alle 90, niin tulkitaan tämä hämäräksi / pimeäksi. TESTAA SINULLE SOPIVA LUKU!




Raahasin ja tiputin tuon "analog reading" tuonne "pienempi kuin" palkin sisälle. Eli nyt sensori lähettää siihen lukua, joka normaalissa valaistuksessa näyttäisi olevan noin 120. Jos sensorin data laskee alle 90, if lauseke astuu voimaan ja ledit reagoivat. Jos valaistus kirkastuu, else lauseke tulee voimaan.

Käynnistä ohjelma, muokkaa sensorin luku sopivaksi testaamalla.

Jos jotain meni pieleen, tässä vielä kytkentäkaavio. Olethan jo hoksannut sen, että voit kytkeä ihan oikein, vaikka kytkentäsi ei näytä juuri tältä? Voit esimerkiksi jakaa komponenteille yhteisen GND:n :)



PALAA TÄSTÄ ALOITUSSIVULLE!