kmk_firmware/docs/ptBR/rgb.md
2021-08-30 11:16:55 -07:00

12 KiB

RGB/Underglow/Neopixel

Quer um teclado brilhante? Coloque alguma luz nele!

CircuitPython

Se não estiver usando KMKpython, isto vai exigir a biblioteca neopixel da Adafruit. Ela pode ser baixada aqui. É parte do Pacotão Adafruit CircuitPython. Coloque-o na raiz do seu dispositivo circuitpython. Se não souber qual é, é o diretório com main.py nele, e deve ser o primeiro diretório que você vê ao abrir o dispositivo.

Atualmente suportamos os LEDs endereçáveis a seguir:

  • WS2811, WS2812, WS2812B, WS2812C, etc.
  • SK6812, SK6812MINI, SK6805

Seleção de Cores

KMK usa o sistema Hue-Saturation-Value para selecionar as cores, em vez do RGB. A roda de cores abaixo demonstra seu funcionamento.

  • Mudar o Hue dá a volta no círculo.
  • Mudar o Saturation move entre as seções internas e externas do círculo, afetando a intensidade da cor.
  • Mudar o Value atribui o valor do brilho total.

Habilitando a Extensão

Os únicos valores exigidos para a extensão RGB devem ser o pino de pixel e o número de pixels/LEDs. Se estiver usando um teclado repartido, este número é por parte, não pelo total das duas.

from kmk.extensions.RGB import RGB
from kb import rgb_pixel_pin  # This can be imported or defined manually

rgb_ext = RGB(pixel_pin=rgb_pixel_pin, num_pixels=27)
keyboard.extensions.append(rgb_ext)

[Keycodes]

Key Aliases Descrição
KC.RGB_TOG Liga/desliga o RGB
KC.RGB_HUI Aumenta Hue
KC.RGB_HUD Diminui Hue
KC.RGB_SAI Aumenta Saturation
KC.RGB_SAD Diminui Saturation
KC.RGB_VAI Aumenta Value
KC.RGB_VAD Diminui Value
KC.RGB_ANI Aumenta a velocidade da animação
KC.RGB_AND Diminui a velocidade da animação
KC.RGB_MODE_PLAIN RGB_M_P RGB Estático
KC.RGB_MODE_BREATHE RGB_M_B Animação de Respiração
KC.RGB_MODE_RAINBOW RGB_M_R Animação de Arco-Íris
KC.RGB_MODE_BREATHE_RAINBOW RGB_M_BR Animação de Arco-Íris Respirando
KC.RGB_MODE_KNIGHT RGB_M_K Animação de SuperMáquina (Knight Rider)
KC.RGB_MODE_SWIRL RGB_M_S Animação de Redemoinho

Configuração

Definição Padrão Descrição
keyboard.pixel_pin O pino conectado ao pino de dados dos LEDs
keyboard.num_pixels O número de LEDs conectados
keyboard.rgb_config['rgb_order'] (1, 0, 2) A ordem dos pixels RGB, e opcionalmente branco. Exemplo: (1, 0, 2, 3)
keyboard.rgb_config['hue_step'] 10 O número de passos para ciclar ao longo do Hue
keyboard.rgb_config['sat_step'] 17 O número de passos para mudar a Saturation
keyboard.rgb_config['val_step'] 17 O número de passos para mudar o Value (brilho)
keyboard.rgb_config['hue_default'] 0 Hue padrão quando o teclado inicia
keyboard.rgb_config['sat_default'] 100 Saturation padrão quando o teclado inicia
keyboard.rgb_config['val_default'] 100 Value padrão (brilho) quando o teclado inicia
keyboard.rgb_config['val_limit'] 255 Nível máximo de brilho

Configuração da Animação Embutida

Definição Padrão Descrição
keyboard.rgb_config['breathe_center'] 1.5 Usado para calcular a curva da animação de respiração. Qualquer valor em 1.0-2.7 é válido.
keyboard.rgb_config['knight_effect_length'] 4 O número de LEDs a ligar para a animação do KITT (SuperMáquina)

Funções

Se você quer criar suas próprias animações, ou por exemplo mudar a luminosidade numa macro, ou numa troca de camadas, eis algumas funções disponíveis:

