Difference between revisions of "RGB LED"

From Sketching with Hardware at LMU Wiki
Jump to navigation Jump to search
m
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
= Description =
 
= Description =
This RGB LED is not smart - you use it like 3 LEDs..
+
A regular RGB LED is basically 3 LEDs (one red, one green, one blue) in parallel. This is not a smart LED, for smart LEDs see [[LED Ring NeoPixel]].
  
[[File:RgbIMG 9775.jpg]]
+
[[File:Rgb-foto.JPG|200px]]
  
 
= How to connect it electrically =
 
= How to connect it electrically =
Text
+
The RGB LED is connected like 3 paralell LEDs. It is important that you need one resistor for each color! The resistor goes before the LED and not onto the common ground or common VCC.
 +
There are different types: some have common cathode (GND/-), other versions with common anode (+/VCC). It is easy to check: connect Pin 1 via resistor to VCC and Pin 2 to GND - if it lights up it is common cathode.
 +
You can use any free digital out pins on your board. In the example sketch it is 14, 26, 27 (good for Wifi-Kit ESP32) and you could use 2, 3, 4 for Aruduino Nano Connect RP2024.
  
Image(s)
+
[[File:Rgb-led.PNG|800px]]
  
 
= How to control it in MicroPython =
 
= How to control it in MicroPython =
 +
Switching indiviual color on and off
 
<syntaxhighlight lang="python" line='line'>
 
<syntaxhighlight lang="python" line='line'>
# todo
+
from machine import Pin
# code goes here
+
 
 +
blue = Pin(26, Pin.OUT)
 +
green = Pin(27, Pin.OUT)
 +
red = Pin(14, Pin.OUT)
 +
 
 +
blue.on()
 +
green.off()
 +
red.off()
 +
</syntaxhighlight>
 +
 
 +
 
 +
Controlling intensity
 +
<syntaxhighlight lang="python" line='line'>
 +
from machine import Pin, PWM
 +
 
 +
blue = PWM(Pin(26))
 +
green = PWM(Pin(27))
 +
red = PWM(Pin(14))
 +
 
 +
# set PWM frequency to 1000Hz
 +
blue.freq(1000)
 +
green.freq(1000)
 +
red.freq(1000)
 +
 
 +
# have blue on at about 50% intesity
 +
blue.duty(512)
 +
green.duty(0)
 +
red.duty(0)
 +
 
 +
# have red and green at full intesity (mixed color)
 +
blue.duty(0)
 +
green.duty(1023)
 +
red.duty(1023)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
= A small Program in MicroPython =
 
= A small Program in MicroPython =
 
<syntaxhighlight lang="python" line='line'>
 
<syntaxhighlight lang="python" line='line'>
# todo
+
from machine import Pin, PWM
# code goes here
+
from time import sleep
 +
 
 +
# connect it to Pin 26, 27, and 14
 +
blue = PWM(Pin(26))
 +
green = PWM(Pin(27))
 +
red = PWM(Pin(14))
 +
 
 +
# base frequency for PWM is 1000Hz
 +
blue.freq(1000)
 +
green.freq(1000)
 +
red.freq(1000)
 +
 
 +
# this is a function to allows to give an "RGB"-Color to the LED
 +
# duty take an argument from 0 to 2023... by multiplying the 0..255 by 4 we get 0 to 2020 - which seems close enough
 +
def rgb(r=255,g=255,b=255):
 +
  blue.duty(b*4)          # set duty cycle
 +
  green.duty(g*4)          # set duty cycle
 +
  red.duty(r*4)          # set duty cycle
 +
 
 +
# show some cases....
 +
while True:
 +
  rgb(255,255,255) # white
 +
  sleep(1)
 +
  rgb(0,0,0) # off = black
 +
  sleep(1)
 +
  rgb(255,0,0) # red
 +
  sleep(1)
 +
  rgb(0,255,0) # gree
 +
  sleep(1)
 +
  rgb(0,0,255) # blue
 +
  sleep(1)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
text
+
[[file:Rgb-setup1.JPG|300px]]
 +
 
 +
