|
Простой RGB контроллер
|
|
| nestandart | Дата: Среда, 14.11.2012, 21:50 | Сообщение # 1 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 23
Репутация: 0
Статус: Offline
| Простой RGB контроллер на основе ардуино.
Устройство представляет собой простой RGB контроллер с ручным управлением. Итак. Нам понадобится 1. Метр светодиодной ленты (RGB) 2. Микросхема ULN2003 3. Переменный резистор номиналом от 1к до 20к. 4. Ну конечно же любая ардуино совместимая плата. 5. Источник питания 12в 1А 6.Провода , паяльник , припой и т.д.
RGB лента.
Это гибкая плата на которой находится определенное количество светодиодов . Количество может быть разным (30 , 60 , 120 светодиодов на метр). Мой выбор пал на ленту с шестьюдесятью светодиодами. Лента имеет четыре контакта: общий – плюс , R-канал (красный) , G –канал (зеленый) и B-канал (синий). Каналы коммутируются по GND.
Каждый пиксель ленты это три светодиодных кристалла расположенные в одном корпусе под общей линзой. Лента питается от 12в и потребление ток около 600-900мА/метр. Т.е. каждый канал потребляет от 200 до 300мА/метр. Лента имеет встроенные гасящие (токоограничительные) резисторы так что можно смело подключать ее к любому питанию не боясь сжечь.
Драйвер светодиодной ленты.
Дело в том что пин микроконтроллера (ардуино) способен отдавать номинальный ток 20мА и максимальный 40мА (до этого доводить не стоит). Если превысить эти значения то, в лучшем случае, выгорит пин ардуино, в худшем весь контроллер. Для усиления токов и напряжений применяют, так называемые, драйверы.
В роли драйвера мы будем использовать универсальную сборку транзисторных ключей –ULN2003. Эта микросхема содержит в себе семь составных транзисторов Дарлингтона, работающих в режиме ключей. Каждый из семи каналов микросхемы способен выдержать ток до 500мА. Так же, каналы можно соединять параллельно для увеличения максимального тока.
Пример. Для подключения двух метров ленты (потребление тока около 600мА на канал) Нужно запаралелить каналы драйвера. Вот так.
Микросхема работает от 12в, имеет общий плюс и коммутирует каналы по минусу.
Переменный резистор.
Переменный резистор (в дальнейшем потенциометр) имеет три вывода – два крайних и один средний. Крайний вывод (любой) подключается к +5в, противоположный крайний к gnd, средний к пину АЦП ардуино.
Добавлено (14.11.2012, 21:50) --------------------------------------------- Схема готового устройства.
Как вы можете видеть, здесь задействовано только три канала микросхемы (больше нам и не нужно). VD1 - синий канал. VD2 – зеленый канал. VD3 – красный канал.
Алгоритм программы.
Устройство работает так. При вращении потенциометра происходит плавная смена цветов от красного до фиолетового (строго по спектру).
Включили контроллер – горит красный, начали вращать потенциометр – красный плавно переходит в оранжевый, далее – оранжевый переходит в желтый, желтый в зеленый, зеленый в голубой, голубой в синий, синий в розовый, розовый в красный.
Сообщение отредактировал nestandart - Четверг, 15.11.2012, 13:52 |
| |
| |
| nestandart | Дата: Четверг, 15.11.2012, 14:30 | Сообщение # 2 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 23
Репутация: 0
Статус: Offline
| Управляющая программа.
Code int potpin=0; int potpin2=0; int potpin3=0; void setup() { pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(14,INPUT); } void loop ()
{ potpin=analogRead(14); potpin=(potpin*2)-(potpin/2);
if(potpin<=512) { if(potpin>=0 && potpin<=255) { analogWrite(11,0); analogWrite(9,255); analogWrite(10,potpin);
} else {
analogWrite(11,0); analogWrite(9,(512-potpin)); analogWrite(10,255);
}
} //*******************************************************//
potpin2=(potpin-509);
if(potpin2<=0) { potpin2=0; } else { if(potpin2<=509) { if(potpin2>0 && potpin2<=255) { analogWrite(9,0); analogWrite(10,255); analogWrite(11,potpin2);
} else { analogWrite(9,0); analogWrite(10,(509-potpin2)); analogWrite(11,255);
}
} }
//***************************************************//
potpin3=(potpin-1023); if(potpin3<=0) { potpin3=0; } else { if(potpin3<=509) { if(potpin3>0 && potpin3<=255) { analogWrite(10,0); analogWrite(11,255); analogWrite(9,potpin3); } else { analogWrite(10,0); analogWrite(11,(509-potpin3)); analogWrite(9,255); } } } }
Добавлено (14.11.2012, 21:50) --------------------------------------------- Осталось только собрать устройство и прошить программу в ардуино.
Добавлено (15.11.2012, 13:53) --------------------------------------------- Ну вот мы и разобрались с ручным управлением, теперь будем автоматизировать процесс. Сделаем так чтобы цвета менялись сами. Теперь, вместо потенциометра, будет оператор for.
Программа будет выглядеть вот так.
Code int potpin=0; int potpin2=0; int potpin3=0; int potpin4=0; int potpin5=0; int potpin6=0;
void setup() { pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(14,INPUT); randomSeed(analogRead(0)); } void loop ()
{ for(potpin = 0 ;potpin <=255; potpin+=1)//увеливаем яркость зеленого канала на 1 за один цикл оператора for { analogWrite(11,0); analogWrite(9,255); analogWrite(10,potpin); delay(10);//ждем } //далее все аналогично for(potpin2 =255 ;potpin2 >=0; potpin2-=1) { analogWrite(11,0); analogWrite(9,potpin2); analogWrite(10,255); delay(10); }
for(potpin3 = 0 ;potpin3 <=255; potpin3+=1) { analogWrite(11,potpin3); analogWrite(9,0); analogWrite(10,255); delay(10); } for(potpin4 =255 ;potpin4 >=0; potpin4-=1) { analogWrite(11,255); analogWrite(9,0); analogWrite(10,potpin4); delay(10); } for(potpin5 = 0 ;potpin5 <=255; potpin5+=1) { analogWrite(11,255); analogWrite(9,potpin5); analogWrite(10,0); delay(10); } for(potpin6 =255 ;potpin6 >=0; potpin6-=1) { analogWrite(10,0); analogWrite(9,255); analogWrite(11,potpin6); delay(10); } }
Добавлено (15.11.2012, 13:54) --------------------------------------------- Теперь добавим ручное управление скоростью смены цветов (все тот же потенциометр).
Программа.
Code int potpin=0; int potpin2=0; int potpin3=0; int potpin4=0; int potpin5=0; int potpin6=0; int speed=0;
void setup() { pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(14,INPUT); randomSeed(analogRead(0)); } void loop ()
{ speed=(analogRead(14)/20);//считываем значение потенциометра и делим его на 20 if(speed<1)//если значение переменнойменьше одного { speed=1; //приравниваем его к 1 } for(potpin = 0 ;potpin <=255; potpin+=1)//увеливаем яркость зеленого канала на 1 за один цикл оператора for { analogWrite(11,0); analogWrite(9,255); analogWrite(10,potpin); delay( speed);//ждем } //далее все аналогично for(potpin2 =255 ;potpin2 >=0; potpin2-=1) { analogWrite(11,0); analogWrite(9,potpin2); analogWrite(10,255); delay( speed); }
for(potpin3 = 0 ;potpin3 <=255; potpin3+=1) { analogWrite(11,potpin3); analogWrite(9,0); analogWrite(10,255); delay( speed); } for(potpin4 =255 ;potpin4 >=0; potpin4-=1) { analogWrite(11,255); analogWrite(9,0); analogWrite(10,potpin4); delay( speed); } for(potpin5 = 0 ;potpin5 <=255; potpin5+=1) { analogWrite(11,255); analogWrite(9,potpin5); analogWrite(10,0); delay( speed); } for(potpin6 =255 ;potpin6 >=0; potpin6-=1) { analogWrite(10,0); analogWrite(9,255); analogWrite(11,potpin6); delay( speed); } }
В следующих статьях покажу более интересные эффекты и работу контроллера в связке с другими устройствами, например с датчиком препятсятвий.
Это устройство можно применить как ночник, гирлянду или подсветку салона авто.
Nestandart 2012.
На выходных собираюсь написать вам "Трактат о кнопках" - довольно емкая тема.
|
| |
| |
| nestandart | Дата: Четверг, 15.11.2012, 14:41 | Сообщение # 3 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 23
Репутация: 0
Статус: Offline
| Скажите Serg вас интересуют только проекты с непосредственным применением ардуино ? Просто я сейчас я делаю очередного робота , получилась довольно не плохое самодельное танковое шасси. Вобщем хотел бы его выложить (чертежики ,детальные фото, коментарии по сборке и т.д.). Как вы наэто смотрите ?
|
| |
| |
| Serg | Дата: Четверг, 15.11.2012, 15:04 | Сообщение # 4 |
|
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| Если по хорошему, насчет своих планов и проектов, Вам нужно обратится сюда
|
| |
| |
| GRACH | Дата: Пятница, 16.11.2012, 20:24 | Сообщение # 5 |
 dvrobot.ru
