Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

SIMULATOR MENJALNIKA
Pojdi na stran 1, 2, 3, 4  Naslednja
 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Za začetnike
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
jurcman90
Mojster


Pridružen/-a: Pet Dec 2012 16:34
Prispevkov: 27
Kraj: Stahovica

PrispevekObjavljeno: Pon Jan 21, 2013 1:31 pm    Naslov sporočila: SIMULATOR MENJALNIKA Odgovori s citatom

Pozdravljeni,
Sm šele začetnik v programeranju zato bi vas prosil za nasvet.
Namrec rad bi izdelal program za zaznavanje polozaja menjalnika 5prestav +vzvratno in ler. Sepravi 7tipk ki bi dajale signal tipkovnici visja prestava na tipko up pa nizja na tipko down. Zacelo naj bi z lerom izvn prestave nato prva itd... Glavni problem je sprogramirat da vedno cip ve v keri prestavi je in ce dam iz prve recimo v peto cip posle signal na tipko up 5x ce pa nato v rikverc pa 5x na tipko down.

lp.Pavlic

_________________
LP.Pavlic
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jure
Urednik


Pridružen/-a: Pon Jan 2004 12:51
Prispevkov: 2058
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jan 21, 2013 2:46 pm    Naslov sporočila: Odgovori s citatom

Pavlic,

lažje boš naredil tako, da boš pri vsaki "prestavi" imel mikrostikalo in vsako mikrostikalo naj ima svoje "ime" - 1. prestava naj ima ime 1, druga 2 itd. in peta 5. Ko boš iz 1. dal v 5., bo mikrokontroler samo prebral ime prestave, ne bo mu potrebno nič prištevati ali odštevati - če veš, kaj mislim.

Če bi naredil tudi tako, kot si si zamislil, da bi vsakič, ko daš v višjo prestavo, prištel 1, ko daš v nižjo prestavo, pa odšteješ 1, se zakomplicira ravno v primeru, ki si ga navedel, ko daš iz 1. v 5. prestavo...

Mimogrede - poizkusi naslednjič pisati v kolikor toliko lepi slovenščini, ki med drugim pozna vejice, presledke, čžš-je itd.

Lp
Jure
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
jurcman90
Mojster


Pridružen/-a: Pet Dec 2012 16:34
Prispevkov: 27
Kraj: Stahovica

PrispevekObjavljeno: Tor Jan 22, 2013 8:35 pm    Naslov sporočila: Odgovori s citatom

Hvala za odgovor!

Probal sem vse mogoče kar sem našel na internetu. Ampak mi nikakor ne uspe čipu dopovedat če prestavlam v višje prestave daje signal na PD1 po stikalih prvo (PB0), drugo(PB1), tretje(PB2), četrto(PB3) lepo po vrsti in nato prestavim v nižjo prestavo naprimer tretja(PB2) da čip ne daje signal na PD1 ampak na PD2.
Če ima kdo ali ve kakšen primer, bi prosil zanjega.

_________________
LP.Pavlic
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 805
Kraj: Ljubljana

PrispevekObjavljeno: Tor Jan 22, 2013 9:20 pm    Naslov sporočila: Odgovori s citatom

Ni mi jasno, kaj pravzaprav hočeš?
Dobro, čip naj bi spremljal dogajanje in stalno beležil, v kateri prestavi je naprava. A od kod naj bi čip dobival informacije?

Imaš stikala na
Citiram:
po stikalih prvo (PB0), drugo(PB1), tretje(PB2), četrto(PB3) lepo
Ali to pomeni, da imaš za vsako prestavo svoje stikalo vezano na pine PB0 in dalje? Potem ni čipu potrebno nič računati. Čip samo pogleda na svoje pine in ve v kateri prestavi je.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
jurcman90
Mojster


Pridružen/-a: Pet Dec 2012 16:34
Prispevkov: 27
Kraj: Stahovica

PrispevekObjavljeno: Sre Jan 23, 2013 12:33 am    Naslov sporočila: Odgovori s citatom

Se opravičujem za nejasnosti!

