www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Tipka

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
fbifbi
Član
Član



Pridružen-a: Pon 05 Jul 2004 12:17
Prispevkov: 129
Aktiv.: 0.54
Kraj: ljubljana

PrispevekObjavljeno: Pon Apr 24, 2006 11:05 pm    Naslov sporočila:  Tipka Odgovori s citatom

Sem začetnik pri programiranju in sicer 2051 v Bascom-u.
Problem je, da nevem kako z eno tipko kontrolirati več funkcij.
Drugače povedano imam tipko s katero bi spreminjal satnje spremenljivke.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
Domenius
Član
Član



Pridružen-a: Sre 30 Nov 2005 14:15
Prispevkov: 1188
Aktiv.: 5.02
Kraj: Medvode

PrispevekObjavljeno: Pon Apr 24, 2006 11:39 pm    Naslov sporočila:   Odgovori s citatom

Če bi rad spremenil spremenljivko a za 1+, se mora ob pritisku tipke izvršiti ukaz a = a + 1. Če ne želiš, da je a > 10, to preveri z if stavkom - če je resničen, postavi a na 0 - recimo, in potem se zgodba ponovi - tukaj v bistvu ne rabiš dveh tipk, ene za zmanjševanje, druge pa za povečevanje. Če pa bi rad ob različnih vrednostih a-ja dostopal do različnih funkciji oz. podprogramov pa uporabi Select Case - o tem ukazu si malo preberi Bascom Help - imaš tudi podkrepljeno s primerom.
_________________
It's electric!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.71
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Tor Apr 25, 2006 8:55 am    Naslov sporočila:   Odgovori s citatom

Verjetno potrebuješ nekakšen menu. Ena moznost je LCD display, druga možnost je nekaj LED diod. Ko sveti neka dioda, se ob pritisku na tipko izvede določena procedura ali funkcija....

Jur
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
fbifbi
Član
Član



Pridružen-a: Pon 05 Jul 2004 12:17
Prispevkov: 129
Aktiv.: 0.54
Kraj: ljubljana

PrispevekObjavljeno: Tor Apr 25, 2006 9:30 am    Naslov sporočila:   Odgovori s citatom

V mislih imam nastavitve utripanja in izbiro moči za kolesarsko luč. Problem je v tem da nevem kako šteti pritiske. Če je tipka vezana na eno funkcijo to ni problem samo če imam eno tipko in eno ali več funkcij nastane problem.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.71
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Tor Apr 25, 2006 9:52 am    Naslov sporočila:   Odgovori s citatom

V principu je preprosto. Ko prižgeš napravo, ima nek števec vrednost nič.
Potrebuješ zanko, kjer preverjaš tipko. Če je tipka pritisnjena, povečaš stevec za eno. V zanki tudi preverjaš koliko je števec in odvisno od tega ukrepaš. Po nekaj pritiskih je potrebno resetirati števec, da se meni razsvetljave ponavlja. Primer z besedami kako bi to šlo:

Jur

začetek:
števectipke=0 //ob vklopu luč sveti minimalno

loop:
ali je kdo pritisnil na tipko? če je, povečamo stevectipke za eno //preverjanje tipke in debounce

če je stevectipke 0 , luč(25%) //regulacija luči na minimumu
če je stevectipke 1 , luč(50%) //regulacija luči na polovici
če je stevectipke 2 , luč(75%) //regulacija luči na pol
če je stevectipke 3 , luč(100%) //regulacija luči na polno
če je stevectipke 4 , luč(25%) //regulacija luči na minimum
Če je števectipke enak štiri, ga damo na nulo //ponavljanje menuja

goto loop //ponavljamo dokler je naprava vključena
end
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
fbifbi
Član
Član



Pridružen-a: Pon 05 Jul 2004 12:17
Prispevkov: 129
Aktiv.: 0.54
Kraj: ljubljana

PrispevekObjavljeno: Tor Apr 25, 2006 8:30 pm    Naslov sporočila:   Odgovori s citatom

Sem našel neki primer samo ne dela.
Koda:
Dim P16 As Bit , P15 As Bit , Mod1 As Byte , Mux As Byte , T3 As Bit
T3 = P1.1
P16 = 1
P15 = 0
Mod1 = 2
Do

If Mod1 = 1 Then
        P1.6 = P15
End If

If Mod1 = 2 Then
       P1.6 = P16
End If

If Mod1 = 3 Then
      P1.6 = 0
End If
Gosub Tipke
Loop
Tipke:
If Mux > 2 Then
Debounce T3 , 0 , Mod2 , Sub
End If
Return
Mod2:
Incr Mod1

If Mod1 > 3 Then
   Mod1 = 1
End If
Return
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
fbifbi
Član
Član



Pridružen-a: Pon 05 Jul 2004 12:17
Prispevkov: 129
Aktiv.: 0.54
Kraj: ljubljana

