Anoniem
Beste leden,
Ik heb zonet een programma geschreven dat je met 15 knoppen een RGB led kan sturen. De knoppen zijn dus 3 reeksen van elk 5 knoppen.
De 3 reeksen zijn voor rood, groen en blauw
De 5 knopen zijn de duty's die je kan kiezen dus 255(4/4) , 196(3/4), 128(2/4), 64(1/4) en 0(0/4) Dus zo kan je elke led op 4 standen zeten waardoor je iets van 200 kleuren kan bekomen.
Nu heb ik het programma al en dit werkt naar behoren op real pic simulator maar mss hebben jullie nog tips voor mij of mss hebben jullie er zelf wat aan 
Device 16F628
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
Symbol rood = PORTA.0 ; knoppen multiplexing
Symbol groen = PORTA.1
Symbol blauw = PORTA.2
Symbol pwm255 = PORTA.3
Symbol pwm196 = PORTA.4
Symbol pwm128 = PORTA.5
Symbol pwm064 = PORTA.6
Symbol pwm000 = PORTA.7
Symbol Lrood = PORTB.0 ; uitgangen leds
Symbol Lgroen = PORTB.1
Symbol Lblauw = PORTB.2
Dim Rpwm As Byte ; duty waardes
Dim Gpwm As Byte
Dim Bpwm As Byte
While 1 = 1
High rood ; porta.0 hoog maken
If pwm255 = 1 Then ; alser nu op knop 1 geduwt word
Rpwm = 255
ElseIf pwm196 = 1 Then ; alser op knop 2 word geduwt
Rpwm = 196
ElseIf pwm128 = 1 Then ; alser op knop 3 word geduwt
Rpwm = 128
ElseIf pwm064 = 1 Then ; alser op knop 4 word geduwt
Rpwm = 64
ElseIf pwm000 = 1 Then ; alser op knop 4 word geduwt
Rpwm = 0
EndIf
Low rood ; porta.0 weer laag maken
DelayMS 2 ; 2ms wachten
High groen ; terug het zelfde als rood
If pwm255 = 1 Then
Gpwm = 255
ElseIf pwm196 = 1 Then
Gpwm = 196
ElseIf pwm128 = 1 Then
Gpwm = 128
ElseIf pwm064 = 1 Then
Gpwm = 64
ElseIf pwm000 = 1 Then
Gpwm = 0
EndIf
Low groen
DelayMS 2 ; terug het zelfde als rood
High blauw
If pwm255 = 1 Then
Bpwm = 255
ElseIf pwm196 = 1 Then
Bpwm = 196
ElseIf pwm128 = 1 Then
Bpwm = 128
ElseIf pwm064 = 1 Then
Bpwm = 64
ElseIf pwm000 = 1 Then
Bpwm = 0
EndIf
Low blauw
DelayMS 2
PWM Lrood, Rpwm, 1 ; pwm's uitzenden
PWM Lgroen, Gpwm, 1
PWM Lblauw, Bpwm, 1
Wend
EndTips zijn heel welkom een programma is altijd aan verbetering toe 
Gelieven ook zeggen waarom iets anders kan zodat ik er nog wat van leer he 
Alvast bedankt
Cyclus naar 1 gewijzigd
200 kleuren lijkt me wat overdreven, met 3 kleuren in 5 standen, is 5^3=125. Dan neem ik nog niet eens mee dat alle drie de leds op een halve dutycycle dezelfde kleur is als alle leds op volle dutycycle, of 3/4 dutycycle.
Het programma is een beetje apart. Je lijkt maar 5 knoppen te hebben ingesteld, namelijk die voor pwm000 t/m pwm255. Misschien dat je die hebt gecombineerd met rood - groen - blauw uitgangen, maar dan heb je iedere cycle 2 milliseconden om de drie kleuren uit te kiezen.
Als je pwm's van 5 cycles hebt, heb je waarschijnlijk ook nog behoorlijk last van de rest van het programma, omdat dat (relatief) lang duurt.
Bovendien gaan de PWM's niet tegelijk, dus eerst brand je rode Led even, dan je groene, en dan je blauwe. Helaas kan een PIC niet meer dan 1 uitgang tegelijk PWM'en, tenzij je HPWM gebruikt, maar dan moet je een PIC zien te vinden die 3 uitgangen met HPWM heeft (Ik weet niet of dat bestaat, de 16F628 heeft er iig maar 1).
[Bericht gewijzigd door Hagdos op (13%)]
Ik denk niet dat het goed gaat werken. Zodra het rode ledje gaat branden heb je max 1ms om op het goede knopje te drukken, gaat je dus nooit lukken. De ontdendering mist ook, maar misschien heb je die in hardware.
En je pwm manier is ook niet echt mooi. Nu worden steeds 5 pulsen gegeven, en dan de volgende kleur. Netter is een timer en een tellertje. Elke interrupt de teller verhogen, dan de teller vergelijken met de duty die je wilt en dan de uitgang 1 of 0 maken.
Anoniem
243 kleuren want 3 leds met elk 5 combinaties dus das 3tot de 5de 
Jah ik dacht ook cycles van 1 is beter niet ?
Als iemand een PIC kent met 3HPWM poorten hoor ik het graag 
En jah ik gebruik dus knop rood groen en blauw als uitgang en dan gaat hij gaan kijken welke van de knoppen 255,196 .., 0 welke 5V binnen krijgt opnieuw 
Op 13 oktober 2009 23:50:36 schreef Hagdos:
Helaas kan een PIC niet meer dan 1 uitgang tegelijk PWM'en, tenzij je HPWM gebruikt, maar dan moet je een PIC zien te vinden die 3 uitgangen met HPWM heeft (Ik weet niet of dat bestaat, de 16F628 heeft er iig maar 1).
Of je gebruikt wat externe logica en gaat HPWM multiplexen.
@Henry S.: Dat lijkt me lastig als ze niet alle 3 dezelfde dutycycle moeten hebben.
@telefoon13: 3 leds met elk 5 combinaties dus das 5 tot de 3de 