Magiska medaljong (6 / 14 steg)
Steg 6: Skriva (eller kopiera) programmet
Du kan skriva egna program att genomföra olika visuella effekter för RGB LED, men om du bara börjar med microcontroller programmering är det mer praktiskt att börja med ett exempel. Till exempel kan du copypaste koden nedan in fönstret IDE.Vad är coolt om denna kod är att den kör RGB LED och självständigt tonas ned varje färg. Vanligtvis detta uppnås med hjälp av PWM (Pulse bredd Modulation) och de flesta mikrokontroller har speciell hårdvara att producera PWM-signal. PICAXE-08 har också denna förmåga, men det är bara tillgänglig på en kanal. Så detta program genererar PWM-signal för tre färger programvara sätt.
----------------- CUTLINE ----------------- 8< -------------------- CUTLINE --------------------
#rem
Enkla PICAXE 08m basic-program som slumpmässigt och självständigt styr
ljusstyrkan på alla 3 färger i en RGB-LED
att skapa lugnande patterms (som i en humör-lampa).
Se min blogg http://rtfms.com för mer information
Är du fri att göra vad du vill med den här koden, bara nämna min blogg http://andrey.mikhalchuk.com
i kommentarerna, så folk kan hitta uppdaterad kod. Tack!
#endrem
#picaxe 08m ; config ; karta pins ; karta pin värden till mem ; karta pin_deltas till mem ; Temp värden för subrutinen ; subrutin parametrar ; initiera allt ; Starta servo läge ; denna kod är som loop() i arduino ; Denna sub Justerar ljusstyrkan på den LED och delta ; se min andra blogg http://rtfms.com och video blogg RTFMs på youtube för demo
setfreq m4
symbol hastighet = 3; ju lägre värde desto högre färg ändra hastighet
symbol SPEED_VARIATIONS = 7. definierar hur många olika färg förändring hastigheter bör det använda
symbol RED0_PIN = 0
symbol GREEN0_PIN = 1
symbol BLUE0_PIN = 2
; PIN värde är den nuvarande ljusstyrkan LED
symbol red0 = b0
symbol green0 = b1
symbol blue0 = b2
; delta är snabbhet förändringen ljusstyrka
symbol red0_delta = b3
symbol green0_delta = b4
symbol blue0_delta = b5
symbol delta_w = w3
symbol tmp = b7
symbol pin = b8
symbol val = b9
symbol delta = b10
red0 = 0
green0 = 70
blue0 = 200
red0_delta = 1
green0_delta = 5
blue0_delta = 9
; Observera att "servopos RED0_PIN, 255" återger LED av!
; "servopos RED0_PIN, 0" gör det verkligen dim, men lit. Är det en bugg i PICAXE?
servo RED0_PIN, 255
servo GREEN0_PIN, 255
servo BLUE0_PIN, 255
viktigaste:
; efterlikna funktionsanropet i funktion-mindre miljö
PIN-kod = RED0_PIN: val = red0: delta = red0_delta: gosub set_color_val: red0 = val: red0_delta = delta
PIN-kod = GREEN0_PIN: val = green0: delta = green0_delta: gosub set_color_val: green0 = val: green0_delta = delta
PIN-kod = BLUE0_PIN: val = blue0: delta = blue0_delta: gosub set_color_val: blue0 = val: blue0_delta = delta
gå till största
set_color_val:
Val = val + delta
om delta < 128 och val < delta då; FWD
Random delta_w
delta = delta % SPEED_VARIATIONS + 1
delta = 255 - delta
Val = 255
ElseIf delta > = 128 och val < = delta då; omvänd
Random delta_w
delta = delta % SPEED_VARIATIONS + 1
Val = 0
endif
tmp = val - 1. servopos bug workaround
; Ja, servopos tar bara konstant som första argument :(
om pin = RED0_PIN sedan
servopos RED0_PIN, tmp
ElseIf pin = GREEN0_PIN sedan
servopos GREEN0_PIN, tmp
ElseIf pin = BLUE0_PIN sedan
servopos BLUE0_PIN, tmp
endif
Pausa hastighet
returnera
; Detta behandlas i avsnitt #7: Microcontroller möter smycken