PrispevekObjavljeno: Tor Apr 25, 2006 9:26 pm    Naslov sporočila:   Odgovori s citatom

Zdej (vsaj v simulatorju) del... Ampak samo za eno tipko. Kako nastaviti še en dodten števec?
To pa je trentuna koda:
Koda:
Dim A As Byte , D As Byte
Reset P1.2
Reset P1.3
Reset P1.4
Reset P1.6
Config Timer0 = Counter , Mode = 1 , Gate = Internal

Counter0 = 0


Do
D = Counter0
A = D + 1
If P1.6 = 1 Then
Counter0 = A
End If
Gosub Mod1
If D = 3 Then
Counter0 = 0
Else
End If
Loop
Mod1:
If D = 1 Then
Gosub H
Else
If D = 2 Then
Gosub J
Else
If D = 3 Then
Gosub K
Else
End If
End If
End If
Return
H:
Set P1.2
Return
J:
Set P1.3
Return
K:
Set P1.4
Return

Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
Domenius
Član
Član



Pridružen-a: Sre 30 Nov 2005 14:15
Prispevkov: 1188
Aktiv.: 5.02
Kraj: Medvode

PrispevekObjavljeno: Tor Apr 25, 2006 11:26 pm    Naslov sporočila:   Odgovori s citatom

Malo sem preuredil tvoj program in dodal še eno spremenljivko - tipko, (B). Mogoče so kje kakšne napake, ker sem ga na pamet napisal direktno v sporočilo. Ker si začetnik v programiranju ti svetujem, da pri programih, ki jih napišeš spremljaš spremenljivke v simulatorju - s tem se boš dosti naučil.
Koda:

Dim A As Bit, B As Bit

Reset P1.2
Reset P1.3
Reset P1.4
Reset P1.6

Reset P1.5

A = 0
B = 0

Do
   Debounce P1.6 , 1 , A_podprogram , Sub
   Debounce P1.5 , 1 , B_podprogram , Sub
Loop

A_podprogram:
A = A + 1

Select Case A

  Case A = 1: Gosub H
  Case A = 2: Gosub J
  Case A = 3: Gosub K

 Case Else : A = 0

End Select
Return


B_podprogram:
B = B +1
Return

H:
Set P1.2
Return

J:
Set P1.3
Return

K:
Set P1.4
Return

_________________
It's electric!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
fbifbi
Član
Član



Pridružen-a: Pon 05 Jul 2004 12:17
Prispevkov: 129
Aktiv.: 0.54
Kraj: ljubljana

PrispevekObjavljeno: Sre Apr 26, 2006 4:38 pm    Naslov sporočila:   Odgovori s citatom

Koda:
A = A + 1

Ta operacija in tista B = B +1 napiše:
Citiram:
illegal mathematical operation


Vseeno hvala za odgovor sem to napako odpravil.[/b]
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
Domenius
Član
Član



Pridružen-a: Sre 30 Nov 2005 14:15
Prispevkov: 1188
Aktiv.: 5.02
Kraj: Medvode

PrispevekObjavljeno: Sre Apr 26, 2006 5:45 pm    Naslov sporočila:   Odgovori s citatom

Ups, na začetku bi moral definirati A in B kot bajt - Dim A As Byte, B As Byte.
_________________
It's electric!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
clownfish
Član
Član



Pridružen-a: Pet 05 Avg 2005 13:05
Prispevkov: 765
Aktiv.: 3.23
Kraj: Povir / Ljubljana

PrispevekObjavljeno: Čet Apr 27, 2006 7:31 am    Naslov sporočila:   Odgovori s citatom

Sam imam prav tako eno tipko ki ima več funkcij..

Naredil sem interupt, ki zazna kdaj je tipka pritisnjena in potem šteje čas dokler se tipka ne sprosti. Ko se tipka sprosti javi v eni(int) sprejemljivki čas v 1/200sekunde, drug bit pa da znak, da je bila tipka prebrana.

Nato v main programu čekiram tale bit in ko je dvignjen vem, da je bila tipka pritsinjena in spuščena in v main-u obdelam čas tipke.
- Če je čas tipke < neke vrednosti gre verjetno za napako branja
- Če je čas tipke manjši od t1 in večji od t2 potem naredim eno funkcijo
- Če je čas tipke manjši od t3 in večji od t4 potem naredim eno funkcijo
- in tako naprej...

Je pa problem ker z eno tipko težko realiziraš toliko funkcij..

Sicer pa si kot odličen primer lahko pogledaš ročno uro..

Z istim interuptnim programom lahko tako kontroliraš več tipk in seveda izključiš "debounche" torej že v interuptu lahko filtiraš pritiske tipke kjer je čas manjši od nekega..

Tako nekako..
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 491 dni


Powered by phpBB © 2001, 2005 phpBB Group