ws2812 как реализовать индикацию...
- Войдите на сайт для отправки комментариев
Сб, 30/08/2014 - 14:38
Я в программировании чайник,постепенно впитываю азы.
Возникла необходимость реализовать индикацию на драйверных светодиодах WS2812 (куплены).
На данных момент существуют библиотеки от Адафрута и Фастлэд-ФастИсп.
Задача:есть четыре полоски по восемь светодиодов каждая,итого 32 с.д.
Режимы индикации,предположим все с.д. горяд белым,нужно в какой то момент времени (при включеных белых),помаргать крайними диодами другого цвета (на концах полосок),или,только одим (при горящих белых).
Как,какими алгоритмами реализуются такие возможности?
http://habrahabr.ru/post/200200/
...читал раз пять. Эа статьъя не отвечает на мой вопрос. Управлять этим всем должна 328я мега (без участия ПК),подсвечивающая входящие события.
Меня интересуют приблизительные шаблоны алгоритмов кода...что бы реализовать такую индикацию.
https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library
)))))))) спасибо,но это я тоже видел,меня,как это сказать) сама математика интересует,которая базируется на готовых библиотеках,что бы самому заново асм обработки не писать.
Пытался ковырятся в готовой программе от адафрута,без успеха,т.к. мало опыта в написании такой математики.
Тоесть вам очень трудно скачать пример и посмотреть как таам все устроено?
Все возможне примеры скачаны. Сложно мозг включить в это направление и недостаток опыта написания алгоритмов)
Поэтому и спрашиваю какие подходы возможны.
я тут (прошу прощения за игнор ветки,не всегда инет в кармане),подключил 8 сд временно к 2560,
Забегая дальше,контроллер должен парсить УАРТ (а именно МАВЛИНК-протокол автопилота ЛА),и подсвечивать нужные события. Комбинаций подсветки и эффектов очень много.
моя реализация кода:
Возникли первые мысли,ведь комбинаций индикации много,если таким образом подходить,то памяти контроллера не хватит,сдесь должна быть математика...+ две скорости моргания
Например:
Четыре ленты по 8 сд.
Подаем питание:
1)две первые ленты (передние) горят - желтым
две задние горят красным.
2)Наступило событие А (напарсилось но УАРТ)
две передние мигают синим с частотой 1Гц
две задние горят краным.
3)Событие Б...
две передние горят синим
две задние горят краным
....как то так)
Ура уже начальные эффекты стали получатся,но массив очень большой)
SU-27-16 ,подскажите,что бы такие массивы не плодить их можно как то уменьшить,т.е. математически описать?
Это только 5% того,что нужно)
ваши хотения завсегда мона прописать функциями....
....дык, напишите их !!!!
Если не сложно,приведите пример...я буду понимать куда мне дальше "учиться"
...а это где должно это все работать -
http://forum.rcdesign.ru/blogs/121712/blog19060.html
> Ура уже начальные эффекты стали получатся,но массив очень большой)
моя и сам в аухее, чё виртуально подсказал :)
вы задачку обрисуйте точнее.... куда думать-то .....
Подаем потание на ЛА:
Полетный контроллер инициализируется,далее ищит спутники (0,1,2,5....12 нашлось спутников)
И эта информация о состоянии контроллера льется по УАРТ протоколом МАВЛИНК.
В это время,мой любопытный контроллер слушает УАРТ и пытается выловить (условно) кол-во пойманных спутников...
1)GPS=0
все полоски красные
2)GPS-1-3
передние полоски желтые,задние красные
3)GPS-3-6
передние мигают синим,задние красные
4)GPS=10
передние синие,задние красные
...далее долго расписывать
Мне необходимо начальное понимание кодинга,ну и как можно оптимизировать массивы подсветки за счет функций,примеры...я буду видеть свои пробелы...(я знаю они очень глубокие)
Нужно побольше попкорма приволочь. А то тут еще будут поиски любопытного мк, который будет слушать uart от неизвестного мк с туманными посланиями.
Как можно реализовать плавное затухание такого сегмента с значения с 255 до 100?
// strip.setPixelColor( n , red , green , blue );
15
strip1.setPixelColor( 0 , 255 , 0 , 0 );
16
strip1.setPixelColor( 1 , 255 , 0 , 0 );
17
strip1.setPixelColor( 2 , 255 , 0 , 0 );
18
strip1.setPixelColor( 3 , 255 , 0 , 0 );
19
strip1.setPixelColor( 4 , 255 , 0 , 0 );
20
strip1.setPixelColor( 5 , 255 , 0 , 0 );
21
strip1.setPixelColor( 6 , 255 , 0 , 0 );
22
strip1.setPixelColor( 7 , 255 , 0 , 0 );
...посмотреть весь набор методов в библиотеке
Не совсем понятно,набор методов расположен в каком файле,я видел только саму программу эффектов...
Спасибо,буду пробовать как до контроллера доберусь
от 255 до 0 за 5,1 сек, полсек темнота, от 0 до 255 за 5,1 сек
https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library
There are two ways to set the color of a pixel. The first is:
The next three arguments are the pixel color, expressed as red, green and blue brightness levels, where 0 is dimmest (off) and 255 is maximum brightness.
To set the 12th pixel (#11, counting from 0) to magenta (red + blue), you could write:
Да,это описание я видел у них на сайте,мне показалось,что оно не полное...
полное описание и реализация в скачанной библиотеке - это файлы xxxxxxx.h и xxxxxxx.cpp
xxxxxxx.h - в этом файле перечислено всё, чем обладает описанный библиотекой класс. xxxxxxx.cpp - файл реализации
Теперь понятно,иду перекапывать базовые понятия
эт сюда тогда - http://arduino.ru/Reference
Вот она! Магия функций!
Можно почти пятью строчками генерить громадные массивы!
Спасибо СУ и Коллеге с другого форума!
:)
вы забыли Пухлявому сказать спасибо, ето только кажется, что он злобный... он хороший...
15
int
val_b = 255;
16
int
val_g = 255;
17
int
val_r = 255;
зачем ? можно просто :
15
int
val_b;
16
int
val_g;
17
int
val_r;
....и перенести ето в секцию
01
void
setup
( )
02
{
03
strip1.begin();
// инициализировали объект "strip1"
04
strip1.show();
// погасили все 8 СД
05
}
...в строку 02_1
строки 12 и 13 - туда же - зачем в лупе периодически объявлять эти переменные ? так можно процессор загонять вУсмерть :(
и ето НЕ функция !!!!!!!!! ето перебор всех значений в цикле..... функции - помощнее тупого перебора значений :)-
Мучительный вопрос...если в 328 залить прогу,которая юзает уарт,328 в последствии будет принимать традиционным образом последующие прошивки usb232>uart328 (у нее он один)? или придется уже шить через ISP?
Мучительный вопрос навстречу. Люди которые используют ком порт для отладки скечей, как же они потом перепрошивают новый скеч через ком порт? Наверное если сделать ресет мк то первые несколько секунд он ожидает новой прошивки через ком порт и только не получмв ничего, запускает старый скеч?
О! Золотые слова! - Наверное если сделать ресет мк то первые несколько секунд он ожидает новой прошивки через ком порт и только не получмв ничего, запускает старый скеч?
Спасибо.
О! Золотые слова! - Наверное если сделать ресет мк то первые несколько секунд он ожидает новой прошивки через ком порт и только не получмв ничего, запускает старый скеч?
Спасибо.
Говорят полезно читать описание игрушек с которыми играешь. Но тут есть нюанс. Некоторым МК ресет не помогает :) у них другие запросы.
опыта мало
...можно развернуть вопрос,лучше через ссыль
опыта мало
...можно развернуть вопрос,лучше через ссыль
Там вон наверху есть КОНТРОЛЕРЫ АРДУИНО там жмакаешь и читаешь. Не находиш че ищешь, набираешь наименование контролера и слово datasheet и там иногда рукопись в 2000 страниц :)
кошмар
...а букварь для недолеких есть с одной буквой?
Заинтересовался адресными лентами, и сразу столкнулся с делемой.
взял за основу пример из библиотеки
http://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#prepare_arduino
Эффект
LEDStrip Effect – Multi Color Bouncing Balls
Эфект реализован на одну ленту, а я хочу добавить к ардуине еще несколько лент и на них другие эффекты повесить.
2 дня ковыряю ничего не получаеться. мои познания ардуины сводяться к найти, скопировать и вставить, в большинстве случаев прокатывает, а тут нет :(
помогите, может ктото делал разные эффекты на разные выходы одной ардуины?
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel( 8 , 4 , NEO_GRB + NEO_KHZ800 );
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel( 8 , 5 , NEO_GRB + NEO_KHZ800 );
strip1.setPixelColor( 0 , 255 , 255 , 255 );
// подожгём 1-ый СД белым. лента 1
strip2.setPixelColor( 1 , 255 , 0 , 0 );
// подожгём 2-ой СД красным. лента 2
так этж получается можно с разных ног лентами управлять по разному..... можно не кольцевать гирлянду чели?????
так этж получается можно с разных ног лентами управлять по разному..... можно не кольцевать гирлянду чели?????
Скорее всего можно (не проверял), но и по одному пину можно по-разному управлять отдельными кусками ленты (даже отдельными светодиодами).
Основное ограничение в оперативной памяти Ардуины: на каждый диод расходуется 3 байта, поэтому памяти Uno/Nano хватит только на 500 светодиодов.
ПРОШУ ПОМОШИ
требуется сделать переменную в кол диодов
вот весь код, все работает прекрасно кроме выбора кол ва диодов от величины канала
это DMX гирлянда управляемая от компа в реальном времени
Я в программировании чайник,постепенно ...
как говориться: " ноу комент". за такой флуд забаньте его админы. только голову морочит людям.
Ну дак с компа и передавай первім параметром число светодиодов.
как говориться: " ноу комент". за такой флуд забаньте его админы. только голову морочит людям.
Да нужно когото забанить, день учителя скора, нужна ритуальная жертва ;)