Created
October 6, 2024 05:33
-
-
Save imnotdev25/8a4f1575659f9775e3d1e2b26355a571 to your computer and use it in GitHub Desktop.
MIcropython RGB controller with TP122 Darlington NPN transistor & 12V RGB led strip
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
Author
imnotdev25
commented
Oct 6, 2024
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