Skocz do zawartości

esp32 wroom ws2612B świeci ostatnia dioda


Pomocna odpowiedź

Napisano

Witam szukałem w historii nie mogłem znaleźć opisanego problemu sterowanie ESP32 tasma 1metr 30 led ws2812b podłączam wg poradników zainstalowałem oprogramowanie podłączam się do sterownika za pomocą wi fi wchodzę w apke w ustawienia tasma led nie świeci tzn świeci tylko ostatnia dioda na czerwono jak utnę np 30 cm to nie świeci nic czy tasma jest uszkodzona czy cos źle podłączam;(

  • Lubię! 1
  • 3 tygodnie później...

Wypada doprecyzować wg jakich poradników. Sprawdź też, czy zasilanie jest wystarczające. Ewentualnie odpal diody "ręcznie" korzystając z arduino lub micropythona. W tym drugim przypadku nie trzeba nawet podłączać płytki do usb kompa, jest tryb WebREPL przez wifi.

(edytowany)

To tzw. ledy RGB "NeoPixel", zasilane 5V. Testowałem kiedyś pojedyncze, wbudowane w płytki "ESP32-S3-WROOM-1".

Sprawdziłem kod na bieżącym firmware dla S3 (v1.24.0-preview.449.g1b89c503d on 2024-10-16), działa, tyle, że nie mam pojęcia, czy dla wielu "pixeli". Jeżeli tamto nie działa, to możesz wgrać micropythona i odpalić w ramach testu poniższe również przez wifi (WebREPL w Thonny). Zmień "PIN = 48" i "ILE_DIOD = 1" na właściwe.

import machine, time, neopixel, gc

def wylacz_ledy(led):
    led.fill((0, 0, 0))
    led.write()

# jasność: 0(min - zgaszona); 32(1/8); 64(1/4); 128(1/2); 255(max)
def mrugaj_led(led, rgb, jasnosc = 255, pauza_us = 10, czekaj_ms = 500):
    if jasnosc < 1 or jasnosc > 255:
        raise Exception("jasność musi zawierać się w przedziale 1-255")
    
    zakres = list(range(jasnosc + 1)) + list(range(jasnosc - 1, -1, -1))
    
    for idx in range(led.__len__()):
        print(f"> Dioda [{idx + 1:^3}], jasność [{jasnosc:^3}], kolor: ".format(idx, jasnosc), end = "")
        time.sleep_ms(czekaj_ms)
        for kolor, opis in rgb:
            print(opis, end = "")
            for i in zakres:
                led[idx] = (int(i * kolor[0]), int(i * kolor[1]), int(i * kolor[2]))
                led.write()
                time.sleep_us(pauza_us)
        print("")

if __name__ == "__main__":
    PIN = 48
    ILE_DIOD = 1

    neo = neopixel.NeoPixel(machine.Pin(PIN, machine.Pin.OUT), ILE_DIOD)
    rgb = [((1, 0, 0), "R"), ((0, 1, 0), "G"), ((0, 0, 1), "B"), ((1, 1, 1), "W"),
           ((0, 1, 1), "C"), ((1, 0, 1), "M"), ((1, 1, 0), "Y")]
    licz = 1

    try:
        while True:
            gc.collect()
            print("\n=== Test numer %i ===" % licz)
            mrugaj_led(neo, rgb)
            mrugaj_led(neo, rgb, jasnosc = 128, pauza_us = 2500)
            mrugaj_led(neo, rgb, jasnosc = 64, pauza_us = 10000)
            mrugaj_led(neo, rgb, jasnosc = 32, pauza_us = 40000)
            licz += 1
       
    except KeyboardInterrupt:
        print("\nPrzerwano: Ctrl + c")
        
    except BaseException as e:
        print("\n[BŁĄD]:", e)
        
    except:
        print("\n[BŁĄD]: Nieokreślony")

    finally:
        wylacz_ledy(neo)

 

Edytowano przez orb777

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...