rgb controller
-
- Berichten: 121
- Lid geworden op: di sep 30, 2008 12:00 am
rgb controller
Ik ben bezig met een rgb controller waarmee ik de kleur instel met een potmeter, dit gaat goed.
Nu wil ik ook de verzadiging gaan regelen met 2 pulsdrukkers
mijn idee was om per puls van de schakelaar bij iedere kleur 10 optellen, maar dit werkt dus niet
als dit gelukt is wil ik ook nog alles kunnen dimmen ,ook weer met 2 drukknoppen.
kan iemand mij op weg helpen?
[code]
Device 16F688
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, MCLRE_OFF
ALL_DIGITAL=true
Symbol IRCF0 = OSCCON.4
Symbol IRCF1 = OSCCON.5
Symbol IRCF2 = OSCCON.6
IRCF0 = 1
IRCF1 = 1
IRCF2 = 1
XTAL 8
Dim rood As byte
Dim groen As byte
Dim blauw As byte
Dim kleur As float
Dim pastel As byte
dim waarde as word
Symbol roodled= PORTA.0
Symbol groenled= porta.1
Symbol blauwled= porta.2
symbol meerpastel= porta.4
symbol minderpastel= porta.5
symbol sterkteplus= porta.3
symbol sterktemin= portc.3
'poorten rx en tx even tueel voor latere master slave functie
ADCON0=%10001111
Declare ADIN_RES 10
Declare ADIN_TAD FRC
Declare ADIN_STIME 500
hoofdmenu:
waarde=ADIn 4
kleur = waarde / 4,8
Select Case kleur
Case <84
groen=kleur
rood=84-groen
blauw=0
Case 85 To 169
kleur=kleur-85
blauw=kleur
groen=84-blauw
rood=0
Case 170 To 255
kleur=kleur-170
rood=kleur
blauw=84-rood
groen=0
End Select
Pwm roodled,rood,1
Pwm groenled,groen,1
Pwm blauwled,blauw,1
GoTo hoofdmenu
[/code]
-
- Berichten: 121
- Lid geworden op: di sep 30, 2008 12:00 am
@ stynus Ik heb het programma nu werkend met pwm ,dit werkt nu perfect .
alleen de regeling met pastel en dimmen wil niet lukken,
mijn opzet was bij de pastelregeling om bv rood =255 ,
groen = 0 ,blauw = 0 , meer richting wit te laten gaan dit moet dus nu worden bv : rood = 255 , groen = 180 , blauw = 180
en dit iedere keer in stappen van 10 met 2 drukknoppen.
Bij het dimmen moet dan alle kleuren met 10 verkleinen
Bij het feller laten branden alles met 10 verhogen tot de hoogste waarde 255 heeft bereikt
Ik heb al veel dingen geprobeerd maar,of het programma blijft hangen ,of de led's knipperen als ik de drukkers in druk
wat kan ik het beste doen?en waar moet ik de code tussenzetten?
-
- Berichten: 121
- Lid geworden op: di sep 30, 2008 12:00 am
-
- Berichten: 121
- Lid geworden op: di sep 30, 2008 12:00 am
-
- Berichten: 121
- Lid geworden op: di sep 30, 2008 12:00 am
Hier is de code, ik heb het dimmen/sterkte nog even laten zitten
[code]
Device 16F688
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, MCLRE_OFF
ALL_DIGITAL=true
Symbol IRCF0 = OSCCON.4
Symbol IRCF1 = OSCCON.5
Symbol IRCF2 = OSCCON.6
IRCF0 = 1
IRCF1 = 1
IRCF2 = 1
XTAL 8
Dim rood As byte
Dim groen As byte
Dim blauw As byte
Dim kleur As float
Dim pastel As byte
dim sterkte as byte
dim waarde as word
dim kleurrood as byte
dim kleurgroen as byte
dim kleurblauw as byte
Symbol roodled= PORTA.0
Symbol groenled= porta.1
Symbol blauwled= porta.2
symbol meerpastel= porta.4 'meer wit toevoegen dus bv. rood 255 ,groen 0 ,blauw 0 ,naar rood 255 ,groen 200 ,blauw 200
symbol minderpastel= porta.5 'in stappen van 10 *** met minder hetzelfde maar omgedraaid
symbol sterkteplus= porta.3 'alle kleuren in stappen van 10 dimmen of sterker instellen
symbol sterktemin= portc.3 '
'poorten rx en tx even tueel voor latere master slave functie
ADCON0=%10001111
Declare ADIN_RES 10
Declare ADIN_TAD FRC
Declare ADIN_STIME 500
pastel = 0
sterkte = 0
goto hoofdmenu
calckleur:
if meerpastel then pastel = pastel + 10
if minderpastel then pastel = pastel - 10
kleurrood = rood + pastel + sterkte
kleurgroen = groen + pastel + sterkte
kleurblauw = blauw + pastel + sterkte
return
hoofdmenu:
waarde=ADIn 4
kleur = waarde / 4,8
Select Case kleur
Case <84
groen=kleur
rood=84-groen
blauw=0
Case 85 To 169
kleur=kleur-85
blauw=kleur
groen=84-blauw
rood=0
Case 170 To 255
kleur=kleur-170
rood=kleur
blauw=84-rood
groen=0
End Select
gosub calckleur
Pwm roodled,kleurrood,1
Pwm groenled,kleurgroen,1
Pwm blauwled,kleurblauw,1
GoTo hoofdmenu
[/code]
- Stynus
- Site Admin
- Berichten: 2861
- Lid geworden op: vr sep 12, 2008 1:54 pm
- Locatie: Overpelt (België)
- Contacteer:
Probeer zo is:
[code]Device 16F688
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, MCLRE_OFF
ALL_DIGITAL=true
Symbol IRCF0 = OSCCON.4
Symbol IRCF1 = OSCCON.5
Symbol IRCF2 = OSCCON.6
IRCF0 = 1
IRCF1 = 1
IRCF2 = 1
XTAL 8
Dim rood As Byte
Dim groen As Byte
Dim blauw As Byte
Dim kleur As Float
Dim pastel As Byte
Dim sterkte As Byte
Dim waarde As Word
Dim kleurrood As Byte
Dim kleurgroen As Byte
Dim kleurblauw As Byte
Symbol roodled= PORTA.0
Symbol groenled= PORTA.1
Symbol blauwled= PORTA.2
Symbol meerpastel= PORTA.4 'meer wit toevoegen dus bv. rood 255 ,groen 0 ,blauw 0 ,naar rood 255 ,groen 200 ,blauw 200
Dim pastelplusbit As Bit
Symbol minderpastel= PORTA.5 'in stappen van 10 *** met minder hetzelfde maar omgedraaid
Dim pastelminbit As Bit
Symbol sterkteplus= PORTA.3 'alle kleuren in stappen van 10 dimmen of sterker instellen
Symbol sterktemin= PORTC.3 '
'poorten rx en tx even tueel voor latere master slave functie
ADCON0=%10001111
Declare ADIN_RES 10
Declare ADIN_TAD FRC
Declare ADIN_STIME 500
pastel = 0
sterkte = 0
GoTo hoofdmenu
calckleur:
If meerpastel Then
If pastelplusbit = 0 Then pastel = pastel + 10
pastelplusbit = 1
Else
pastelplusbit = 0
EndIf
If minderpastel Then
If pastelminbit = 0 Then pastel = pastel - 10
pastelminbit = 1
Else
pastelminbit = 0
EndIf
kleurrood = rood + pastel + sterkte
kleurgroen = groen + pastel + sterkte
kleurblauw = blauw + pastel + sterkte
Return
hoofdmenu:
waarde=ADIn 4
kleur = waarde / 4,8
Select Case kleur
Case < 84
groen=kleur
rood=84-groen
blauw=0
Case 85 To 169
kleur=kleur-85
blauw=kleur
groen=84-blauw
rood=0
Case 170 To 255
kleur=kleur-170
rood=kleur
blauw=84-rood
groen=0
End Select
GoSub calckleur
PWM roodled,kleurrood,1
PWM groenled,kleurgroen,1
PWM blauwled,kleurblauw,1
GoTo hoofdmenu
End[/code]