Skocz do zawartości
Komentator

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

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ęść?

Udostępnij ten post


Link to post
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?

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
Share on other sites

lodilirian, czy takie niebieskie diody mleczne otrzymałeś w zestawie do tego kursu? Jeśli tak, to podaj symbole - wyjaśnimy sprawę. Ile one mają wyprowadzeń?

Udostępnij ten post


Link to post
Share on other sites
lodilirian, czy takie niebieskie diody mleczne otrzymałeś w zestawie do tego kursu? Jeśli tak, to podaj symbole - wyjaśnimy sprawę. Ile one mają wyprowadzeń?

Nie. Kupiłem osobno 10 szt. "Dioda LED RGB WS2811"

Udostępnij ten post


Link to post
Share on other sites

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 🙂

Udostępnij ten post


Link to post
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 😉

Udostępnij ten post


Link to post
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?

Udostępnij ten post


Link to post
Share on other sites

PrimeSoul, w tym wypadku nie było żadnego konkretnego powodu. Po prostu było mi najwygodniej poprowadzić przewód z sygnałem od tego pinu 🙂

Udostępnij ten post


Link to post
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);
}

Udostępnij ten post


Link to post
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 🙂

Udostępnij ten post


Link to post
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 😃

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
Share on other sites

Pobawiłem się trochę tą listwą. 😉

Założenie było takie żeby stworzyć maksymalnie zbliżoną animację do tej z KITTa z Nieustraszonego. Efekt:

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ść
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...