Skocz do zawartości

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


Komentator

Pomocna odpowiedź

Tak jak zauważył Nurek13 podejżewam, że te rezystory są niepotrzebne. Jak wspominałem linijkę mam z gotowego zestawu z Botlandu. Przy obu jej końcach są po 3 wyprowadzenia, z jednej strony kolejno GND, IN, VCC. Z drugiej zapewne podłączenia pod kolejną linijkę, kolejno VCC, OUT, GND (oba piny GND przy tej samej krawędzi, tak samo VCC). Jedyny napis na mojej poza oznaczeniami to adres strony producenta www.telmal.com.

Oczywiście linijkę mam podłączoną od strony wyprowadzenia IN, podłączenie od dugiej strony nie daje żadnego efektu.

[ Dodano: 24-06-2016, 14:39 ]

PS. Kiedy następna część?

Link do komentarza
Share on other sites

Wielkie dzięki, to bardzo rozjaśnia sprawę. Jeszcze tylko małą wątpliwość w związku ze złączami zasilania. Czy na pinie Vin uzyskujemy takie napięcie, jakie dostarczymy ze źródła zasilania (np. bateria 9V, zasilacz 12V, itd.)?

Napięcie na pinach 5V i 3,3V jest stabilizowane do tych wartości, natomiast w Vin stabilizacja jest pomijana (równa napięciu źródła)?

W przykładzie z serwomechanizmem użyty jest dodatkowy stabilizator podpięty do Vin (bateria 9V). Zatem czy można by zamiast dodatkowego stabilizatora wykorzystać pin 5V?

Link do komentarza
Share on other sites

Ketejow, zaleca się, aby taki rezystor występował. Jego brak nie powinien wyrządzić żadnych szkód, jednak warto o nim pamiętać. Zamiast całkowicie go usuwać proponowałbym ewentualnie zmniejszyć rezystancję (czyli np. dodać w szereg trzeci taki sam rezystor). Ja działam na linijce od innego producenta, jednak niczym się ona nie różni od Twojej. Mogę kupić z ciekawości kilka takich modułów od różnych firm i sprawdzić temat za jakiś czas.

PS. Kiedy następna część?

Niedługo - najdalej w weekend 🙂

Czy na pinie Vin uzyskujemy takie napięcie, jakie dostarczymy ze źródła zasilania (np. bateria 9V, zasilacz 12V, itd.)?

Tak, dokładnie tak.

W przykładzie z serwomechanizmem użyty jest dodatkowy stabilizator podpięty do Vin (bateria 9V). Zatem czy można by zamiast dodatkowego stabilizatora wykorzystać pin 5V?

Nie, ponieważ serwomechanizm może pobrać znacznie większy prąd od tych diod (np. 1-2A), co byłoby zdecydowanie zbyt dużą wartością, jak na wbudowany w Arduino stabilizator. Prowadziłoby to do resetowania się całego układu. Temat ten został dokładniej opisany w I poziomie kursu Arduino 🙂

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Cześć,

Ja mam taki problem. Mam dwie diody RGB jedna mleczna drug przezroczysta.

Po podłączeniu dioda mleczna świeci (miga) tylko na niebiesko jak tak samo podłącze diodę przezroczystą jest jak na lekcji świeci na zmianę RGB.

Jaka może być przyczyna? mam kilka takich mlecznych diod i każda świeci tylko na niebiesko.

Pozdrawiam

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

lodilirian, diody, które kupiłeś to również diody programowalne (tyle, że w obudowie przewlekanej). Nie można nimi sterować tak jak zwykłymi diodami RGB - trzeba korzystać z tej samej biblioteki, co w przypadku linijki wykorzystywanej w tym odcinku kursu 🙂

Link do komentarza
Share on other sites

Ketejow, Nurek13 sprawdziliśmy dziś z Botlandem kilka pasków LEDowych i nie udało nam się odtworzyć takiego zachowanie, jakie opisujecie u siebie. Będziemy jeszcze sprawdzać wszystkie linijki dodawane teraz do kolejnych zestawów. Jak natrafimy na jakiś trop, to damy znać 🙂 Na ten moment możecie spokojnie używać swoich linijek bez rezystorów.

A no i dopiero teraz zauważyłem, że moja piątkowa informacja o dacie kolejnego odcinka była mało precyzyjna, bo nie wskazałem, do którego weekendu... Więc teraz podaję konkretnie, że artykuł będzie jutro, tj. 29.06. A tutaj mała zapowiedź - w końcu odcinek o generowaniu dźwięku 😉

Link do komentarza
Share on other sites

Treker, może zadam trochę dziwne pytanie, ale jakiś konkretny powód sprawił, że właśnie na pinie A0 podłączany był pin sterujący taśmą led? Miało to jakieś przełożenie na pracę układu czy też Arduino?

Link do komentarza
Share on other sites

Forma zadania dla chętnych - kombinacja wizualna: (Sorry, że bez przypisów, ale nie miałem czasu ich zrobić, a program pisałem jednym ciągiem 😋)

#include <Adafruit_NeoPixel.h>
#define ledstrip A0
int i = 0, j = 0;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, ledstrip, NEO_GRB + NEO_KHZ800);
void setup() {
 strip.begin();
 strip.show();
 randomSeed(analogRead(A0));
}

void setred() {
 for (i=1; i<=8; i++) {
   strip.setPixelColor(i-1, strip.Color(255, 0 , 0));
 }
 strip.show();  
}

void turningoff() {
 for (i=8; i>=1; i--) {
   strip.setPixelColor(i-1, strip.Color(0, 0, 0));
   strip.show();
   delay(50);
 } 
}

void function1(int x, int y, int z) {
 for (i=1; i<=300; i++) {
   strip.setPixelColor (random(0, 8), strip.Color(x, y, z));
   strip.setPixelColor (random(0, 8), strip.Color(x, y, z));
   strip.setPixelColor (random(0, 8), strip.Color(x, y, z));
   strip.show();
   delay(8);
   strip.clear();
 }
}

void function2(int x, int y, int z, int a, int b, int c) {
 for (i=1; i<=300; i++) {
   strip.setPixelColor (random(0, 8), strip.Color(x, y, z));
   strip.setPixelColor (random(0, 8), strip.Color(x, y, z));
   strip.setPixelColor (random(0, 8), strip.Color(a, b, c));
   strip.setPixelColor (random(0, 8), strip.Color(a, b, c));
   strip.show();
   delay(8);
   strip.clear();
 }
}

void loop() {
 setred();
 delay(500);
 turningoff();
 delay(200);
 for (i=1; i<=8; i++) {
   strip.setPixelColor(i-1, strip.Color(0, 255, 0));
   strip.show();
   delay(50);
 }
 delay(200);
 turningoff();
 delay(200);
 for (i=1; i<=8; i++) {
   strip.setPixelColor(i-1, strip.Color(0, 0, 255));
   strip.show();
   delay(50);
 }
 delay(200);
 for (j=1; j<=255; j++) {
   for (i=1; i<=8; i++) {
     strip.setPixelColor (i-1, strip.Color(0, j, 255));
   }
   strip.show();
   delay(5);
 }
   for (j=1; j<=255; j++) {
   for (i=1; i<=8; i++) {
     strip.setPixelColor (i-1, strip.Color(j, 255, 255));
   }
   strip.show();
   delay(5);
 }
   for (j=255; j>=1; j--) {
   for (i=1; i<=8; i++) {
     strip.setPixelColor (i-1, strip.Color(255, 255, j));
   }
   strip.show();
   delay(5);
 }
   for (j=255; j>=1; j--) {
   for (i=1; i<=8; i++) {
     strip.setPixelColor (i-1, strip.Color(255, j, 0));
   }
   strip.show();
   delay(5);
 }
 delay(1000);
 function1 (255, 0, 0);
 function2 (255, 0, 0, 0, 0, 255);
 function1 (0, 0, 255);
 function2 (0, 0, 255, 0, 255, 0);
 function1 (0, 255, 0);
 function2 (255, 0, 0, 0, 255, 0);
 function1 (255, 0, 0);
 setred();
 delay(2500);
 for (j=1; j<=255; j++) {
   for (i=1; i<=8; i++) {
     strip.setPixelColor(i-1, strip.Color(255-j, 0, 0));
   }
   strip.show();
   delay(5);
 }
 for (j=1; j<=255; j++) {
   for (i=1; i<=8; i++) {
     strip.setPixelColor(i-1, strip.Color(0, 0, j));
   }
   strip.show();
   delay(5);
 }
 for (j=1; j<=255; j++) {
   for (i=1; i<=8; i++) {
     strip.setPixelColor(i-1, strip.Color(0, 0, 255-j));
   }
   strip.show();
   delay(5);
 }
 for (j=1; j<=255; j++) {
   for (i=1; i<=8; i++) {
     strip.setPixelColor(i-1, strip.Color(0, j, 0));
   }
   strip.show();
   delay(5);
 }
 for (j=1; j<=255; j++) {
   for (i=1; i<=8; i++) {
     strip.setPixelColor(i-1, strip.Color(0, 255-j, 0));
   }
   strip.show();
   delay(5);
 }
 delay (10000);
}
Link do komentarza
Share on other sites

PrimeSoul, rozumiem, że działa i pozostaje się cieszyć, ale pamiętaj, że dla większości osób, którym pokażesz ten kod będzie on kompletnie nieczytelny. Wiadomo, że komentarze pomogłyby najwięcej, ale nazywanie funkcji w takim stylu: "function1", "function2" jest już dość ekstremalnym "zaciemnianiem" tego, jak działa program. Nawet jak sam wrócisz do kodu za miesiąc, to będziesz miał już problemy, aby wszystko rozszyfrować. Lepiej od samego początku przyzwyczajać się do komentarzy i poprawnego nazywania funkcji 🙂

Link do komentarza
Share on other sites

Treker, jeśli mam być szczery to nie miałem pomysłu na nazwanie tych funkcji 😋. To taki typ programu, "napisz, sprawdź czy działa i więcej przy nim nie grzeb" 😃. Trochę przy nim się pobawiłem, potworzyłem kombinacje wizualne na diodkach, potrenowałem kodowanie, ale do niczego więcej (na szczęście) się on już nie przyda 😃

Link do komentarza
Share on other sites

PrimeSoul, niby tak, ale jak pisze się dużo programów, to prędzej czy później trafisz na sytuację, w której pomyślisz "już gdzieś coś takiego pisałem". Wtedy miło byłoby wrócić do starego kodu, zrozumieć natychmiast o co w nim chodzi i zaoszczędzić na tym kilka godzin pisania od nowa. Może podczas realizacji prostych zadań nie jest to tak widoczne, ale później będzie 🙂 Warto wyrabiać dobre nawyki od początku.

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.