Группа: Администраторы
Сообщений: 111
Репутация: 16181
Статус: Offline
| nestandart, Доброе время !! Информация о Вашем новом проекте уже где то публиковалась ? Если нет, то мы готовы рассмотреть Ваш проект. Напомню, что вся информация,о том как можно продать свою : идею, план, проект или что то еще, что связано с Arduino , радиоэлектроникой ,механикой роботостроением, Вы можете узнать на сайте компании ДВ Робот dvrobot.ru
|
| |
| |
| nestandart | Дата: Пятница, 16.11.2012, 22:20 | Сообщение # 6 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 23
Репутация: 0
Статус: Offline
| GRACH, а вы кто ? Админ сайта ? Если вы , под "Новым проектом" , имеете в виду "Трактат о кнопках" , то это не проект. Это статья о том как правильно работать с кнопкой (кнопками) с множеством программных примеров и бесценным опытом. До этого данная статья ни где не публиковалась (она еще, даже, не дописана).
|
| |
| |
| Serg | Дата: Пятница, 16.11.2012, 22:54 | Сообщение # 7 |
|
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| GRACH - это самый главный админ и представитель магазина DV ROBOT. он уполномочен во всех вопросах.а я так, один из юзеров...
|
| |
| |
| GRACH | Дата: Суббота, 17.11.2012, 18:59 | Сообщение # 8 |
 dvrobot.ru
