Skocz do zawartości

Kurs Arduino II - #2 - diody RGB (tradycyjne oraz WS2812)


Komentator

Pomocna odpowiedź

Witam,

kolejny świetny odcinek kursu. Zaprogramowałem sekwencję jak z "Nieustraszonego" - to pierwszy element mojego KITT-a 😉. Chciałem po kursie elektroniki zrobić wersję analogową, ale jakoś nie udało mi się kupić jeszcze układu zliczającego. Tutaj w pętli oprócz zaświecania kolejnej diody zaświecam słabiej 2 sąsiednie. Poniżej program i film jak to działa.

#include <Adafruit_NeoPixel.h>

#define pixelsNumber 8
#define ledPin A5

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(pixelsNumber, ledPin, NEO_GRB + NEO_KHZ800);

const uint32_t darkRed = pixels.Color(2, 0, 0);
const uint32_t red = pixels.Color(16, 0, 0);
const uint32_t lightRed = pixels.Color(64, 0, 0);

void setup() {
  pixels.begin();
  for (int i = 0; i < pixelsNumber; i++) {
    pixels.setPixelColor(i, darkRed);
  }
  pixels.show();
}

void loop() {
  for (int i = 0; i < pixelsNumber; i++) {
    turnOn(i);
    delay(100);
    turnOff(i);
  }

  for (int i = pixelsNumber-2; i > 1; i--) {
    turnOn(i);
    delay(100);
    turnOff(i);
  }
}

void turnOn(int position) {
  pixels.setPixelColor(position, lightRed);
  if (position  > 0) {
    pixels.setPixelColor(position - 1, red);
  }
  if (position  < pixelsNumber) {
    pixels.setPixelColor(position + 1, red);
  }
  pixels.show();
}

void turnOff(int position) {
  pixels.setPixelColor(position, darkRed);
  if (position  > 0) {
    pixels.setPixelColor(position - 1, darkRed);
  }
  if (position  < pixelsNumber) {
    pixels.setPixelColor(position + 1, darkRed);
  }
  pixels.show();
}

 

kitt.gif

Edytowano przez Raccoon
  • Lubię! 2
Link do komentarza
Share on other sites

Mam pytanie odnośnie wielkości kondensatora jaki należy podłączyć równolegle z listwą diod do zasilania. W tekście jest napisane

Cytat

 Równolegle z pinami zasilającymi podłączamy kondensator elektrolityczny. Przy tej ilości diod 100uF będzie wystarczające.

Od czego ona zależy i jak? W kursach elektroniki i techniki cyfrowej zwykle do zasilania były wpinane równolegle 2 kondensatory 100nF i 220uF.

Link do komentarza
Share on other sites

@Raccoon To o czym piszesz nazywa się kondensatorem filtrującym zasilanie albo kondensatorem odsprzęgającym (decoupling capacitor) lub kondensatorem obejściowym (bypass). Stosuje się je aby filtrować zasilanie - czyli odrzucić składową zmienną w sygnale. Co to oznacza?

W sytuacji, gdy na linii zasilania pojawia się spadek napięcia trzeba temu przeciwdziałać. Spadki mogą pochodzić z różnych powodów. Pierwszy to na pewno rezystancja i długość przewodów zasilających (stąd indukcyjność). Dodając większe pojemności np. 100-220uF przeciwdziałasz zmianom napięcia zasilania pochodzącym z zewnątrz od zasilacza i kabli - to jest ten decoupling.

Obok tych większych (elektrolitycznych i tantalowych) kondensatorów pojawiają się często ceramiczne 100nF. Dzieje się tak ponieważ duży kondensator jest za wolny dla niektórych sygnałów. Jeżeli mamy do czynienia z układem cyfrowym, w którym może dojść do szybkiego przełączeń wielu tranzystorów, to mogą pojawić się minimalne ale znaczące spadki napięcia wynikające z przekroczenia wydajności prądowej zasilania (plus rezystancja kabli, indukcyjność itp.). W takiej sytuacji szybki kondensator 100nF (o niskiej szeregowej rezystancji i zastępczej szeregowej indukcyjności) jest w stanie dostarczyć energię lepiej niż główne źródło zasilania - to jest bypass.

Całość tego tematu można związać teorią filtrów cyfrowych i częstotliwości (harmonicznych) w sygnale. Ogólny wzór na tzw. reaktancję czyli opór dla wartości przemiennych (sinusoidalnych) w sygnale to X = 1 / (2πfC) wyrażane w Ω. Sygnał składa się z 2 części - stałem czyli powiedzmy 6 V i zmiennej składającej się z wielu częstotliwości (harmonicznych). Aby odfiltrować (sprowadzić do masy) składowe zmienne trzeba sprawić żeby dla nich reaktancja była możliwie niska - niski opór szybko odprowadzi napięcie do masy. Widać tu że częstotliwość i pojemność są ze sobą powiązane, aby mieć stałą wartość to jedno zwiększamy a drugie zmniejszamy.

Już nie brnąc dalej w temat, pomijając zastępczą szeregową indukcyjność, to 2 zasady:

  • większa pojemność redukuje (filtruje) niskie częstotliwości i umieścić ją możesz raczej dowolnie w obwodzie,
  • niska pojemność redukuje wysokie częstotliwości i umieszcza się możliwie blisko układu scalonego, wymagającego stabilnego napięcia zasilania i generującego krótkie spadki napięcia.

image.thumb.png.4640d5c386a0ed9e463db5a214a7df69.png

Link

Edytowano przez Gieneq
  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

" Następnie podłączamy sygnał sterujący. W przypadku naszych ćwiczeń będzie to pin A0. Zgodnie z zaleceniami producenta nie robimy tego bezpośrednio. Między wyprowadzenie Arduina, a linijkę diod powinniśmy wpiąć rezystor z zakresu 300-500R "

Na zdjeciu nie widać jak te rezystory są podłączone.  Można prosić o schemat.

Link do komentarza
Share on other sites

hmmm ...ten opis średnio przemawia mi do wyobraźni. Sorry ale nie chciałbym uszkodzić Uno i mimo wszystko poczekam aż ktoś wklei schemat - wtedy będę miał pewność jak to ma być podłączone. dzięki za pomoc
PS: to kurs dla początkujących więc takie pytania jak moje pewnie sie zdarzają  🙂

Link do komentarza
Share on other sites

21 minut temu, StefanekP napisał:

A czy dołoby się zrobić coś, żeby te programowalne diody świeciły ciemniej

Hm... pytanie dość dziwne, bo jeśli diody są programowalne to trzeba je po prostu odpowiednio zaprogramować (tak jak pokazano w odcinku kursu który komentujesz). O jakie diody konkretnie Ci chodzi?

 

Link do komentarza
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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.