Hočem izdelati program, ki vedno ve v kateri prestavi je menjalnik s pomočjo šestih mikro stikal. Stikala bodo postavljena na koncu hoda menjalnika. Vsaka prestava ima omejen hod in določeno postavitev in na koncu mikro stikalo. Vsako stikalo je vezano na svoj port ki je defineran kot vhod na čipu.

Čip bi bil vezan na staro usb tipkovnico. Na dve tipki, ki bi jih zvezal na dva izhoda na čipu. Njegovo delo naj bi bilo, da bi preko stikal prepoznal položaj menjalnika in dajal pravilno signal na izhodu. (Kot sinhronski menjalnik. Prestavno ročico povlečeš k sebi in prestavi v višjo prestavo, če ga odrineš pa prestavi v nižjo prestavo.)

Problem je kako čipu povedat da za vsako višjo prestavo naj pošlje signal za polovico sekunde na port D1 oziroma na določeno tipko na tipkovnici za nižjo prestavo pa na port D2 oziroma na drugo določeno tipko.

_________________
LP.Pavlic
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 805
Kraj: Ljubljana

PrispevekObjavljeno: Sre Jan 23, 2013 9:24 am    Naslov sporočila: Odgovori s citatom

Naj povzamem, da preverim, da se razumeva:

Vsaka prestava je na svojem stikalu, ki javlja mikroprocesorju, v kateri prestavi je.

In če prestaviš iz četrte v drugo, hočeš, da pošlje mikro dva polsekundna impulza na D2, če pa prestaviš navzgor, tedaj hočeš odgovarjajoče število polsekundnih impulzov na D1.

Naloga se mi zdi precej sama sebi namen, ali pa šola programiranja.

Začnimo tako:

V programu definirajmo dve spremenljivki:
stanje menjalnika in
staro stanje menjalnika pred ciklom

ciklučno beremo stanje vhodnih portov in damo vsebino v spremenljivko stanje menjalnika, pred tem pa porinemo stanjemenjalnika v novo stanje.

če sta obe stani enaki, tedaj ni reakcije
če sta stanji različni, generiramo odgovarjajče število impulzov

in nazaj v ciklični nadzor stikal.

To sem na hitro scuzal iz prstov. verjetno se da šebolj elegantno narediti nalogo.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
jurcman90
Mojster


Pridružen/-a: Pet Dec 2012 16:34
Prispevkov: 27
Kraj: Stahovica

PrispevekObjavljeno: Sob Jan 26, 2013 5:58 pm    Naslov sporočila: Odgovori s citatom

Program sm nekako spackal skupaj. Ampak to ni to če gredo prestave po vrsti deluje drugače pa ne. Kako naj napišem da lahko poljubno skačem med prestavami in da cip pravilno odreagira???

$regfile = "m32def.dat"

Config Pinb.0 = Input 'R
Portb.0 = 1
Config Pinb.1 = Input 'N
Portb.1 = 1
Config Pinb.2 = Input '1
Portb.2 = 1
Config Pinb.3 = Input '2
Portb.3 = 1
Config Pinb.4 = Input '3
Portb.4 = 1
Config Pinb.5 = Input '4
Portb.5 = 1
Config Pinb.6 = Input '5
Portb.5 = 1
Config Pinb.7 = Input '6
Portb.5 = 1

Config Portc.0 = Output
Portc.0 = 1
Config Portc.1 = Output
Portc.1 = 1


'zacetek
Do
Loop Until Pinb.1 = 0 'N
Rotate Portc , Right
Portc.1 = 0
Waitms 100
Portc.1 = 1
Do
Loop Until Pinb.2 = 0 '1
Rotate Portc , Left
Portc.1 = 0
Waitms 100
Portc.1 = 1
Do
Loop Until Pinb.3 = 0 '2
Rotate Portc , Right
Portc.1 = 0
Waitms 100
Portc.1 = 1
Do
Loop Until Pinb.4 = 0 '3
Rotate Portc , Left
Portc.1 = 0
Waitms 100
Portc.1 = 1
Do
Loop Until Pinb.5 = 0 '4
Rotate Portc , Right
Portc.1 = 0
Waitms 100
Portc.1 = 1
Do
Loop Until Pinb.6 = 0 '5
Rotate Portc , Left
Portc.1 = 0
Waitms 100
Portc.1 = 1
Do
Loop Until Pinb.7 = 0 '6
Rotate Portc , Right
Portc.1 = 0
Waitms 100
Portc.1 = 1




