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 

RGB LED dioda

 
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
marc
Profesionalec


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

PrispevekObjavljeno: Ned Jul 04, 2010 8:53 pm    Naslov sporočila: RGB LED dioda Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jure
Urednik


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

PrispevekObjavljeno: Ned Jul 04, 2010 9:19 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
marc
Profesionalec


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

PrispevekObjavljeno: Pon Jul 05, 2010 8:35 am    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
Srečko
Profesionalec


Pridružen/-a: Sob Jan 2005 18:38
Prispevkov: 80

PrispevekObjavljeno: Pon Jul 05, 2010 7:01 pm    Naslov sporočila: Odgovori s citatom

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. Very Happy

Lp Srečko

_________________
Samouk
Tukaj sem doma
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 Jul 05, 2010 9:00 pm    Naslov sporočila: Odgovori s citatom

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 .


Lep pozdrav Marcel.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
RudiP
Profesionalec


Pridružen/-a: Sre Jul 2008 8:39
Prispevkov: 128
Kraj: KOPER

PrispevekObjavljeno: Pon Jul 05, 2010 9:40 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


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

PrispevekObjavljeno: Tor Jul 06, 2010 10:07 am    Naslov sporočila: Odgovori s citatom

Hi,
hvala za pomoč.

Lep pozdrav Marcel.
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 Jul 07, 2010 2:12 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
slawko
Začetnik


Pridružen/-a: Čet Jan 2009 10:48
Prispevkov: 16

PrispevekObjavljeno: Čet Jul 08, 2010 10:03 am    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


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

PrispevekObjavljeno: Čet Jul 08, 2010 10:13 am    Naslov sporočila: Odgovori s citatom

Hi,

aha...bom sprobal in sporočim.

Hvala!


Lep pozdrav Marcel.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Srečko
Profesionalec


Pridružen/-a: Sob Jan 2005 18:38
Prispevkov: 80

PrispevekObjavljeno: Čet Jul 08, 2010 7:37 pm    Naslov sporočila: Odgovori s citatom

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. Very Happy

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. Very Happy Very Happy

LP Srečko

_________________
Samouk
Tukaj sem doma
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
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
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group