Saltar a contenido

Control con potenciómetro de LED, LED RGB y Neopixel

Dividiremos la actividad en tres, una para cada tipo de elemento.

Diodo LED
Diodo LED RGB
LED RGB direccionable. Neopixel

Volver

Diodo LED

Circuito

Vamos a montar el siguiente esquema:

Esquema de montaje A13-1 LED
Esquema de montaje A13-1 LED

MicroPython

El programa es:

from microbit import *

while True:
    pin1.write_analog(pin0.read_analog())

El programa lo podemos descargar de:

MakeCode

Leemos el valor analógico de tensión que entrega el pin P0 e indicamos que ese mismo valor se escriba en el pin P1. El programa es:

Programa control LED con potenciómetro
Programa control LED con potenciómetro

El programa lo podemos descargar de:

MicroBlocks

El programa tiene este aspecto:

Programa control LED con potenciómetro
Programa control LED con potenciómetro

El programa lo podemos descargar de:


Volver

Diodo LED RGB

Circuito

Vamos a montar el siguiente esquema:

Esquema de montaje A13-2 LED RGB
Esquema de montaje A13-2 LED RGB

Vamos a mapear el valor analógico del pin P3 de 0-1023 a 0-270 (ángulo de giro del potenciómetro) de manera que durante los primeros 60º de recorrido los LEDs permacerán apagados, para posteriormente ir encendiendo un color cada 70º, es decir, azul entre 60 y 130, verde entre 130 y 200 y rojo para el resto del recorrido.

MicroPython

El programa es:

from microbit import *

display.off() #Necesario para poder leer Pin 3
def mapeo(valor,deBajo,deAlto,aBajo,aAlto):
    return (aAlto-aBajo)*(valor-deBajo) / (deAlto-deBajo) + aBajo 
def RGB(grados):
    if grados < 60:
        R = 0
        G = 0
        B = 0
    elif grados < 130:
        R = 0
        G = 0
        B = 255
    elif grados < 200:
        R = 0
        G = 255
        B = 0
    else:
        R = 255
        G = 0
        B = 0
    return R,G,B

while True:
    valor=mapeo(pin3.read_analog(),0,1023,0,270)
    rojo,verde,azul=RGB(valor)
    print(rojo,verde,azul)
    rojo=mapeo(rojo,0,255,1023,0)
    verde=mapeo(verde,0,255,1023,0)
    azul=mapeo(azul,0,255,1023,0)
    pin2.write_analog(int(rojo))
    pin1.write_analog(int(verde))
    pin0.write_analog(int(azul))
    sleep(50)

El programa lo podemos descargar de:

MakeCode

Leemos el valor analógico de tensión que entrega el pin P3, lo mapeamos y según el valor obtenido los escribimos de manera analógica en los pines P0, P1 y P2. El programa es:

Programa control color LED RGB con potenciómetro
Programa control color LED RGB con potenciómetro

El programa lo podemos descargar de:

MicroBlocks

El programa tiene este aspecto:

Programa control LED RGB con potenciómetro
Programa control LED RGB con potenciómetro

El programa lo podemos descargar de:


Volver

LED RGB direccionable. Neopixel

Circuito

Vamos a montar el siguiente esquema:

Esquema de montaje A13-3. Neopixel
Esquema de montaje A13-3. Neopixel

MicroPython

El programa es:

from microbit import *
import neopixel

# Establecemos el número de LEDs
neop = neopixel.NeoPixel(pin0, 8)
# Función para convertir color HSL en color RGB
# devuelve el valor RGB correspondiente al ángulo del matiz actual.

def HSL_RGB(grados):
    grados=grados/360*255
    if grados < 85:
        red = 255 - grados * 3
        green = grados * 3
        blue = 0
    elif grados < 170:
        grados = grados - 85
        red = 0
        green = 255 - grados * 3
        blue = grados * 3
    else:
        grados = grados - 170
        red = grados * 3
        green = 0
        blue = 255 - grados * 3
    return int(red),int(green),int(blue)

while True:
    for i in range(0, 8):
        # La lectura analogica se convierte al angulo del matiz actual.
        # La diferencia de tono entre cada dos led es de 45
        valor=pin1.read_analog()/1023*360+i*45
        if valor > 360 :
            valor = valor-360
        # Los colores serán los del arcoiris
        red,green,blue=HSL_RGB(valor)
        neop[i] = (red,green,blue)
    neop.show()

El programa lo podemos descargar de:

MakeCode

Leemos el valor analógico de tensión que entrega el pin P0 e indicamos que ese mismo valor se escriba en el pin P1. El programa es:

Programa control Neopixel con potenciómetro
Programa control Neopixel con potenciómetro

El programa lo podemos descargar de:

MicroBlocks

En este caso vamos a realizar un ejemplo algo diferente para seguir mostrando el potencial del programa. Por un lado vamos a estar viendo de manera continua el valor leido del potenciómetro y por otro vamos a estar moviendo el color de los LEDs con los colores del arcoiris de una forma sencilla y automática. La idea es que tendremos dos bloques "al empezar" y otros dos bloques "por siempre" cada pareja haciendo un trabajo diferente.

En la imagen siguiente vemos el programa y la explicación se da en los comentarios.

Programa control Neopixel con potenciómetro
Programa control Neopixel con potenciómetro

El programa lo podemos descargar de: