• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino + ledy ws2812b
#11
@busyboy czy rozumiesz co się do Ciebie pisze?

I ja i @elvis, piszemy o tym, aby sprawdzić czy odpowiednio sterujesz ledami. Czy np taktowanie CPU jest właściwe.
Jaki problem podłączyć analizator lub oscyloskop i to sprawdzić?
Od razu będzie widać czy przypadkiem nie masz złych czasów, np 2 razy dłuższych, co oznacza, ze CPU pracuje na wewnętrznym RC. A może wcale nie ma sygnału sterującego? Albo to zegar lub dane dla WS2811, bo nie dpowiedziałeś na pytanie, które wcześniej zadałem.

Chcesz dochodzić metodą prób i błędów to próbuj ale nie licz, że sukces osiągniesz szybko albo dostaniesz magiczną recepturę jak rozwiązać problem.


Jak masz płytki z STM32F072 albo Mega1284, to mogę dać kod, który na 100% działa. na inne uC też mam ale z pamięci nie napiszę na jakie.
 
#12
Rozumiem Wasze zaangażowanie i próbę pomocy ale niestety nie posiadam ani analizatora ani oscyloskopu aby to sprawdzić. Jestem początkujący w tym temacie, zrobiłem kilka prostych projektów typu obsługa LCD, sterowanie przekaźnikami, termometr i to wszystko.

Chciałem zrobić światełka led na Święta, myślałem że nie będzie problem - ponieważ wcześniej widziałem setki filmów na YT o tej tematyce Sad

Zdjęcie uC poniżej

[Obrazek: 20191208-140328.jpg]
 
#13
@busybox, nie zwracaj uwagi na to co pisze @semi. To zupełnie stuknięty koleś, który próbuje leczyć kompleksy pisząc na forach i przechwalając się że ma tandetnego rigola i chiński analizator logiczny oraz opanował podstawy STM32.

A wracając do tematu - możesz do tego samego wyjścia gdzie podpinasz linię sterującą paska LED podłączyć zwykłą diodę? Chodzi mi o to, żebyś podłączył diodę i wgrał program, który będzie migał z częstotliwością 1s (czyli delay = 500). Dzięki temu po pierwsze upewnimy się że numeracja pinów jest jak należy, a samo wyjście działa. Jak już dioda będzie migała to będziesz miał kolejne zadanie: włączyć stoper i liczyć 60 mignięć. Nie będzie to bardzo precyzyjny pomiar, ale jeśli taktowanie jest bardzo niepoprawne, to będzie widać że wyszło coś innego niż minuta. To wszystko można zrobić bez oscyloskopu i innych drogich narzędzi, które oczywiście warto mieć, ale wiele można zrobić używając rozumu - który oczywiście też trzeba najpierw posiadać...
 
#14
Dziękuje za pomoc,

Wyjście działa poprawnie, PIN 11, schemat zrobiłem na diodzie i ustawiłem tak jak napisałem miganie delay = 500)
Kod:
void setup()
  {
  pinMode(11,OUTPUT);
  }
 
  void loop() {
  digitalWrite(11,HIGH);
  delay(500);
    digitalWrite(11,LOW);
  delay(500);
    }

Czas migania 60 razy diody zmierzony to 59,53 s.

[Obrazek: 20191208-143656.jpg]
 
#15
A możesz wrócić do kodu z biblioteka Adafruit, ale migać tylko jedna dioda jak na poczatku? Bo zmieniłeś dwie rzeczy na raz - bibliotekę i kod testowy, lepiej wprowadzać zmiany pojedynczo
 
#16
Coś takiego ?

Kod:
    #include <Adafruit_NeoPixel.h>
     
    #define PIN      11
    #define N_LEDS 144
     
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_GRB + NEO_KHZ800);
     
    void setup() {
      strip.begin();
    }
     
  void loop() {
  digitalWrite(11,HIGH);
  delay(500);
    digitalWrite(11,LOW);
  delay(500);
    }

Dioda miga, tak jak w powyższym kodzie.
 
#17
Nie o to mi chodziło Smile
Chciałem żebyś podłączył jeszcze raz pasek diod i napisał odpowiednik tego programu:
Kod:
void loop() {
  // Turn the LED on, then pause
  leds[0] = CRGB::Red;
  FastLED.show();
  delay(500);
  // Now turn the LED off, then pause
  leds[0] = CRGB::Black;
  FastLED.show();
  delay(500);
}
tylko tym razem używając biblioteki Adafruit.
Bo dopiero teraz zauważyłem, że przy bibliotekce FastLED używałeś tego kodu do testowania - i bardzo dobrze. Ale przechodząc do Adafruit, użyłeś też innego kodu testującego. A ten jest lepszy na początek.
 
#18
W kodzie, który używałeś do testowania Adafruit_Neopixel jest chyba jeszcze jeden błąd:


Kod:
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_RGB + NEO_KHZ400);

ws2812 raczej pracują na 800kHz, więc pownno być NEO_KHZ800 w ostatnim parametrze.
 
#19
Mówiąc szczerz próbowałem już wszystkich kombinacji
 
#20
A próbowałeś zmniejszać liczbę "pikseli" (N_LEDS), podać że jest 16, albo nawet tylko 1 ?
 
  


Skocz do:


Przeglądający: 1 gości