[[file:Rgb-setup2.JPG|300px]]
  
image(s)
+
[[file:Rgb-setup3.JPG|300px]]
  
 
= Related Tutorial Videos =
 
= Related Tutorial Videos =
change to the right video
+
In this part of the tutorial, we show how to connect an RGB-LED and programming it with Micropython. We first look at what an RGB LED is by building one with 3 separate LEDs. We then look at switching it on and off and how to set the color using the duty cycle in the PWM output.
 
 
<youtube>0KGgYsEZcZM</youtube>
 
  
 +
<youtube>https://youtu.be/K2m6ttZ1bJw</youtube>
  
= Background =
 
text
 
  
image(s)
+
[[Category:Actuators]]
 +
[[Category:Electronic components]]

Latest revision as of 09:32, 14 June 2024

Description[edit]

A regular RGB LED is basically 3 LEDs (one red, one green, one blue) in parallel. This is not a smart LED, for smart LEDs see LED Ring NeoPixel.

Rgb-foto.JPG

How to connect it electrically[edit]

The RGB LED is connected like 3 paralell LEDs. It is important that you need one resistor for each color! The resistor goes before the LED and not onto the common ground or common VCC. There are different types: some have common cathode (GND/-), other versions with common anode (+/VCC). It is easy to check: connect Pin 1 via resistor to VCC and Pin 2 to GND - if it lights up it is common cathode. You can use any free digital out pins on your board. In the example sketch it is 14, 26, 27 (good for Wifi-Kit ESP32) and you could use 2, 3, 4 for Aruduino Nano Connect RP2024.

Rgb-led.PNG

How to control it in MicroPython[edit]

Switching indiviual color on and off

1 from machine import Pin
2 
3 blue = Pin(26, Pin.OUT)
4 green = Pin(27, Pin.OUT)
5 red = Pin(14, Pin.OUT)
6 
7 blue.on()
8 green.off()
9 red.off()


Controlling intensity

 1 from machine import Pin, PWM
 2 
 3 blue = PWM(Pin(26))
 4 green = PWM(Pin(27))
 5 red = PWM(Pin(14))
 6 
 7 # set PWM frequency to 1000Hz
 8 blue.freq(1000)
 9 green.freq(1000)
10 red.freq(1000)
11 
12 # have blue on at about 50% intesity
13 blue.duty(512)
14 green.duty(0)
15 red.duty(0)
16 
17 #  have red and green at full intesity (mixed color)
18 blue.duty(0)
19 green.duty(1023)
20 red.duty(1023)

A small Program in MicroPython[edit]

 1 from machine import Pin, PWM
 2 from time import sleep
 3 
 4 # connect it to Pin 26, 27, and 14
 5 blue = PWM(Pin(26))
 6 green = PWM(Pin(27))
 7 red = PWM(Pin(14))
 8 
 9 # base frequency for PWM is 1000Hz
10 blue.freq(1000)
11 green.freq(1000)
12 red.freq(1000)
13 
14 # this is a function to allows to give an "RGB"-Color to the LED
15 # duty take an argument from 0 to 2023... by multiplying the 0..255 by 4 we get 0 to 2020 - which seems close enough
16 def rgb(r=255,g=255,b=255):
17   blue.duty(b*4)          # set duty cycle
18   green.duty(g*4)          # set duty cycle
19   red.duty(r*4)          # set duty cycle
20 
21 # show some cases....
22 while True:
23   rgb(255,255,255) # white
24   sleep(1)
25   rgb(0,0,0) # off = black
26   sleep(1)
27   rgb(255,0,0) # red
28   sleep(1)
29   rgb(0,255,0) # gree
30   sleep(1)
31   rgb(0,0,255) # blue
32   sleep(1)

Rgb-setup1.JPG

Rgb-setup2.JPG

Rgb-setup3.JPG

Related Tutorial Videos[edit]

In this part of the tutorial, we show how to connect an RGB-LED and programming it with Micropython. We first look at what an RGB LED is by building one with 3 separate LEDs. We then look at switching it on and off and how to set the color using the duty cycle in the PWM output.