Do
Loop Until Pinb.6 = 0 '5
Rotate Portc , Left
Portc.0 = 0
Waitms 100
Portc.0 = 1
Do
Loop Until Pinb.5 = 0 '4
Rotate Portc , Right
Portc.0 = 0
Waitms 100
Portc.0 = 1
Do
Loop Until Pinb.4 = 0 '3
Rotate Portc , Left
Portc.0 = 0
Waitms 100
Portc.0 = 1
Do
Loop Until Pinb.3 = 0 '2
Rotate Portc , Right
Portc.0 = 0
Waitms 100
Portc.0 = 1
Do
Loop Until Pinb.2 = 0 '1
Rotate Portc , Left
Portc.0 = 0
Waitms 100
Portc.0 = 1
Do
Loop Until Pinb.1 = 0 'N
Rotate Portc , Right
Portc.0 = 0
Waitms 100
Portc.0 = 1
Do
Loop Until Pinb.0 = 0 'R
Rotate Portc , Left
Portc.0 = 0
Waitms 100
Portc.0 = 1
Return 'program gre na zacetek
Do
Loop

_________________
LP.Pavlic
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 555
Kraj: Ljubljana

PrispevekObjavljeno: Ned Jan 27, 2013 4:57 pm    Naslov sporočila: Odgovori s citatom

Bom poskusil malo pomagat.
Če cel portb imaš kot vhod in istočasno gleaš samo eno stikalo je enostavno:

config Portb=input 'postaviš vse pine portb kot vhode
portb=255 'vklopiš pull up upore
config portc=output
portc=255
do
menjalnik =pinb
select case menjalnik
case 254:portc=254'vklopi želeno LED vrednost pinb ko je sklenjeno stikalo na pinb.0 je &B11111110 če priklopiš ledice med + in portc bo svetila led na PC.0
case 253 :portc=253' vklopi želeno LED &B11111101
. . .
itn
End Select
Loop

Napiši kateri procesor uporabljaš.
LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
jurcman90
Mojster


Pridružen/-a: Pet Dec 2012 16:34
Prispevkov: 27
Kraj: Stahovica

PrispevekObjavljeno: Ned Jan 27, 2013 6:33 pm    Naslov sporočila: Odgovori s citatom

Uporabljam Atmega32
_________________
LP.Pavlic
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Ned Jan 27, 2013 10:35 pm    Naslov sporočila: Odgovori s citatom

Pozdravljeni,
predvidevam da imaš namen vse to zmontirati v avtomobil.
Vrjetno ne boš imel 7. LED-diod v vrsti da bi vedel katera prestava je. Uparabi kakšen 7. segmentni LED displej ali pa kakšen http://trgovina.svet-el.si/productdetail.php?prodid=15300 2X8 LED zaslonček, kjer ti lahko tudi izpisuje prestava 1, prestava 2,.....

Jaz bi vgradil 6. mikro stikal. Vsak mikro stikalo ima svojo prestavo. Vedno bo samo eno stikalo sklenjeno. Torej daš 6. stikal kot vhode, za ler ne rabiš. Če ni nobeno stikalo sklenjeno ti zazna kot "ler" prosti tek. Na izhod daš lahko LED-diode, 7. segmentni displej ali pa LCD.

Program lahko bolj enostavno narediš, kot si ga opisal.
Osnovo ti je že povedal Jure.
To bom na pamet pisal, torej v programu ne bo delovalo.
Primer če bi imel na izhodu 6 LED-diod.

Config porta=input
config portb=output

do
if pina.0=1 then
portb.0=1
else
portb.0=0
end if
...... še za ostale prestave
loop

To je na grobo napisano. Približno tako bi lahko šlo.
Aja, za stikala uporabli Debounce ukaz.

Upam da sem ti kaj pomagal. Drugače imaš že kar nekaj napisano na forumu. Malo pobrskaj. Imaš tudi veliko literature na Svet elektronike, kar ti lahko pride zelo prav kot začetniku.

LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
jurcman90
Mojster


