VHODNE ENOTE

Digitalni vhod sprejema dva osnovna logična nivoja: LOW (nizki napetostni potencial) in HIGH (visoki napetostni potencial). Logični nivo LOW ustreza podatku logične ničke in HIGH predstavlja logično enico. Pri napajalni napetosti $V_{CC}=5\ \mathrm{V}$ sta ta dva nivoja pogosto v območju:

  • Napetostni nivo LOW: $V_{IL,\max} = 0.3\,V_{CC} = 0.3 \cdot 5 = 1.5\ \mathrm{V}$,
  • Napetostni nivo HIGH: $V_{IH,\min} = 0.6\,V_{CC} = 0.6 \cdot 5 = 3.0\ \mathrm{V}$.

V praksi to pomeni, da so razponi za logične ravni naslednji: $0\ \mathrm{V} \le V \le 1.5\ \mathrm{V}$ interpretirani kot LOW, in $3.0\ \mathrm{V} \le V \le 5\ \mathrm{V}$ interpretirani kot HIGH. Te meje so opredeljene v podatkovnem listu ATmega328P in so temelj za pravilno branje stanja vhodnih pinov [@ATmega328P_Datasheet_2016].

Branje digitalnega vhoda

Za branje digitalnega vhoda lahko v razvojnem okolju Arduino IDE uporabimo funkcijo digitalRead(). Funkcija vrne vrednost HIGH ali LOW, pri čemer je stanje odvisno od napetosti na vhodnem pinu.

Uporaba upora proti napajanju

Kadar je vhodni pin nastavljen kot vhod, lahko aktiviramo notranji pull-up upor, s čimer preprečimo nestabilnost zaradi “floating” ravni. To izvedemo z zapisom PORTx = 1 pri DDRx = 0. To omogoča stabilen signal brez dodatnih zunanjih komponent, kar je uporabno pri stikalu ali gumbih, ki so povezani na Vcc ali na tla. (Dodatne podrobnosti so navedene v datasheetu in v Arduino referenci [@ATmega328P_Datasheet_2016; @ArduinoUnoRev3_Reference_2014].)

Elastične lastnosti preklopnih elementov

Napredna opomba o stikalu: pri mehanskih stikalih je treba upoštevati pojav odbijanja kontaktov, ki lahko povzroči več ločenih preklopov v kratkem času. Ta pojav je običajno naslovljen s tehnikami “debouncing” (softversko ali strojno), da se pravilno interpretira en sam preklop. Upoštevati ga je pri načrtovanju vhodnih enot in programske logike [@ATmega328P_Datasheet_2016].