Hier mijn eerste probeersel in JAL (bedankt Wouter).
De kleuren lopen mooi gelijkmatig over. Ik heb het in een 16f877 gepropt, maar je kunt net zo goed een kleinere PIC nemen.
Het kan een stuk korter, ik weet het, maar het werkt 
-- 13 april 2003
-- RGB-led op pin a0 a1 en a2 pseudorandom kleuren
-- Door Opla
include 16f877_20
include jlib
include random3
pin_a0_direction = output -- RGB Groen
pin_a1_direction = output -- RGB Blauw
pin_a2_direction = output -- RGB Rood
randomize( 1 )
var byte teller = 255
var byte snelheid = 1 -- aantal loops per kleur (maal x door innerloop)
var byte traagheid = 25 -- aantal delays per kleur
var byte s -- hulpvar voor loop
var byte s2 -- hulpvar voor loop
var byte wissel -- om hoog en laag om te wisselen
var byte r_ist = 1 -- aantal cycli aan
var byte g_ist = 1
var byte b_ist = 1
var byte r_tel -- afteller in loop
var byte g_tel
var byte b_tel
var byte r_soll_l = 1 -- laagste waarde voor kleur
var byte g_soll_l = 1
var byte b_soll_l = 1
var byte r_soll_h = 255 -- hoogdte waarde voor kleur
var byte g_soll_h = 255
var byte b_soll_h = 255
var byte r_dir = 1 -- 0 is dimmen 1 is feller
var byte g_dir = 1
var byte b_dir = 1
forever loop
s = 0
while s < snelheid loop -- loop voor snelheid
s2 = 1
while s2 > 0 loop -- tweede snelheidsloop : voor als het heel langzaam moet
r_tel = r_ist
g_tel = g_ist
b_tel = b_ist
teller = 255
while teller > 0 loop -- 255 keer kijken of er iets aan moet
if r_tel > 0 then r_tel = r_tel - 1 pin_a2 = on end if
if g_tel > 0 then g_tel = g_tel - 1 pin_a0 = on end if
if b_tel > 0 then b_tel = b_tel - 1 pin_a1 = on end if
-- delay_1us( traagheid )
pin_a0 = off
pin_a1 = off
pin_a2 = off
-- delay_1us( traagheid )
teller = teller - 1
end loop -- teller > 0
s2 = s2 - 1
end loop -- s2
s = s + 1
end loop -- s < snelheid
-- intensiteit aanpassen
if r_dir == 1 then if r_ist < r_soll_h then r_ist = r_ist + 1 end if end if
if r_dir == 0 then if r_ist > r_soll_l then r_ist = r_ist - 1 end if end if
if r_dir == 1 then if r_ist == r_soll_h then r_dir = 0 end if end if
if g_dir == 1 then if g_ist < g_soll_h then g_ist = g_ist + 1 end if end if
if g_dir == 0 then if g_ist > g_soll_l then g_ist = g_ist - 1 end if end if
if g_dir == 1 then if g_ist == g_soll_h then g_dir = 0 end if end if
if b_dir == 1 then if b_ist < b_soll_h then b_ist = b_ist + 1 end if end if
if b_dir == 0 then if b_ist > b_soll_l then b_ist = b_ist - 1 end if end if
if b_dir == 1 then if b_ist == b_soll_h then b_dir = 0 end if end if
-- als alles nul, nieuwe random waardes
if b_dir == 0 then if b_ist == b_soll_l then
if g_dir == 0 then if g_ist == g_soll_l then
if r_dir == 0 then if r_ist == r_soll_l then
r_dir = 1 r_soll_l = random_byte r_soll_h = random_byte
if r_soll_l > r_soll_h then wissel = r_soll_l r_soll_l = r_soll_h r_soll_h = wissel end if
if r_ist > r_soll_h then r_dir = 0 end if
g_dir = 1 g_soll_l = random_byte g_soll_h = random_byte
if g_soll_l > g_soll_h then wissel = g_soll_l g_soll_l = g_soll_h g_soll_h = wissel end if
if g_ist > g_soll_h then g_dir = 0 end if
b_dir = 1 b_soll_l = random_byte b_soll_h = random_byte
if b_soll_l > b_soll_h then wissel = b_soll_l b_soll_l = b_soll_h b_soll_h = wissel end if
if b_ist > b_soll_h then b_dir = 0 end if
snelheid = random_byte -- aanzetten voor random snelheid uitzeten voor vaste
end if end if
end if end if
end if end if
end loop -- forever
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Gerwin
An amplifier is just a modulator for a power supply |Toffe Gebruiker
Tommyboy
Zo goed als het vroeger was, is het nooit geweest.
Dat is niet zo moeilijk, op uitgang a0 komt Groen, op a1 komt blauw, op a2 komt rood.
Verder moet er nog wat grut omheen voor de microcontroller zoals reset, oscilator (goed geschreven?), noem maar op. De LEDs trouwens wel met torren aansluiten en voorweerstanden.
Led heb ik alleen met voorweerstanden aangesloten, op de groene en blauwe poot 100 ohm, en op de rode 150.
Groen en blauwe trekken zo iets van 21 mA, en rood 19, dacht ik.
De torren komen nog als ik mijn huisnummer van RGB-leds klaar heb 
Gerwin
An amplifier is just a modulator for a power supply |Toffe Gebruiker
Op 13 april 2003 16:59:01 schreef Tommyboy:
Dat is niet zo moeilijk, op uitgang a0 komt Groen, op a1 komt blauw, op a2 komt rood.
ik heb geen verstand van microcontrollers ik probeer het te leren
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
- Misschien leuk om op de jallist te zetten?
- perfecte applicatie voor een 12F629
- volgens mij is 3 * 20mA nog prima toegstaan zonder externe transistoren!
Pixie
Weer terug bij de leukste hobby in het universum
[fftussendoor]Volgens mij hebben de RGB's (van bastiaan) al heel wat mensen een duwtje in de rug gegeven om met µC's aan de slag/door te gaan! Bij mij lagen alle benodigdheden allang klaar maar ik ben er nu pas een tijdje echt mee bezig. Ik dacht dat dat wel ff leuk was om zo tussen door op te merken[/fftussendoor]
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Ik heb iedereen eerst aan de kennis over controllers geholpen en daarna aan RGB's. De volgende stap verklap ik nog niet 
Pixie
Weer terug bij de leukste hobby in het universum
heb je een missie ofzo? 
of werk je gewoon stiekem voor een bedrijf en krijg je vet betaald voor alle extra µC's en toebehoren die er verkocht worden 
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 14 april 2003 10:57:24 schreef Bastiaan:
De volgende stap verklap ik nog niet
Misschien een uC met 400 * 600 RGB-ledjes die een video-signaal weergeven?
(lijkt me een aardige opgave voor een wedstrijd voor (ver) gevorderden)
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 14 april 2003 11:05:21 schreef Wouter van Ooijen:
[...]
Misschien een uC met 400 * 600 RGB-ledjes die een video-signaal weergeven?(lijkt me een aardige opgave voor een wedstrijd voor (ver) gevorderden)
Oh, dat gaat best lukken als ik er de tijd voor had, wel leuk idd. Ik heb al eens zelf een lichtkrant gemaakt met 7x42, dus een 400*600(*3) is dan gewoon een grotere versie daarvan.
Pixie
Weer terug bij de leukste hobby in het universum
wel een onwijs dure versie...maar wel verschrikkelijk gaaf!
"hey, heb jij een tv op je kamer?"
"Nee, maar ik heb wel een hele muur vol rgb leds waar je tv op kan kijken." (maar dan wel met zonnebril op hihi)
Jeroen Boere
IF you can't convince them, then confuse them!
Jeroen Boere
IF you can't convince them, then confuse them!
Op 14 april 2003 11:05:21 schreef Wouter van Ooijen:
[...]
Misschien een uC met 400 * 600 RGB-ledjes die een video-signaal weergeven?
(lijkt me een aardige opgave voor een wedstrijd voor (ver) gevorderden)
ff tussendoor:
doe dan wel een resolutie van 640*480, dit is een standaard videosignaal! anders moet je weer lopen kloten met conversies etc.
tenzij je natuurlijk een HDTV LED schermpie wilt bouwen...
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 14 april 2003 11:34:36 schreef Prutsertje:
heb je toevallig ook de asm versie van die code ??
Daar is een tooltje voor, dat heet (Jal) compiler.
ik ben op het moment bezig met een serial bestuurbaren
rgb controller waar een rgb led area op hangt
het gaat hier om rgb leds van 1 watt per kanaal
dus die geven ligt genoeg om heel me kamer zonder moeite te verlichten