Pridružen/-a: Pet Dec 2012 16:34
Prispevkov: 27
Kraj: Stahovica

PrispevekObjavljeno: Pon Jan 28, 2013 9:37 pm    Naslov sporočila: Odgovori s citatom

V dirkalnik bom zvezal kasneje prvo ga treba poštimat nato pa bom z 7segmentnim led displayom prikazoval prestave obeh mašin! Prvo bi pa rad za bratca naredil pc simulator!

Hvala vsem za pomoč in upam da mi bo uspelo. Cene se pa ponovno javim na forumu.

_________________
LP.Pavlic
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Pon Jan 28, 2013 10:42 pm    Naslov sporočila: Odgovori s citatom

Saj zato smo, več glav več ve Wink
Kaj pomenijo klicaji na koncu tvojih stavkov?

LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Sre Jan 30, 2013 9:40 pm    Naslov sporočila: Odgovori s citatom

Pozdravljeni,
Ni mi dalo miru, zato sem se lotil zadeve. Vse je lepo potekalo dokler nisem dodal 2,3,4, in 5 tipko.

Koda za eno tipko, ki deluje lepo. Vidi se na posnetku, ki je priložen.

Koda:
$regfile = "m32def.dat"
$crystal = 8000000
Config Portc = Input
Dim Pind.0 As Bit
Dim Pind.1 As Bit
Dim Pind.2 As Bit
Dim Pind.3 As Bit
Dim Pind.4 As Bit
Portc = 255

Config Lcd = 20 * 4
Config Lcdbus = 4
Config Lcdpin = Pin , Db7 = Portd.7 , Db6 = Portd.6 , Db5 = Portd.5 , Db4 = Portd.4 , E = Portd.2 , Rs = Portd.1


Config Debounce = 25
Cursor Off Noblink
Cls




Do
 Debounce Pinc.0 , 0 , Ukaz , Sub
 Debounce Pinc.0 , 1 , Ukaz1 , Sub
  'Debounce Pinc.1 , 0 , Ukaz2 , Sub
  'Debounce Pinc.1 , 1 , Ukaz3 , Sub
    'Debounce Pinc.2 , 0 , Ukaz4 , Sub
    'Debounce Pinc.2 , 1 , Ukaz5 , Sub
      'Debounce Pinc.3 , 0 , Ukaz6 , Sub
      'Debounce Pinc.3 , 1 , Ukaz7 , Sub
        'Debounce Pinc.4 , 0 , Ukaz8 , Sub
        'Debounce Pinc.4 , 1 , Ukaz9 , Sub
Loop
 End

Ukaz:
 Cls
  Locate 2 , 1
  Lcd "1. prestava"
Return

Ukaz1:
 Cls
  Locate 1 , 1
  Lcd "N-ler"
Return

'Ukaz2:
 Cls
  Locate 2 , 1
  Lcd "2. prestava"
Return

'Ukaz3:
 Cls
  Locate 1 , 1
  Lcd "N-ler"
Return

'Ukaz4:
 Cls
  Locate 2 , 1
  Lcd "3. prestava"
Return

'Ukaz5:
 Cls
  Locate 1 , 1
  Lcd "N-ler"
Return

'Ukaz6:
 Cls
  Locate 2 , 1
  Lcd "4. prestava"
Return

'Ukaz7:
 Cls
  Locate 1 , 1
  Lcd "N.ler"
Return

'Ukaz8:
 Cls
  Locate 2 , 1
  Lcd "5. prestava"
Return

'Ukaz9:
 Cls
  Locate 1 , 1
  Lcd "N-ler"
Return


Potem sem dodal program za dve tipki. Vse se vidi na posnetku.
To je koda za vseh pet tipk.

Koda:
$regfile = "m32def.dat"
$crystal = 8000000
Config Portc = Input
Dim Pind.0 As Bit
Dim Pind.1 As Bit
Dim Pind.2 As Bit
Dim Pind.3 As Bit
Dim Pind.4 As Bit
Portc = 255

Config Lcd = 20 * 4
Config Lcdbus = 4
Config Lcdpin = Pin , Db7 = Portd.7 , Db6 = Portd.6 , Db5 = Portd.5 , Db4 = Portd.4 , E = Portd.2 , Rs = Portd.1


