Mikrokontroleri - PIC

Autor: Milan Vukobrat, dipl. ing

 

: zorangr@eunet.yu

Taster sa dve brzine


Autor ima digitalni časovnik sa tasterima za podešavanje vremena - pritisne jednom, recimo, taster za podešavanje minuta i displej se uveća za 1 minut. Ako se taster duže drži pritisnut, minuti se ođednom počnu brzo pomerati, pa se s ovim “dvobrzinskim” tasterom vreme lako namešta.

5b141.jpg (15386 bytes)

Komandu BUTTON kod Parallax-ovog BASIC STAMP-a korisnici često zaobilaze, uglavnom zbog nesnalaženja oko njene obimne i zbunjujuće sintakse:
BUTTON pin, downstate, delay, rate, bytevariable, targetstate, address

Namenjena je za očitavanje stanja tastera, eliminaciju treperenja kontakata (debounce), auto-repeat funkciju (kao kod računarske tastature: kad pritisnete neki taster, na ekranu se pojavi karakter - ako taster i dalje držite pritisnutim, posle nekog vremena (Delay) isti karakteri će se ispisivati velikom brzinom.

Parametri ove naredbe su:

  • pin (varijabla ili konstanta koja opisuje koji pin se koristi, vrednost je od 0 do 7)

  • downstate (varijabla ili konstanta koja opisuje stanje koje treba očekivati kada taster bude pritisnut, vrednost je 0 ili 1)

  • delay (varijabla ili konstanta koja određuje koliko dugo taster mora biti pritisnut da bi proradila auto-repeat funkcija, ima vrednost 0 do 255. Za 0, ne radi ni debounce ni auto- repeat, za 255, ne radi samo auto - repeat.

  • rate (varijabla ili konstanta koja odreduje trajanje auto - repeat funkcije, i ima vrednost 0 do 255

  • bytevariable je radna varijabla za naredbu button i mora se postaviti na 0 pre prvog korišćenja naredbe Button. Kako je ova naredba predviđena za korišćenje unutar programskih petlji, ovo brisanje mora se obaviti pre ulaska u petlju

  • targetstate je varijabla ili konstanta koja određuje u kom stanju taster treba da bude da bi se iz naredbe “skakalo” na labelu address i može imati vrednost 1, što znači da je taster pritisnut ili 0, što znači da taster nije pritisnut

  • address je labela (oznaka) koja upućuje tok izvršenja programa za slučaj kada je taster u željenom stanju (targetstste)

Kao što je već napomenuto, naredbu Button treba koristiti unutar programske petlje: pri svakom prolasku kroz petlju, proverava se stanje definisanog ulaza (pin) - kada se prvi put pojavi zadati downstate, aktivira se debounce. Po isteku tog intervala, gleda se parametar targetstate - tako se bira skok na labelu ako je taster pritisnut , ili skok ako nije pritisnut.

5b142.jpg (25856 bytes)

Primer koji će očigledno ilustrovati gornje izlaganje dat je u Listingu. Pin 0 Basic Stampa treba vezati na LED preko rednog otpornika 1k prema masi, a Pin 1 preko otpornika 4k7 na +Vcc i tasterom prema masi.
Opis primenjene naredbe Button:

na Pinu 1 očekujemo downstate 0 - kad se ono desi, izvršice se delay u trajanju od 20 ciklusa (za sve to vreme taster mora biti u downstate stanju). Ako po isteku delay perioda taster bude i dalje u downstate stanju, obavljaće se auto - repeat sa periodom od 3 ciklusa, radna varijabla je Tmp0, a ako taster nije pritisnut (targetstate = 0), program “skače” na labelu Loop.
Programski to izgleda ovako: Dok taster NIJE protisnut, naredba Button se grana na labelu Loop, zato što downstate 0 nije dostignut, a pošto se grananje vrši kada taster NIJE pritisnut dolazi do grananja na labelu Loop. LED ne svetli, jer se izvršava samo naredba Debug koja na ekranu prikazuje samo stanje varijable Tmp0, koje je jednako 0.

U momentu kada se pritisne taster, downstate je postignut, pa počinje da teče Delay, što se vidi po tome da Tmp0 dobija vrednost 20. Ako držimo pritisnut taster za kratko, videćemo da se vrednost Tmp0 smanjuje - teče nam vreme predviđeno za Delay.

Listing 1.

‘BUTTON.bas
‘Kratka ilustracija naredbe
‘**************************
Symbol Tmp0 = B0
Symbol LED = 0
Loop:
   Debug Tmp0
   Button 1,0,20,3,Tmp0,0,Loop
   Pulsout LED,500
Goto Loop

Ako se taster otpusti pre nego Tmp0 padne na 1, on se opet postavi na 0 i jedina reakcija da je naredba Button očitala stanje tastera je LED koja je jednom kratko zasvetlela (izvršila se naredba Pulsout).

Ako, naprotiv, taster držimo stalno pritisnut, posle odbrojavanja Tmp0 od 20 do 1 videće se da Tmp0 počinje da odbrojava od 3 do 1 (počeo je auto - repeat) i LED učestalo treperi. Eto, dakle, mogućnosti za “sporo” i “brzo” nameštanje parametara u vašoj aplikaciji, a sve to samo sa jednim tasterom.

Pročitajte više o ovoj temi
Basic stamp 
Više tastera jednom linijom 
Samogradnja Basic Stamp modula 
PWM 
Pisanje programa u Basic Stampu 
Eksperimentalna pločica 

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji