Stap 6: Schrijven (of kopieer) het programma
U kunt uw eigen programma's uit te voeren van verschillende visuele effecten voor de RGB LED schrijven, maar als je net met microcontroller programmeren begint is het handiger om te beginnen met een voorbeeld. U kunt bijvoorbeeld copypaste de onderstaande code in het venster van de IDE.Wat is cool over deze code is dat het drijft RGB LED en onafhankelijk elke kleur dimt. Meestal is dit bereikt met behulp van de PWM (Pulse Width Modulation) en de meeste microcontrollers hebben speciale hardware te produceren PWM-signaal. PICAXE-08 heeft ook deze mogelijkheid, maar het is slechts beschikbaar op één kanaal. Dus dit programma PWM-signaal voor drie kleuren software genereert manier.
----------------- CUTLINE ----------------- 8< -------------------- CUTLINE --------------------
#rem
Eenvoudige PICAXE 08m basic programma dat willekeurig en onafhankelijk bestuurt
helderheid van alle 3 kleuren in een RGB-LED
het creëren van kalmerende patterms (zoals in een mood lamp).
Zie mijn blog-http://rtfms.com voor meer details
U bent vrij om te doen wat je wilt met deze code, noemen mijn blog http://andrey.mikhalchuk.com
in de opmerkingen, dus mensen kan bijgewerkte code vinden. Bedankt!
#endrem
#picaxe 08m ; config ; kaartspelden ; pin waarden toewijzen aan mem ; pin_deltas toewijzen aan mem ; Temp waarden voor de subroutine ; subroutine parameters ; initialiseren van alles ; servo-modus starten ; Deze code is als de loop in arduino ; deze sub past de helderheid van de LED en delta ; Zie mijn andere blog http://rtfms.com en video blog RTFMs op youtube voor demo
setfreq m4
symbool van snelheid = 3; Hoe kleiner de waarde, hoe hoger de kleur snelheid wijzigen
symbool SPEED_VARIATIONS = 7; Hiermee definieert u hoeveel verschillende kleur verandering snelheden moet het gebruiken
symbool RED0_PIN = 0
symbool GREEN0_PIN = 1
symbool BLUE0_PIN = 2
; PIN-waarde is de huidige helderheid van de LED
symbool red0 = b0
symbool green0 = b1
symbool blue0 = b2
; Delta is de snelheid van de helderheid wijzigen
symbool red0_delta = b3
symbool green0_delta = b4
symbool blue0_delta = b5
symbool delta_w = w3
symbool tmp = b7
symbool pin = b8
symbool van de val = b9
symbool delta = b10
red0 = 0
green0 = 70
blue0 = 200
red0_delta = 1
green0_delta = 5
blue0_delta = 9
; Merk op dat "servopos RED0_PIN, 255" LED maakt af!!
; "servopos RED0_PIN, 0" maakt het echt dim, maar aangestoken. Is dat een bug in PICAXE?
Servo RED0_PIN, 255
Servo GREEN0_PIN, 255
Servo BLUE0_PIN, 255
belangrijkste:
; functie-aanroep emuleren in functie-minder milieu
PIN = RED0_PIN: val = red0: delta = red0_delta: gosub set_color_val: red0 = val: red0_delta = delta
PIN = GREEN0_PIN: val = green0: delta = green0_delta: gosub set_color_val: green0 = val: green0_delta = delta
PIN = BLUE0_PIN: val = blue0: delta = blue0_delta: gosub set_color_val: blue0 = val: blue0_delta = delta
goto belangrijkste
set_color_val:
Val = val + delta
als delta < 128 en val < delta then; FWD
willekeurig delta_w
Delta delta % SPEED_VARIATIONS + 1 =
Delta = 255 - delta
Val = 255
elseif delta > = 128 en val < = delta then; omgekeerde
willekeurig delta_w
Delta delta % SPEED_VARIATIONS + 1 =
Val = 0
endif
tmp = val - 1; servopos bug alternerende actie
; Ja, servopos duurt slechts als het eerste argument constante :(
als pin = RED0_PIN then
servopos RED0_PIN, tmp
elseif pin = GREEN0_PIN then
servopos GREEN0_PIN, tmp
elseif pin = BLUE0_PIN then
servopos BLUE0_PIN, tmp
endif
onderbreken van snelheid
terugkeer
; Dit is geregeld in aflevering #7: Microcontroller voldoet aan sieraden