Config Debounce = 25
Cursor Off Noblink
Cls




Do
 Debounce Pinc.0 , 0 , Ukaz , Sub
 Debounce Pinc.0 , 1 , Ukaz1 , Sub
  Debounce Pinc.1 , 0 , Ukaz2 , Sub
  Debounce Pinc.1 , 1 , Ukaz3 , Sub
    Debounce Pinc.2 , 0 , Ukaz4 , Sub
    Debounce Pinc.2 , 1 , Ukaz5 , Sub
      Debounce Pinc.3 , 0 , Ukaz6 , Sub
      Debounce Pinc.3 , 1 , Ukaz7 , Sub
        Debounce Pinc.4 , 0 , Ukaz8 , Sub
        Debounce Pinc.4 , 1 , Ukaz9 , Sub
Loop
 End

Ukaz:
 Cls
  Locate 2 , 1
  Lcd "1. prestava"
Return

Ukaz1:
 Cls
  Locate 1 , 1
  Lcd "N-ler"
Return

Ukaz2:
 Cls
  Locate 2 , 1
  Lcd "2. prestava"
Return

Ukaz3:
 Cls
  Locate 1 , 1
  Lcd "N-ler"
Return

Ukaz4:
 Cls
  Locate 2 , 1
  Lcd "3. prestava"
Return

Ukaz5:
 Cls
  Locate 1 , 1
  Lcd "N-ler"
Return

Ukaz6:
 Cls
  Locate 2 , 1
  Lcd "4. prestava"
Return

Ukaz7:
 Cls
  Locate 1 , 1
  Lcd "N-ler"
Return

Ukaz8:
 Cls
  Locate 2 , 1
  Lcd "5. prestava"
Return

Ukaz9:
 Cls
  Locate 1 , 1
  Lcd "N-ler"
Return


Vem da je problem v programu, ampak ne najdem napake. Probal sem dodati waitms v določene delov programa in ni pomagalo. Sprobal sem vse kar poznam. mogoče je ukaz debounce namenjen samo za eno tipko?

Tukaj je povezava do posnetka.
http://www.youtube.com/watch?v=ZxezzSKRKaA&feature=youtu.be

Hvala za pomoč in nasvete.

LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
stursc
Profesionalec


Pridružen/-a: Pet Feb 2005 14:50
Prispevkov: 109
Kraj: Ravne

PrispevekObjavljeno: Čet Jan 31, 2013 7:00 am    Naslov sporočila: Odgovori s citatom

Marc, tako ne more delovati !
Poskusi to.

Citiram:


[code]$regfile = "m32def.dat"
$crystal = 8000000
Config Portc = Input
Tipka1 alias pinc.0
Tipka2 alias pinc.1
Tipka3 alias pinc.2
Tipka4 alias pinc.3
Tipka5 alias pinc.4


Config Lcd = 20 * 4
Config Lcdbus = 4
Config Lcdpin = Pin , Db7 = Portd.7 , Db6 = Portd.6 , Db5 = Portd.5 , Db4 = Portd.4 , E = Portd.2 , Rs = Portd.1

Cursor Off Noblink
Cls




Do
locate 1,1
If tipka1=0 then
lcd "Prestava 1 "
elseif tipka2=0 then
lcd "Prestava 2 "
elseif tipka3=0 then
lcd "Prestava 3 "
elseif tipka4=0 then
lcd "Prestava 4 "
elseif tipka5=0 then
lcd "Prestava 5 "
else
lcd " N - ler "
end if

Loop
End




LP, stursc
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Čet Jan 31, 2013 4:33 pm    Naslov sporočila: Odgovori s citatom

Pozdravljen,
hvala za pomoč. Ampak ne deluje. Namestp L kaže prestava 3. Prestava, 1 in 2 prestava delujeta, (3,4,5 pa ne) . Ker ni cls ukazov ostajajo črke od prejšne prestave.
Če dodam cls ukaze mi začne zaslon preveč utropati....
Hm, kaj bi še lahko naredil. Še bom določene dele programa probal spremeniti.

LP
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Za začetnike Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Pojdi na stran 1, 2, 3, 4  Naslednja
Stran 1 od 4

 
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
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group