Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
jurcman90 Mojster
Pridružen/-a: Pet Dec 2012 16:34 Prispevkov: 27 Kraj: Stahovica
|
Objavljeno: Čet Nov 21, 2013 11:19 pm Naslov sporočila: Ponovno prebujam temo |
|
|
Ponovno prebujam temo simulator menjalnika. Izdelal sem si elektroniko vso mehaniko potrebujem pa samo program, ki pravilno deluje vse deluje super ustavi pa se, ko želim ob pritisku določenih tipk hkrati izpisati položaj menjalnika na LCDju in prižgati določeno Ledico na portuc. Prvo sem poskusil obratno ugašati jih za 0.5 sekunde a deluje samo na stikalih1 in 2 na ostalih pa ne. Rad bi pa da neglede koliko časa držim tipko gorti Ledica samo o.5 sek.
Zahvaljujem se vam že v naprej za pomoč. Prosim ne izgubite spet zivcov nad mano
program;
Do
Portb = &B11111111
Locate 2 , 1
If Stikalo5 = 0 Then
Lcd " VZVRATNO "
Portc.6 = 0
Waitms 500
Portc.6 = 1
Elseif Stikalo3 = 0 And Stikalo1 = 0 Then
Lcd " 1 PRESTAVA "
Portc.1 = 0
Waitms 500
Portc.1 = 1
Elseif Stikalo4 = 0 And Stikalo1 = 0 Then
Lcd " 5 PRESTAVA "
Portc.5 = 0
Waitms 500
Portc.5 = 1
Elseif Stikalo3 = 0 And Stikalo2 = 0 Then
Lcd " 2 PRESTAVA "
Portc.2 = 0
Waitms 500
Portc.2 = 1
Elseif Stikalo4 = 0 And Stikalo2 = 0 Then
Lcd " 6 PRESTAVA "
Portc.6 = 0
Waitms 500
Portc.6 = 1
Elseif Stikalo1 = 0 Then
Lcd " 3 PRESTAVA "
Portc.3 = 0
Waitms 500
Portc.3 = 1
Elseif Stikalo2 = 0 Then
Lcd " 4 PRESTAVA "
Portc.4 = 0
Waitms 500
Portc.4 = 1
Else
Lcd " OUT OF GEAR "
Portc.5 = 0
Waitms 500
Portc.5 = 1
End If
Loop _________________ LP.Pavlic |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Pet Nov 22, 2013 10:54 am Naslov sporočila: |
|
|
Na začetek programa dodaj tole:
Config PortC=Output
AVR-ju je potrebno definirati, ali so pini vhodni ali izhodni.
Lp
Jure |
|
Nazaj na vrh |
|
|
jurcman90 Mojster
Pridružen/-a: Pet Dec 2012 16:34 Prispevkov: 27 Kraj: Stahovica
|
Objavljeno: Pet Nov 22, 2013 11:24 am Naslov sporočila: |
|
|
Hvala
Naredil sem napako pri config port in ugotovil da mi cip na portihC strajka na Bdeluje. Prosil bi se kako naj popravim da ledica samo enkrat utripne neglede na dolžino pritisnjene tipke. Sem podalšal čaš in se mi celotni reakciski čas program in zagon zelo upočasni. _________________ LP.Pavlic |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Pet Nov 22, 2013 3:27 pm Naslov sporočila: |
|
|
jurcman90 je napisal/a: | Hvala
Prosil bi se kako naj popravim da ledica samo enkrat utripne neglede na dolžino pritisnjene tipke. Sem podalšal čaš in se mi celotni reakciski čas program in zagon zelo upočasni. |
Dodaj novo spremenljivko:
Koda: |
Do
Spremenljivka=0
.
.
.
If Stikalo5 = 0 Then
Lcd " VZVRATNO "
If Spremenljivka =0 then
Spremenljivka =1
Portc.6 = 0
Waitms 500
Portc.6 = 1
End if
Elseif Stikalo3 = 0 And Stikalo1 = 0 Then
.
.
.
Loop
|
Lp
Jure |
|
Nazaj na vrh |
|
|
jurcman90 Mojster
Pridružen/-a: Pet Dec 2012 16:34 Prispevkov: 27 Kraj: Stahovica
|
Objavljeno: Pet Nov 22, 2013 5:47 pm Naslov sporočila: |
|
|
Sedaj mi javlja napake (assignment error, invalid data taype, if then expevted, end if expected)
Mi lahko malo več poveste o pravilni uporabi spremenljivk.
hvala. _________________ LP.Pavlic |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Sob Nov 23, 2013 11:25 am Naslov sporočila: |
|
|
jurcman90 je napisal/a: | Sedaj mi javlja napake (assignment error, invalid data taype, if then expevted, end if expected)
Mi lahko malo več poveste o pravilni uporabi spremenljivk.
hvala. |
Ja, verjetno to pomeni, da spremenljivke nisi dimenzioniral - si jo?
Lp
Jure |
|
Nazaj na vrh |
|
|
jurcman90 Mojster
Pridružen/-a: Pet Dec 2012 16:34 Prispevkov: 27 Kraj: Stahovica
|
Objavljeno: Sob Nov 23, 2013 11:36 am Naslov sporočila: |
|
|
nisem je dimenzioniral ker nevem kako. _________________ LP.Pavlic |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Ned Nov 24, 2013 3:58 pm Naslov sporočila: |
|
|
jurcman90 je napisal/a: | nisem je dimenzioniral ker nevem kako. |
poglej v Help ukaz DIM
Lp
Jure |
|
Nazaj na vrh |
|
|
jurcman90 Mojster
Pridružen/-a: Pet Dec 2012 16:34 Prispevkov: 27 Kraj: Stahovica
|
Objavljeno: Sob Dec 28, 2013 12:02 am Naslov sporočila: |
|
|
G.Jure
Že nekaj časa gledam v helpu DIM ampak sm še bl zmešan kaj pa kako.
Prosim če ima kdo kakšno idejo kako prižgat ledico tako da samo enkrat utripne neglede na dolžino pritisnjene tipke.
If Stikalo5 = 0 Then
Lcd " VZVRATNO "
Portb.0 = 0
Waitms 200
Portb.0 = 1
End If _________________ LP.Pavlic |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Sob Dec 28, 2013 10:09 am Naslov sporočila: |
|
|
Kakšne zveze ima DIM s tvojo težavo?
Z Dim samo definiraš tip spremenljivke.
Tvoj problem lahko rešiš na ta način:
If Stikalo5 = 0 Then
Lcd " VZVRATNO "
Portb.0 = 0
Waitms 200
Portb.0 = 1
DO
LOOP UNTIL STIKALO5=1 'pocakas da se stikalo sprosti
End If
Če pa želiš da program teče naprej potem bi šlo na drugačen način, vendar tega nisi napisal.
Vlado |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Sob Dec 28, 2013 1:19 pm Naslov sporočila: |
|
|
jurcman90 je napisal/a: | G.Jure
Že nekaj časa gledam v helpu DIM ampak sm še bl zmešan kaj pa kako.
|
Glej, program mora vedeti, s katerimi spremenljivkami naj dela. Program mora tudi vedeti, kakšne vrste so spremenljivke. Spremenljivk je lahko več vrst: Bit, Byte, Word...
Tvoje spremenljivke niso definirane, zato ti program javlja napake.
V Helpu piše, kaj počne ukaz Dim, potem pa spodaj najdeš primere - recimo tole:
Ukazov Dim v tvojem programu ni, pa bi bilo prav da so, recimo:
Koda: |
Dim spremenljivka as Byte
Dim Stikalo5 as Byte
|
in tako naprej.
Ko boš to naredil za vse spremenljivke, potem bo program deloval.
Če kaj ni jasno pa enkrat pridi na Bascom tečaj, v živo je lažje obrazložit.
Lp
Jure |
|
Nazaj na vrh |
|
|
jurcman90 Mojster
Pridružen/-a: Pet Dec 2012 16:34 Prispevkov: 27 Kraj: Stahovica
|
Objavljeno: Sob Dec 28, 2013 1:23 pm Naslov sporočila: |
|
|
Z veseljem bi prišel na tečaj samo delam v Nemčiji in sm večino časa gor. Če mi bo uspelo si bom prišel u ponedeljek kvam u AXa kupit ksno fajn literaturo. _________________ LP.Pavlic |
|
Nazaj na vrh |
|
|
jurcman90 Mojster
Pridružen/-a: Pet Dec 2012 16:34 Prispevkov: 27 Kraj: Stahovica
|
Objavljeno: Ned Dec 29, 2013 2:56 pm Naslov sporočila: |
|
|
Hvala Vsem, ki ste mi pomagali.
Tukaj je celotni program ki deluje na Atmega32.
Kaksno sliko bom pa naložil kasneje.
$regfile = "m32def.dat"
Portb = &B01111111
Config Porta = Input
Locate 1 , 1
Lcd " "
Locate 2 , 1
Lcd " "
Stikalo1 Alias Pina.0
Stikalo2 Alias Pina.1
Stikalo3 Alias Pina.2
Stikalo4 Alias Pina.3
Stikalo5 Alias Pina.4
Stikalo6 Alias Pina.5
Config Porta.7 = Input
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output
Config Portb.7 = Output
Config Lcd = 16 * 2
Config Lcdbus = 4
Config Lcdpin = Pin , Db7 = Portd.7 , Db6 = Portd.6 , Db5 = Portd.5 , Db4 = Portd.4 , E = Portd.2 , Rs = Portd.1
Enable Interrupts
Cursor On Noblink
Program:
If Pina.7 = 0 Then Goto Vklop
Portb = &B01111111
Goto Program
Vklop:
Locate 1 , 1
Lcd " SIMULATOR "
Locate 2 , 1
Lcd " MENJALNIKA "
Waitms 800
Locate 1 , 1
Lcd " SIMULATOR "
Locate 2 , 1
Lcd " IZDELAL "
Waitms 800
Locate 1 , 1
Lcd " PAVLIC JURE "
Locate 2 , 1
Lcd " 20.11.2013 "
Wait 1
Locate 1 , 1
Lcd " SIMULATOR "
Locate 2 , 1
Lcd " "
Waitms 200
Locate 1 , 1
Lcd " MENJALNIKA "
Locate 2 , 1
Lcd " "
Waitms 200
Locate 2 , 1
Lcd " PRIPRAVLJEN "
Waitms 400
Cls
Do
Locate 2 , 1
If Stikalo5 = 0 Then
Lcd " VZVRATNO "
Portb.0 = 0
Waitms 200
Portb.0 = 1
Do
Loop Until Stikalo5 = 1 'pocakas da se stikalo sprosti
Elseif Stikalo3 = 0 And Stikalo1 = 0 Then
Lcd " 1 PRESTAVA "
Portb.1 = 0
Waitms 200
Portb.1 = 1
Do
Loop Until Stikalo1 = 1 'pocakas da se stikalo sprosti
Elseif Stikalo4 = 0 And Stikalo1 = 0 Then
Lcd " 5 PRESTAVA "
Portb.5 = 0
Waitms 200
Portb.5 = 1
Do
Loop Until Stikalo1 = 1 'pocakas da se stikalo sprosti
Elseif Stikalo3 = 0 And Stikalo2 = 0 Then
Lcd " 2 PRESTAVA "
Portb.2 = 0
Waitms 200
Portb.2 = 1
Do
Loop Until Stikalo2 = 1 'pocakas da se stikalo sprosti
Elseif Stikalo4 = 0 And Stikalo2 = 0 Then
Lcd " 6 PRESTAVA "
Portb.6 = 0
Waitms 200
Portb.6 = 1
Do
Loop Until Stikalo2 = 1 'pocakas da se stikalo sprosti
Elseif Stikalo1 = 0 Then
Lcd " 3 PRESTAVA "
Portb.3 = 0
Waitms 200
Portb.3 = 1
Do
Loop Until Stikalo1 = 1 'pocakas da se stikalo sprosti
Elseif Stikalo2 = 0 Then
Lcd " 4 PRESTAVA "
Portb.4 = 0
Waitms 200
Portb.4 = 1
Do
Loop Until Stikalo2 = 1 'pocakas da se stikalo sprosti
Else
Lcd " OUT OF GEAR "
Portb.7 = 1
Waitms 200
Portb.7 = 0
End If
Loop[/img] _________________ LP.Pavlic |
|
Nazaj na vrh |
|
|
jurcman90 Mojster
Pridružen/-a: Pet Dec 2012 16:34 Prispevkov: 27 Kraj: Stahovica
|
Objavljeno: Tor Dec 31, 2013 12:10 am Naslov sporočila: |
|
|
Zanima me ce mogoce kdo ve kako bi doloceno napetost (3,7v) pripeljal do cipa in z cipom krmilil izhod oz. spuscal napetost naprej. mogoce z kaksnim tranzistorjem?
Problem je program vse deluje super zatakne se mi pa ko priklopim cip na staro vezje vcasih je biv volan za pc zdaj mi pa sluzi za povezavo z pcjm in igricami. Izmeril sem napetost na vezju Mini Pin mi daje na izhodu 4,8v bivsi usb volan ma pa na stikalih 3,7v to napetost bi nekako moral spravit do cipa in z cipom prekinjat in spuscat do stikal nazaj. _________________ LP.Pavlic |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Tor Dec 31, 2013 8:59 am Naslov sporočila: |
|
|
Sicer mi ni čisto jasno, kaj bi rad, ampak mogoče kakšen ULN2003, 2803 (vsebuje 8 tranzistorjev), če rabiš večji tok. Ti čipi so različni glede na nivo proženja - oglej si datasheet.
Za manjše tokove pa lahko kakšen 4066, ki vsebuje 4 stikala. _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
|