Skocz do zawartości
Mrpatryk

Diody wsk2812 szaleja

Pomocna odpowiedź

#include <Adafruit_NeoPixel.h>
 
#define PIN D0
#define LICZBADIOD 86
 
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(LICZBADIOD, PIN, NEO_GRB + NEO_KHZ800);
 
void setup()
{
  Serial.begin(9600);
  pixels.begin(); // Inicjalizacja biblioteki
}
 
void loop()
{
  for(int i=0; i<LICZBADIOD; i++)
  {
    pixels.setPixelColor(i, 0, 255, 0); // Dioda "i" oraz skladowe R=255 G=0 B=0
    pixels.show(); // Wysylamy dane do lancucha
    delay(500); // Opoznienie 500ms przed zaswieceniem kolejnej diody
    Serial.println(i);
  }
}

Prosty kod zapalający kolejno diody ... niestety u mnie szajbuja nie dość ze kolory to jeszcze idzie gdzieś do polowy a potem świeca już losowo  jak  sobie chcą.

Zasilanie 5V , kondensator na zasilaniu 100uF, rezystor przed 1 dioda 300 ohm, do tego drugie zasilanie w polowie diodek.

NodemCu v3 ... zapala diody losowo w róznych kolorach i migocza wszystkie . Juz mi ręce opadaja co jest nie tak ;/

ile takich diodek pod jeden pin można podłączyć ? 

Udostępnij ten post


Link to post
Share on other sites

Może masz problem z biblioteką? Tutaj GreatScott miał taki problem (co prawda z esp32 i z inną biblioteką ale podał rozwiązanie) i zmienił ją na inną, wskazaną z filmie i wszystko działało bez problemu. Może to jest problem?

 

 

Udostępnij ten post


Link to post
Share on other sites

powiedzmy ze ogarnąłem, ale niestety ostatni " segment" swiruje ostatnie 21 dniodek ;/

Udostępnij ten post


Link to post
Share on other sites

Do esp8266 jest inna lepsza biblioteka - NeoPixelBus (steruje diody sprzętowo poprzez DMA lub UART).

Ile diod można podłączyć... tyle na ile wystarczy pamięci. Pamiętaj tylko, że to szeregowa transmisja i przy 1000 diod może okazać się za wolna 🙂

Może być tak, że pierwsza dioda nie jest prawidłowo wysterowana (napięcie z pinu ESP jest poza dopuszczalnym minimalnym napięciem sterującym i diody mogą świrować). Ja stosuję prosty trick - zasilam pierwszą diodę przez zwykłą diodę prostowniczą. Napięcie 4.3V jest wystarczające do jej działania, napięcie na pinie względem napięcia zasilania już jest wystarczające a następna dioda dostaje na wejściu już prawidłowe napięcie (powyżej 4V). Może to ten przypadek?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Wszystko już ogarnięte śmiga ładnie , okazało się zasilanie zasilanie 🙂 Zegarek sigma 🙂 robię teraz dodatkowe klawisze z kolorem itp i niestety w

#include <DHT.h>
#include <EepromAT24C32.h>
#include <RtcDateTime.h>
#include <RtcDS1307.h>
#include <RtcTemperature.h>
#include <RtcUtility.h>
#include <Adafruit_NeoPixel.h> 
 #include <Wire.h>
#include "DHT.h"          // biblioteka DHT
#define DHTPIN 2          // numer pinu sygnałowego
#define DHTTYPE DHT11 

RtcDS1307<TwoWire> Rtc(Wire);
Adafruit_NeoPixel linijka = Adafruit_NeoPixel(86, 3, NEO_GRB + NEO_KHZ800);
int czujnik = A0; 
int a;
int b;
int c;
int i;
int h;
int g;
int e;
int f;
     int A;
     int B;
     int C;
     int klawisz1= D5;
int klawisz2 = D6;
int klawisz3 = D7;
     DHT dht(DHTPIN, DHTTYPE);
void setup() {}

wyrzuca mi błąd przy kompilacji jak mam przypisane int klawisz 1= D5;. nie wiem co w tym może być złego ;/

Udostępnij ten post


Link to post
Share on other sites
41 minut temu, Mrpatryk napisał:

int klawisz 1= D5;. nie wiem co w tym może być złego

A co to niby ma znaczyć? Że klawisz jest int to rozumiem,  ale że jeszcze że do liczby 1 podstawiasz D5? To po tej operacji 1 to ma być w końcu 1 czy D5?

Poza tym nie "wyrzuca mi błąd kompilacji" a włącz sobie wyświetlanie wszystkich błędów w ustawieniach IDE, to masz duże szanse że kompilator sam Ci wypisze co chce. Wtedy albo nie będziesz w ogóle musiał pytać na forum, albo zapytasz konkretnie "co oznacza taki to a taki błąd kompilatora".

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Chce przypisać klawisz do pinu D5

Udostępnij ten post


Link to post
Share on other sites

Co znaczy "przypisać klawisz do pinu"?

Możesz do zmiennej (którą jakoś tam fajnie nazwiesz) przypisać wartość (np. D5 odpowiadającą piątemu pinowi NodeMCU). Kompilator nie wie nic o klawiszach, pinach, diodach i innych wynalazkach - dla niego istnieją zmienne i wartości.

I przecież to robisz pisząc:

int klawisz1 = D5;

prawda? Do zmiennej typu int o nazwie klawisz1 przypisujesz wartość początkową D5 (zdefiniowaną gdzieś wcześniej w plikach nagłówkowych NodeMCU).

Co Ci nie odpowiada w tym zapisie i dlaczego uważasz, że zapis

int klawisz 1 = D5;

miałby być prawidłowy? Jak miałaby się nazywać zmienna do której przypisujesz D5?

 

 

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Już ogarnąłem  🙂

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...