Etsi

Jatka ja biologinen sen laatija Pari artikkeleita harrastukseni - robotiikkaan
Minun mielikuvaa maahanmuuton Australiaan. Venäjäksi vain. Reseptit ja arkipäivän ongelmien ratkaisuun
Linux liittyvää virkaa Windows liittyvää virkaa
Ohjelmisto liittyvää virkaa Paljon tietoa laitteiston
Erilaisia ​​työkaluja voi olla sinulle hyötyä Posts noin eri web-teknologioiden
Kaikki, mitä ei sovi loput valikon RSS-syöte tästä blogista

Tag Cloud

Arkisto

Linkit

Andrey Mikhalchuk blogi

English flagItalian flagKorean flagChinese (Simplified) flagPortuguese flagGerman flagFrench flagSpanish flagJapanese flagRussian flagDanish flagFinnish flagHebrew flag

Technoblog elämästä

23 kesäkuu 2011 hallinta RGB LED käyttäen PICAXE-08: perusteet ohjelmistojen PWM

Driving RGB LED with PICAXE-08M

Ajaminen RGB LED PICAXE-08m

Olen työskennellyt uusi RTFMs episodi, johon pakkaus RGB LED ja mikro tulee hyvin tiukka tilaan. Mikrokontrolleri Päätin käyttää on PICAXE-08. Minä valitsin sen kolmesta syystä:
- Minulla oli yksi laatikko
- Minulla ei ollut muita suunnitelmia, koska se näytti kovin sopiva mitä sain sen (korkeilla pallon projekti)
- Käyttämällä se himmentää RGB LED on haaste


Googlasin jonkin aikaa ja ei löytänyt ratkaisua tehdä RGB LED ja PICAXE-08m työtä yhdessä olin suunnitellut. Vaikka vaihtaessa kolmen eri värit LED ei ole ongelma lainkaan, värien sekoituksen ei ole vähäpätöinen tätä siru. Halusin hallita jokaista väriä erikseen 256 sävyä kirkkauden / himmentämällä niin LED voi tuottaa todellista RGB sekoitetaan. Tämä on yleensä saavutetaan pulssinleveysmoduloinnilla (PWM) ja ei ongelma Arduino mm. ATMEGA328 on 6 PWM kanavaa, joten se voi ajaa kaksi RGB LED. Mutta PICAXE08 on vain yksi PWM kanava niin tehtävä saattaa tuntua mahdottomalta. Olen ratkaissut ongelman toteuttamalla ohjelmisto PWM, joka toimi yllättävän hyvin antaa PICAXE08 rajallinen suorituskyky. Tässä on koodi:

# Rem
Yksinkertainen PICAXE 08m perus ohjelma, satunnaisesti ja riippumattomasti säätelee
kirkkauden kaikkien 3 värien RGB LED
luoda rauhoittava patterms (kuten tuulella lamppu).
Katso blogini http://andrey.mikhalchuk.com lisätietoja

Olet vapaa tekemään mitä haluat tällä koodilla, vain mainita blogini http://andrey.mikhalchuk.com
kommenteissa, jotta ihmiset voivat löytää päivittää koodia. Kiitos!

Tämä on minun ensimmäinen ohjelma PICAXE pahoittelen, jos tämä koodi ei tavata laatu
odotukset ja haitat tunteitasi miten hyvä koodin pitäisi näyttää :)
# Endrem

# Picaxe 08m
setfreq m4

; Config
symboli SPEED = 3; pienempi arvo suurempi värin muutoksen nopeus
symboli SPEED_VARIATIONS = 7, määrittelee, kuinka monta eri väriä muutoksen nopeutta tulisi se käyttää

; Kartta nastat
symboli RED0_PIN = 0
symboli GREEN0_PIN = 1
symboli BLUE0_PIN = 2

; Kartta pin arvot jäse
, Pin-arvo on nykyistä kirkkautta LED
symboli red0 = b0
symboli green0 = b1
symboli blue0 = b2

; Kartta pin_deltas käyttää muistikortille
, Delta on nopeus kirkkauden muutos
symboli red0_delta = b3
symboli green0_delta = b4
symboli blue0_delta = b5

, Lämpötila-arvot alirutiinin
symboli delta_w = w3
symboli tmp = B7

; Aliohjelman parametrit
tunnus pin = b8
symboli val = B9
symboli delta = b10

; Alustamaan kaikki
red0 = 0
green0 = 70
blue0 = 200
red0_delta = 1
green0_delta = 5
blue0_delta = 9

, Alat servo-tilassa
, Toteavat, että "servopos RED0_PIN, 255" tekee LED pois päältä!
, "Servopos RED0_PIN, 0", tekee todella hämärä, mutta palaa. Onko tämä bugi PICAXE?
servo RED0_PIN, 255
servo GREEN0_PIN, 255
servo BLUE0_PIN, 255

, Tämä koodi on kuin silmukka () Arduino
tärkeimmät:
; Jäljittelemällä funktiokutsua toiminnolla, vähemmän ympäristöä
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 tärkein

; Tämä osa säätää kirkkautta LED ja delta
set_color_val:
val = val + delta
Jos delta <128 ja val <delta sitten; fwd
satunnainen delta_w
delta = delta% SPEED_VARIATIONS + 1
delta = 255 - delta
val = 255
elseif delta> = 128 ja Val> = delta niin, käänteinen
satunnainen delta_w
delta = delta% SPEED_VARIATIONS + 1
Val = 0
endif
tmp = val - 1; servopos bug kiertotapaa
, Joo, servopos vie vain vakio ensimmäisenä argumenttina: (
jos pin = RED0_PIN sitten
servopos RED0_PIN, tmp
elseif pin = GREEN0_PIN sitten
servopos GREEN0_PIN, tmp
elseif pin = BLUE0_PIN sitten
servopos BLUE0_PIN, tmp
endif
tauko SPEED
palata

; Nähdä muita blogin http://rtfms.com ja videoblogin RTFMs YouTubessa demo
, Tämä on käsitelty jakson # 7: Microcontroller Meets Korut

Muutama huomio tästä code:
- Se toteuttaa "RGB tunnelman lamppu". Voit vapaasti muuttaa sitä tarpeidesi
- Koska PICAXE pitää silmukoiden koko ajan epäilen virrankulutus on kamala. Silti se on hyvä tunnin ainakin, kun virtaa kaksi pientä paristoa kuten RTFMs videoblogin Episode # 7
- Suorituskyky PICAXE08 on niin ja näin. Kuten näet RTFMs videon valo on hieman kimallusta. Et todennäköisesti huomaa sitä kun katsot LED henkilökohtaisesti, mutta videokamera tekee vaikutuksen huomaa. Itse tuulella lamppu en edes tykkää :)
- Ohjelman koko on 146 tavua (out of 256 käytettävissä 08). Luultavasti voi optimoida hieman.
- RTFMs video tunnelma lampun mainitun hankkeen Tässä on julkaissut hieman myöhemmin

Tämä viesti on julkaistu Hardware , Kuinka , muut .

Ei kommentteja

Ei kommentteja toistaiseksi

Jätä vastaus

Sivukartta (C) Andrey Mikhalchuk, 2005-2008