|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Ned Jul 04, 2010 8:53 pm Naslov sporočila: RGB LED dioda |
|
|
Hi,
kot sem že omenil imam RGB LED diode.Vem da ima tri osnovne barve s katerimi lahko dobiš različne barve.Hočem dobiti različne barve ki bi jih uporabil pri projektu.
Probal sem že krmiliti z trimerjim da bi dobil različne barve pa ni šlo.Tako sem začel brskati.Na spletu sem našel da se jih krmili z PWM.Problem nastane pri programiranju.
Ker sem še začetnik v programiranju z BASCOM-AVR bi prosil če mi da kdo začetni nasvet ali na hitro obrazloži kako narediti programsko PWM regulator.
Hvala za pomoč.
Lep pozdrav Marcel. |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Ned Jul 04, 2010 9:19 pm Naslov sporočila: |
|
|
Marcel,
koda za en kanal je tukaj:
Koda: | $regfile = "m8515.dat"
$crystal = 8000000
Dim N As Byte , M As Byte
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db7 = Portc.7 , Db6 = Portc.6 , Db5 = Portc.5 , Db4 = Portc.4 , E = Portc.2 , Rs = Portc.1
Cls
Do
If Pind.0 = 0 Then
Gosub Gor
Waitms 50
End If
If Pind.1 = 0 Then
Gosub Dol
Waitms 50
End If
Pwm1a = N
Config Portd.5 = Output
Locate 1 , 1
Lcd N ; " "
Loop
End
Gor:
Incr N
Return
Dol:
Decr N
Return
|
LCD je dodan samo zato, da vidimo, kako se spreminja vrednost N, sicer ga ne potrebujemo. Kot izhod služi PORTD.5 (pri Mega8515 seveda!)
Lp
Jure |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Pon Jul 05, 2010 8:35 am Naslov sporočila: |
|
|
Hi,
Jure najlepša vam hvala za pomoč.Tekoj sem ga preizkusil in seveda dobil velik nasmešek na obraz ko je delovalo (noro!).
Samo še eno oslugo vas prosim,vrjamem da bo to za vas mačji kašelj.
Zraven kode sem že dodal opis kaj razumem,če bi mi vi ostalo lahko dopolnili da bom razumel kako deluje cel program.
Hvala vam za pomoč!!!
Koda: |
$regfile = "m8515.dat" [b]definiramo mikrokontroler[/b]
$crystal = 8000000 [b] frekvenca kristala????[/b]
Dim N As Byte , M As Byte [b]definiramo spremenljivke [/b]
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
Config Lcd = 16 * 2 [b]definiramo kateri LCD uporabljamo[/b]
Config Lcdpin = Pin , Db7 = Portc.7 , Db6 = Portc.6 , Db5 = Portc.5 , Db4 = Portc.4 , E = Portc.2 , Rs = Portc.1 [b]definiramo vhodne pine na LCD[/b]
Cls [b] počisti zaslon [/b]
Do [b]do-loop zanka
[/b]
If Pind.0 = 0 Then [b]glavna programa kjer z tipko spreminjaš frekvenco[/b]
Gosub Gor
Waitms 50
End If
If Pind.1 = 0 Then
Gosub Dol
Waitms 50
End If
Pwm1a = N
Config Portd.5 = Output[b] na katerem pinu je izhod[/b]
Locate 1 , 1 [b] lokacije kjer nam na LCD-ju izpiše podatke[/b]
Lcd N ; " "
Loop
End
Gor: [b] neke vrste pod programa[/b]
Incr N
Return
Dol:
Decr N
Return
|
Nekaj še ne razumem,
zakaj ste v programu napisali pind.0=0 in pind.1=0 .V čem je fora,imamo ja porte ne pine?
Da bi hotel da hitreje spreminja frekvenco morem samo čas spremeniti a ne?
Hvala za pomoč in za razumevanje.
Lep pozdrav Marcel. |
|
Nazaj na vrh |
|
|
Srečko Profesionalec
Pridružen/-a: Sob Jan 2005 18:38 Prispevkov: 80
|
Objavljeno: Pon Jul 05, 2010 7:01 pm Naslov sporočila: |
|
|
marc je napisal/a: |
Nekaj še ne razumem,
zakaj ste v programu napisali pind.0=0 in pind.1=0 .V čem je fora,imamo ja porte ne pine?
Lep pozdrav Marcel. |
Kolikor je meni znano so pini (pind.0) itd vhodi porti (portd.5) naprimer je pa izhod.
Lp Srečko _________________ Samouk
Tukaj sem doma |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Pon Jul 05, 2010 9:00 pm Naslov sporočila: |
|
|
hm .
če se ne motim se porti definirajo na začetku programa,če so vhodi ali izhodi.
Npr:
config porta=output ali config porta=input
vsaj do zdej sem tako delal,tisti pind.0 in 1 me je pa zmedel. .
Lep pozdrav Marcel. |
|
Nazaj na vrh |
|
|
RudiP Profesionalec
Pridružen/-a: Sre Jul 2008 8:39 Prispevkov: 128 Kraj: KOPER
|
Objavljeno: Pon Jul 05, 2010 9:40 pm Naslov sporočila: |
|
|
Malo popravljeno po moje. Za komentarje uporabljaj '
deklaracije in definicije napravi pred glavno zanko. Prijetno delo.
Koda: |
$regfile = "m8515.dat" ' [b]definiramo mikrokontroler[/b]
$crystal = 8000000 ' v Mhz [b] frekvenca kristala????[/b]
'$hwstack = 100 ' NASTAVI SI STEKE !!!!
'$swstack = 75
'$framesize = 40
Dim N As Byte , M As Byte ' [b]definiramo spremenljivke [/b]
Config Portd.5 = Output
Config Portd.0 = Input
Config Portd.1 = Input
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
Config Lcd = 16 * 2 ' [b]definiramo kateri LCD uporabljamo[/b]
Config Lcdpin = Pin , Db7 = Portc.7 , Db6 = Portc.6 , Db5 = Portc.5 , Db4 = Portc.4 , E = Portc.2 , Rs = Portc.1 ' [b]definiramo vhodne pine na LCD[/b]
N = 125 ' TO JE ZAČETNA VREDNOST PO MOJEM OKUSU NA SREDINI OBMOČJA
Cls ' [b] počisti zaslon [/b]
Lcd " DOBER DAN" ' TO NAPIŠEŠ, DA VEŠ ALI SE JE VEZJE INICIALIZIRALO
'-------------------------------------------------------------------------------
Do ' [b]do-loop zanka
If Pind.0 = 0 Then ' [b]glavna programa kjer z tipko spreminjaš frekvenco[/b]
Gosub Gor
Waitms 50
End If
If Pind.1 = 0 Then
Gosub Dol
Waitms 50
End If
Pwm1a = N
' Config Portd.5 = Output '[b] na katerem pinu je izhod[/b]
Wait 1 ' ZA ZAČETEK, DA NE BO PREHITRO
Locate 1 , 1 ' [b] lokacije kjer nam na LCD-ju izpiše podatke[/b]
Lcd N ; " "
Loop
'-------------------------------------------------------------------------------
' End NAPIŠEŠ NA KONCU PROGRAMOV
Gor: ' JE PODPROGRAM !! [b] neke vrste pod programa[/b]
Incr N
Return
Dol:
Decr N
Return
'-------------------------------------------------------------------------------
End
|
_________________ Lep pozdrav ! |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Tor Jul 06, 2010 10:07 am Naslov sporočila: |
|
|
Hi,
hvala za pomoč.
Lep pozdrav Marcel. |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Sre Jul 07, 2010 2:12 pm Naslov sporočila: |
|
|
Hi,
Koda: | $regfile = "m8515.dat"
$crystal = 8000000
Dim N As Byte , M As Byte
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
Config Portd.0 = Output
Config Portd.1 = Output
Do
If Portd.0 = 0 Then
Gosub Gor
Waitms 5
End If
If Portd.1 = 0 Then
Gosub Dol
Waitms 5
End If
Pwm1a = N
Config Portd.5 = Output
Loop
End
Gor:
Incr N
Return
Dol:
Decr N
Return |
8515 imam na ikebani in že programiram v vezju.Tipke sem vezal z maso tako kot sem prebral v knjigi.Ampak nekaj ne deluje.
Zanima me samo to ali ima kakšno vlogo portd.0 in portd.1,ker sem jima ime spremenil iz pind.0 in pind.1?
Lep pozdrav Marcel. |
|
Nazaj na vrh |
|
|
slawko Začetnik
Pridružen/-a: Čet Jan 2009 10:48 Prispevkov: 16
|
Objavljeno: Čet Jul 08, 2010 10:03 am Naslov sporočila: |
|
|
LP!
Portd.0 -> Izhod
Pind.0 -> Vhod
vsak pin uP je lahko Izhod ali Vhod odvisno kako nastaviš.
- če hočeš postaviti Izhod napišeš Portd.0=1
- če hočeš prebrati stanje vhoda napišeš If Pind.0=0 then... (ker praviš da imaš tipko vezano na maso)
- lahko pa nerediš tudi tako
config portd.0=input
Vhod_1 alias pind.0
if Vhod_1=1 then
end if |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Čet Jul 08, 2010 10:13 am Naslov sporočila: |
|
|
Hi,
aha...bom sprobal in sporočim.
Hvala!
Lep pozdrav Marcel. |
|
Nazaj na vrh |
|
|
Srečko Profesionalec
Pridružen/-a: Sob Jan 2005 18:38 Prispevkov: 80
|
Objavljeno: Čet Jul 08, 2010 7:37 pm Naslov sporočila: |
|
|
Srečko je napisal/a: | marc je napisal/a: |
Nekaj še ne razumem,
zakaj ste v programu napisali pind.0=0 in pind.1=0 .V čem je fora,imamo ja porte ne pine?
Lep pozdrav Marcel. |
Kolikor je meni znano so pini (pind.0) itd vhodi porti (portd.5) naprimer je pa izhod.
Lp Srečko |
marc je napisal/a: | hm Confused .
če se ne motim se porti definirajo na začetku programa,če so vhodi ali izhodi.
Npr:
config porta=output ali config porta=input
vsaj do zdej sem tako delal,tisti pind.0 in 1 me je pa zmedel. Very Happy . |
slawko je napisal/a: | LP!
Portd.0 -> Izhod
Pind.0 -> Vhod
vsak pin uP je lahko Izhod ali Vhod odvisno kako nastaviš.
- če hočeš postaviti Izhod napišeš Portd.0=1
- če hočeš prebrati stanje vhoda napišeš If Pind.0=0 then... (ker praviš da imaš tipko vezano na maso)
- lahko pa nerediš tudi tako
config portd.0=input
Vhod_1 alias pind.0
if Vhod_1=1 then
end if |
marc je napisal/a: | Hi,
aha...bom sprobal in sporočim.
Hvala! |
Sedaj ko si dobil odgovor-e na tvoje prvo vprašanje glede pinov in portov pa le preiskusi.
LP Srečko _________________ Samouk
Tukaj sem doma |
|
Nazaj na vrh |
|
|
|
|
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
|