Function Descrição
keyboard.pixels.set_hsv_fill(hue, sat, val) Preenche todos os LEDs com valores HSV
keyboard.pixels.set_hsv(hue, sat, val, index) Atribui um valor HSV a um LED específico
keyboard.pixels.set_rgb_fill((r, g, b)) Preenche todos os LEDs com valores RGB(W)
keyboard.pixels.set_rgb((r, g, b), index) Atribui um valor RGB(W) a um LED específico
keyboard.pixels.disable_auto_write(bool) Quando True, desabilita mostrar as mudanças. Bom para atribuir múltiplas mudanças de LEDs antes de uma atualização visível
keyboard.pixels.increase_hue(step) Aumenta Hue de um step dado
keyboard.pixels.decrease_hue(step) Diminui Hue de um step dado
keyboard.pixels.increase_sat(step) Aumenta Saturation de um step dado
keyboard.pixels.decrease_sat(step) Diminui Saturation de um step dado
keyboard.pixels.increase_val(step) Aumenta Value (brilho) de um step dado
keyboard.pixels.decrease_val(step) Diminui Value (brilho) de um step dado
keyboard.pixels.increase_ani() Aumenta a velocidade da animação de 1. Máximo 10
keyboard.pixels.decrease_ani() Diminui a velocidade da animação de 1. Mínimo 10
keyboard.pixels.off() Desliga todos os LEDs
keyboard.pixels.show() Exibe todas as configurações armazenadas para os LEDs. Útil quando disable_auto_write explicado abaixo
keyboard.pixels.time_ms() Retorna um tempo em milissegundos desde que o teclado foi ligado. Útil para temporizadores de início/parada

Acesso Direto às Variáveis

Definição Padrão Descrição
keyboard.pixels.hue 0 Atribui à Hue, 0-360
keyboard.pixels.sat 100 Atribui à Saturation, 0-100
keyboard.pixels.val 80 Atribui ao Brightness, 1-255
keyboard.pixels.reverse_animation False Se True, algumas animações vão rodar ao contrário. Pode ser usado seguramente em animações do usuário
keyboard.pixels.animation_mode static Isto pode ser modificado para quaisquer modos inclusos, ou para algo customizado para interações do usuário. Qualquer string é válida.
keyboard.pixels.animation_speed 1 Aumenta a velocidade da animação na maior parte das animações. Recomendado 1-5, máximo 10.
from kmk.extensions.rgb import AnimationModes
rgb_ext = RGB(pixel_pin=rgb_pixel_pin,
        num_pixels=27
        num_pixels=0,
        val_limit=100,
        hue_default=0,
        sat_default=100,
        rgb_order=(1, 0, 2),  # GRB WS2812
        val_default=100,
        hue_step=5,
        sat_step=5,
        val_step=5,
        animation_speed=1,
        breathe_center=1,  # 1.0-2.7
        knight_effect_length=3,
        animation_mode=AnimationModes.STATIC,
        reverse_animation=False,
        )

Modificação do Hardware

Para incluir LEDS em placas que não têm suporte nativo, você terá que acrescentar três fios. O de força correm nos pinos de 3.3V ou 5V (dependendo do LED), pinos de terra e dados precisarão ser adicionados a um pino não usado em seu micro-controlador a não ser que seu teclado tenha pontos de soldagem específicos para eles. Com estes três fios conectados, atribua ao pixel_pin como descrito acima, e você está pronto para usar seus RGB LED's/Neopixels.

Consertando os Problemas

Cores Incorretas

Se as cores estão erradas, confira a ordem dos pixels nos seus LEDs específicos. Eis alguns comuns.

  • WS2811, WS2812, WS2812B, WS2812C são todos GRB (1, 0, 2)
  • SK6812, SK6812MINI, SK6805 são todos GRB (1, 0, 2)
  • Neopixels variam dependendo de onde você compra. Isto vem informado na página do produto.

Luzes não ligam

Certifique-se de que sua placa suporta luz de fundo de LED, conferindo por uma linha com PIXEL_PIN. Se não tiver, você pode adicionar ao seu keymap. Se você adicionou os LEDs por conta própria, você também precisa atribuir a num_pixels o número total de LEDs instalados.