Группа: Администраторы
Сообщений: 111
Репутация: 16181
Статус: Offline
| nestandart, доброе время !! Да, я один из админов этого форума.Со мной решаются "партнерские вопросы" , с администратором Serg, решаются технические вопросы форума, а так же информационные аспекты проектов, опубликованных на нашем форуме.
А под вашим "Новым проектом" я имел ввиду "самодельное танковое шасси"
P.S. Serg, далеко не юзер!!
|
| |
| |
| muvey | Дата: Суббота, 17.11.2012, 20:47 | Сообщение # 9 |
 220 Вольт
Группа: Пользователи
Сообщений: 305
Репутация: 1
Статус: Offline
| nestandart, так а шасси покажуть нам?
Ex nihilo nihil fit
|
| |
| |
| nestandart | Дата: Суббота, 17.11.2012, 21:44 | Сообщение # 10 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 23
Репутация: 0
Статус: Offline
| Сегодня ночью . Разберу и соберу шасси под детальную фотосъемку. Статью опубликую не раньше вечера воскресенья.
Сообщение отредактировал nestandart - Суббота, 17.11.2012, 21:44 |
| |
| |
| muvey | Дата: Суббота, 17.11.2012, 21:57 | Сообщение # 11 |
 220 Вольт
Группа: Пользователи
Сообщений: 305
Репутация: 1
Статус: Offline
| nestandart, ясно,бум ждать  Добавлено (17.11.2012, 21:57) --------------------------------------------- nestandart, а электроника там есть,или ток механика?
Ex nihilo nihil fit
|
| |
| |
| nestandart | Дата: Суббота, 17.11.2012, 22:14 | Сообщение # 12 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 23
Репутация: 0
Статус: Offline
| Только механика на основе гусениц tamia. Электронику делаю сейчас , но публяковать врядли буду.
|
| |
| |