RGB LED: Difference between revisions

From Sketching with Hardware at LMU Wiki
Jump to navigation Jump to search
Line 8: Line 8:
There are different types - the one we use has a common ground, but there are also versions with common +.
There are different types - the one we use has a common ground, but there are also versions with common +.


[[File:RgbIMG 9775.jpg|400px]]
[[File:Rgb-led.PNG|600px]]


= How to control it in MicroPython =
= How to control it in MicroPython =

Revision as of 10:34, 2 June 2024

Description

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.

How to connect it electrically

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. There are different types - the one we use has a common ground, but there are also versions with common +.

How to control it in MicroPython

Switching indiviual color on and off

from machine import Pin

blue = Pin(26, Pin.OUT)
green = Pin(27, Pin.OUT)
red = Pin(14, Pin.OUT)

blue.on()
green.off()
red.off()


Controlling intensity

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)

A small Program in MicroPython

from machine import Pin, PWM
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)

Related Tutorial Videos

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.

Background

text

image(s)