Подключаем к Arduino Светодиодную RGB ленту на 12v
В этой публикации я расскажу об одном из вариантов подключения к Arduino светодиодной ленты на 12 Вольт, а заодно и поделюсь готовым кодом скетча, плавно меняющим цвета ленты, что позволит сделать интересную подсветку с эффектом смены цветов и плавного затухания.
Для начала нам потребуются следующие компоненты:
Arduino (теоретически любая, вплоть до Digispark Attiny85 ) — 1 шт.
Транзисторы TIP120 или TIP121,TIP122,IRF530,IRF540 — 3 шт.
Резистор 1 кОм — 3 шт.
RGB Светодиодная лента на 12 Вольт — 1 шт.
Источник питания 12 Вольт под ленту — 1 — шт.
Источник питания 5 Вольт под Arduino- 1 — шт.
При сборке своих вариантов, вы можете использовать любые NPN-транзисторы, такие как TIP-120, TIP-121, TIP-122 и так далее или N-канальные МОП-транзисторы, такие как IRF540, IRF 530, подбирая по своим возможностям и текущей необходимости. Данные варианты различаются только максимальным значением тока. Например, если вы используете светодиодную ленту RGB очень большой длины, вам необходимо подать на нее больше тока, соответственно и транзистор подбираете с учетом того, чтобы он выдержал данный ток (и немножко с запасом), В моем примере лента не очень большая и внешний источник питания с током не превышающим 2 Ампера, поэтому покупались транзисторы TIP120. Его схема приведена ниже.
Общая схема подключения, в опрощенном виде, выглядит следующим образом :
Сборка схемы по шагам проста и не должна занять много времени.
1. Подключите эмиттеры всех транзисторов к заземлению Arduino, вывод GND.
2. Подключите минус источника питания 12В к выводу GND на Arduino.
3. Подключите плюс от источника питания 12В, к контакту 12В светодиодной ленты.
4. Подключите резисторы 1 кОм, к базе каждого из транзисторов, согласно схеме.
5. Подключите выводы D9, D10, D11 к другому концу резисторов, согласно схеме.
6. Подсоедините провода от выводов R, G и B светодиодной ленты RGB к коллектору транзистора (средний вывод), согласно схеме.
7. Тщательно проверьте все подключения и изолируйте (термоусадками например).
9. Залейте в Arduino готовый скетч. Соблюдать цвета не обязательно.
10. Готово!
При указанных выше вариантах, подразумевается, что питание на ленту у нас идет отдельно, а на плату Arduino отдельно, через USB гнездо. Однако, зачастую это путаница и лишние провода. Можно обойтись лишь одним блоком питания на 12 Вольт и запитать как ленту, так и плату. В этом случае, схема подключения несколько иная, главное вынуть провод USB и убрать его подальше.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
//https://blog.mons.ws const int redPin = 9; const int grnPin = 10; const int bluPin = 11; long intens; void setup() { pinMode(redPin, OUTPUT); pinMode(grnPin, OUTPUT); pinMode(bluPin, OUTPUT); intens = random(10, 300); } void loop() { if (analogRead(intens) <= 200) { redtoyellow(); yellowtogreen(); greentocyan(); cyantoblue(); bluetomagenta(); magentatored(); } else if (analogRead(intens) >= 201) { digitalWrite(redPin, LOW); digitalWrite(grnPin, LOW); digitalWrite(bluPin, LOW); } } void redtoyellow() { digitalWrite(redPin, HIGH); digitalWrite(bluPin, LOW); for(byte i=1; i<100; i++) { byte on = i; byte off = 100-on; for( byte a=0; a<100; a++ ) { digitalWrite(grnPin, HIGH); delayMicroseconds(on); digitalWrite(grnPin, LOW); delayMicroseconds(off); } } } void yellowtogreen() { digitalWrite(grnPin, HIGH); digitalWrite(bluPin, LOW); for(byte i=1; i<100; i++) { byte on = 100-i; byte off = i; for( byte a=0; a<100; a++ ) { digitalWrite(redPin, HIGH); delayMicroseconds(on); digitalWrite(redPin, LOW); delayMicroseconds(off); } } } void greentocyan() { digitalWrite(grnPin, HIGH); digitalWrite(redPin, LOW); for(byte i=1; i<100; i++) { byte on = i; byte off = 100-on; for( byte a=0; a<100; a++ ) { digitalWrite(bluPin, HIGH); delayMicroseconds(on); digitalWrite(bluPin, LOW); delayMicroseconds(off); } } } void cyantoblue() { digitalWrite(bluPin, HIGH); digitalWrite(redPin, LOW); for(byte i=1; i<100; i++) { byte on = 100-i; byte off = i; for( byte a=0; a<100; a++ ) { digitalWrite(grnPin, HIGH); delayMicroseconds(on); digitalWrite(grnPin, LOW); delayMicroseconds(off); } } } void bluetomagenta() { digitalWrite(bluPin, HIGH); digitalWrite(grnPin, LOW); // fade up red for(byte i=1; i<100; i++) { byte on = i; byte off = 100-on; for( byte a=0; a<100; a++ ) { digitalWrite(redPin, HIGH); delayMicroseconds(on); digitalWrite(redPin, LOW); delayMicroseconds(off); } } } void magentatored() { digitalWrite(redPin, HIGH); digitalWrite(grnPin, LOW); for(byte i=1; i<100; i++) { byte on = 100-i; byte off = i; for( byte a=0; a<100; a++ ) { digitalWrite(bluPin, HIGH); delayMicroseconds(on); digitalWrite(bluPin, LOW); delayMicroseconds(off); } } } |
При необходимости, можно внести свои правки в скетч, ускорив смену цветов или поменяв их местами, все просто.
Дальше останется только подключить USB провод к Arduino и включить блок питания на 12 Вольт. Если все собрано правильно, перед вами должно появиться что-то вроде того, что на фото ниже, с плавной сменой цветов.
Делитесь своими вариантами в комментариях. 🙂
Вы нашли это полезным ?!
Если хотите отблагодарить, угостите чашечкой кофе ( yoomoney or ko-fi or boosty )