From c35d88e2ed35430529fddaddcb318b0f23970019 Mon Sep 17 00:00:00 2001 From: HiloGoes Date: Tue, 14 Jan 2025 19:53:01 +0000 Subject: [PATCH 1/2] Pio Matrix Led fix bit order --- neopixel_pio/neopixel_pio.c | 6 +++--- neopixel_pio/ws2818b.pio | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/neopixel_pio/neopixel_pio.c b/neopixel_pio/neopixel_pio.c index d0d2429..6a8cf0b 100644 --- a/neopixel_pio/neopixel_pio.c +++ b/neopixel_pio/neopixel_pio.c @@ -74,9 +74,9 @@ void npClear() { void npWrite() { // Escreve cada dado de 8-bits dos pixels em sequência no buffer da máquina PIO. for (uint i = 0; i < LED_COUNT; ++i) { - pio_sm_put_blocking(np_pio, sm, leds[i].G); - pio_sm_put_blocking(np_pio, sm, leds[i].R); - pio_sm_put_blocking(np_pio, sm, leds[i].B); + pio_sm_put_blocking(np_pio, sm, leds[i].G<<24); + pio_sm_put_blocking(np_pio, sm, leds[i].R<<24); + pio_sm_put_blocking(np_pio, sm, leds[i].B<<24); } sleep_us(100); // Espera 100us, sinal de RESET do datasheet. } diff --git a/neopixel_pio/ws2818b.pio b/neopixel_pio/ws2818b.pio index 1b12ebd..0a36903 100644 --- a/neopixel_pio/ws2818b.pio +++ b/neopixel_pio/ws2818b.pio @@ -20,7 +20,7 @@ void ws2818b_program_init(PIO pio, uint sm, uint offset, uint pin, float freq) { // Program configuration. pio_sm_config c = ws2818b_program_get_default_config(offset); sm_config_set_sideset_pins(&c, pin); // Uses sideset pins. - sm_config_set_out_shift(&c, true, true, 8); // 8 bit transfers, right-shift. + sm_config_set_out_shift(&c, false, true, 8); // 8 bit transfers, right-shift. sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_TX); // Use only TX FIFO. float prescaler = clock_get_hz(clk_sys) / (10.f * freq); // 10 cycles per transmission, freq is frequency of encoded bits. sm_config_set_clkdiv(&c, prescaler); From 126457f645400728257ce9ca612cde60a4bd042a Mon Sep 17 00:00:00 2001 From: HiloGoes Date: Wed, 22 Jan 2025 00:18:10 +0000 Subject: [PATCH 2/2] fix:!Desenhando 1024 vezes a mesma imagem --- display_oled/inc/ssd1306_i2c.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/display_oled/inc/ssd1306_i2c.c b/display_oled/inc/ssd1306_i2c.c index 5989c48..48fffec 100644 --- a/display_oled/inc/ssd1306_i2c.c +++ b/display_oled/inc/ssd1306_i2c.c @@ -239,7 +239,6 @@ void ssd1306_send_data(ssd1306_t *ssd) { void ssd1306_draw_bitmap(ssd1306_t *ssd, const uint8_t *bitmap) { for (int i = 0; i < ssd->bufsize - 1; i++) { ssd->ram_buffer[i + 1] = bitmap[i]; - - ssd1306_send_data(ssd); } + ssd1306_send_data(ssd); }