Skip to content

Instantly share code, notes, and snippets.

@imnotdev25
Created October 6, 2024 05:33
Show Gist options
  • Save imnotdev25/8a4f1575659f9775e3d1e2b26355a571 to your computer and use it in GitHub Desktop.
Save imnotdev25/8a4f1575659f9775e3d1e2b26355a571 to your computer and use it in GitHub Desktop.
MIcropython RGB controller with TP122 Darlington NPN transistor & 12V RGB led strip
from machine import Pin, PWM
from time import sleep
import random
class RGBLed:
def __init__(self, red_pin, green_pin, blue_pin, frequency=5000):
self.red = PWM(Pin(red_pin), freq=frequency)
self.green = PWM(Pin(green_pin), freq=frequency)
self.blue = PWM(Pin(blue_pin), freq=frequency)
def set_color(self, red, green, blue):
self.red.duty(red*4)
self.green.duty(green*4)
self.blue.duty(blue*4)
def fade(self, r_, g_, b_, delay=0.1):
for duty in range(0, 255):
self.set_color(int(r_ /duty), int(g_ /duty), int(b_ /duty))
sleep(delay)
for duty in range(255, -1, -1):
self.set_color(duty, duty, duty)
sleep(delay)
def random_color(self, delay):
while True:
self.set_color(random.randint(0,255),random.randint(0,255),random.randint(0,255))
sleep(delay)
def smooth(self, delay=1):
for duty in range(-1,255):
self.set_color(duty, 255 - duty, int(255/duty))
sleep(delay)
def flash(self, on_time=0.1, off_time=0.1, count=5):
for _ in range(count):
self.set_color(255,255,255)
sleep(on_time)
self.set_color(0, 0, 0)
sleep(off_time)
def brightness(self, level):
level = max(0, min(255, level)) # Ensure level is within 0 to 1023
self.red.duty(level*4)
self.green.duty(level*4)
self.blue.duty(level*4)
def on(self, red=255, green=255, blue=255):
self.set_color(red, green, blue)
def off(self):
self.set_color(0, 0, 0)
## boot.py
# ----------------------------- #
import time, machine, rgb_leds
from machine import Pin, PWM
from rgb_leds import RGBLed
machine.freq(240000000)
led = rgb_leds.RGBLed(27,26,25)
# Specify the GPIO pins
led.set_color(255, 50, 0)
@imnotdev25
Copy link
Author

image

@imnotdev25
Copy link
Author

Resistor: 10k Ohm
esp32
TIP 120/122 transistor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment