Поиск

Резюме и био автора Несколько статей, связанных с моим хобби - робототехника
Мои впечатления об иммиграции в Австралию. В русском языке. Рецепты для ежедневного решения проблем
Linux должности, связанные с Windows, должности, связанные с
Программное обеспечение должности, связанные с Большое количество информации об аппаратном
Различные инструменты могут оказаться полезными Сообщения о различных веб-технологий
Все, что не вписывается в остальной части меню RSS лента этого блога

Облако тегов

Архив

Связи

Андрей Михальчук Блог

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

Technoblog о жизни

23 июня 2011 Управление RGB светодиодной использованием PICAXE-08: Основы программного ШИМ

Driving RGB LED with PICAXE-08M

Вождение RGB светодиодов с PICAXE-08М

Я работаю над новым эпизодом RTFMs, который включает упаковку RGB LED и микроконтроллер в очень ограниченном пространстве. Микроконтроллер я решил использовать это PICAXE-08. Я выбрал его по трем причинам:
- Я был один в поле
- Я не имел другие планы на это, поскольку это оказалось не очень подходит для того, что я получил его (высотном аэростате проекта)
- Использование ее тусклый RGB LED является проблемой


Я googled на некоторое время и не нашли решения, чтобы сделать RGB LED и PICAXE-08М работают вместе, как я планировал. В то время как переключение между тремя разными цветами светодиода не является проблемой вообще с, смешивание цветов не является тривиальной с этим чипом. Я хотел, чтобы контролировать каждый цвет по отдельности с 256 градаций яркости / затемнения, так что светодиод может производить истинное сочетание RGB. Это обычно достигается с широтно-импульсной модуляции (PWM), а не проблемы с Arduino например. ATmega328 имеет 6 каналов ШИМ, поэтому он может управлять двумя RGB-светодиодов. Но PICAXE08 имеет только один канал PWM, так что миссия может показаться невозможным. Я решил эту проблему путем внедрения программного PWM, которая работала на удивление хорошо давать PICAXE08 ограниченной производительностью. Вот мой код:

# Бэр
Простые PICAXE 08м основной программы, которая случайно и независимо управляет
Яркость всех 3-х цветов в RGB LED
создание успокаивающей patterms (как в настроении лампы).
Смотрите мой блог http://andrey.mikhalchuk.com подробнее

Вы вольны делать что угодно с этим кодом, так сказать мой блог http://andrey.mikhalchuk.com
в комментариях, чтобы люди могли найти обновленный код. Спасибо!

Это моя самая первая программа для PICAXE, я прошу прощения, если этот код не соответствует вашим качества
ожидания и вреда своими чувствами о том, как хороший код должен выглядеть :)
# Endrem

# Picaxe 08м
setfreq m4

; Конфигурации
Символ SPEED = 3; чем меньше значение, тем выше скорость изменения цвета
Символ SPEED_VARIATIONS = 7; определяет, сколько разной скоростью изменения цвета она должна использовать

, Карта контакты
Символ RED0_PIN = 0
Символ GREEN0_PIN = 1
Символ BLUE0_PIN = 2

, Карта контактный значения сувениры
; Вывод значение текущей яркости светодиодов
Символ red0 = b0
Символ green0 = b1
Символ blue0 = b2

, Карта pin_deltas на сувениры
, Дельта скорости изменения яркости
Символ red0_delta = b3
Символ green0_delta = b4
Символ blue0_delta = b5

, Темп значения для подпрограммы
Символ delta_w = w3
Символ TMP = b7

, Подпрограммы параметры
Символ контактный = b8
Символ вал = b9
символ дельта = b10

; Инициализировать все
red0 = 0
green0 = 70
blue0 = 200
red0_delta = 1
green0_delta = 5
blue0_delta = 9

; Начало серво режим
, Отмечают, что "servopos RED0_PIN, 255» оказывает не горит!
, "Servopos RED0_PIN, 0" делает его очень тусклым, но горит. Это ошибка в PICAXE?
серво RED0_PIN, 255
серво GREEN0_PIN, 255
серво BLUE0_PIN, 255

; Этот код, как петля () в Arduino
главная:
; Эмуляции вызова функции в функцию менее среде
вывод = RED0_PIN: значение = red0: дельта = red0_delta: GoSub set_color_val: red0 = значение: red0_delta = дельта
вывод = GREEN0_PIN: значение = green0: дельта = green0_delta: GoSub set_color_val: green0 = значение: green0_delta = дельта
вывод = BLUE0_PIN: значение = blue0: дельта = blue0_delta: GoSub set_color_val: blue0 = значение: blue0_delta = дельта
Перейти на главную

; Данный подпункт регулирует яркость светодиода и дельта
set_color_val:
вал = вал + дельта
если дельта <128 и вал <дельта то, FWD
случайный delta_w
дельта = дельта SPEED_VARIATIONS% + 1
дельта = 255 - дельта
Вал = 255
ElseIf дельта> = 128 и вал> = дельта то, обратном
случайный delta_w
дельта = дельта SPEED_VARIATIONS% + 1
Вал = 0
ENDIF
TMP = значение - 1; servopos ошибка обхода
, Да, servopos занимает постоянная в качестве первого аргумента: (
Если PIN-= то RED0_PIN
servopos RED0_PIN, TMP
ElseIf контактный = GREEN0_PIN то
servopos GREEN0_PIN, TMP
ElseIf контактный = BLUE0_PIN то
servopos BLUE0_PIN, TMP
ENDIF
Пауза SPEED
возвращать

, См. мой другой блог и http://rtfms.com RTFMs видеоблоге на YouTube для демо
, Это описано в эпизоде ​​# 7: микроконтроллер Соответствует ювелирных изделий

Несколько замечаний по поводу этого кода:
- Он реализует "RGB настроение лампа". Вы можете изменить его для ваших нужд
- С PICAXE продолжает цикл все время я подозреваю, что потребляемая мощность ужасно. Все это хорошо в течение часа по крайней мере, когда власти двух маленьких батарей, как показано в блоге RTFMs видео эпизод # 7
- Выполнение PICAXE08 это так. Как вы можете видеть на видео RTFMs свет слегка мерцающим. Вы, наверное, не заметят его на глядя на индикатор в лицо, но и видео камера делает эффект заметен. На самом деле в настроении лампы я даже нравится :)
- Размер программы составляет 146 байт (из 256 доступных на 08). Вы, наверное, можно оптимизировать это немного.
- RTFMs видео о проекте настроение лампы, упомянутые здесь будет выпущен чуть позже

Это сообщение опубликовано в оборудование , Как , другие .

Нет комментариев

Комментариев пока нет

Оставить комментарий

Карта сайта (С) Андрей Михальчук, 2005-2008