logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Arduino: Dlaczego tylko czerwona dioda świeci przy a == 4?

minecraftferaj 07 Kwi 2019 21:00 1053 27
  • #1 17892092
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Witam,
    Mam taki kod, jednak gdy a == 4 zapala się tylko czerwona dioda. :(
    Gdy zakomentuje zapalanie się czerwonej diody niebieska i zielona świeci poprawnie.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Prosił bym o w miarę szybką odpowiedź, ponieważ jest to kluczowa część mojego projektu.
    Pozdrawiam
  • #2 17892116
    makaronpl
    Poziom 12  
    Posty: 81
    Pomógł: 5
    Ocena: 15
    Jak masz zdefiniowane led_r i pozostałe ledy?
  • #3 17892117
    lukaszd82
    Poziom 31  
    Posty: 1460
    Pomógł: 143
    Ocena: 491
    Poprosimy cały kod i do tego schemat.
    W tym co zamieściłeś błędu nie ma, więc musi być gdzie indziej. Być może w deklaracji zmiennych... Ale bez całości ciężko coś podpowiedzieć.
  • #4 17892171
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Wiesz co ze schematem będzie ciężko. Do tego dodam, że w innych funkcjach ledy działają poprawnie.
    A oto kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Nie zwracaj uwagi, że kod się powtarza w ostatnich efektach. I jeszcze dodam, że to jest slave sterownika. A problem jest z efektem 4. A jest "digitalWrite", bo już próbowałem na miliony sposobów i nie działa :-x
  • #5 17892182
    makaronpl
    Poziom 12  
    Posty: 81
    Pomógł: 5
    Ocena: 15
    Zamiast if użyj case, będzie bardziej wydajnie.
    Użyj analogWrite(LED_R, 255), a nie digital i tak samo dla innych diod w tym ifie.
  • #6 17892184
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Na początku już tak było.
  • #7 17892226
    makaronpl
    Poziom 12  
    Posty: 81
    Pomógł: 5
    Ocena: 15
    Program działa dalej czy się zawiesza na "4"?
    Masz odpowiednie zasilanie?
    Sprawdź dla mniejszych wartości analogWrite.
  • #8 17892236
    lukaszd82
    Poziom 31  
    Posty: 1460
    Pomógł: 143
    Ocena: 491
    To jedyny warunek, gdy zapalasz wszystkie diody. Dlatego chciałbym jednak zobaczyć schemat. Do tego nic nie wiemy na temat typu diod i ich poboru prądu.
    Jakie to jest arduino, oryginał czy klon?
  • #9 17892238
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Program działa cały czas bez zawieszek. Prąd dostarczany do arduino to 1,5A, więc nie sądzę, że jest za słabe. A ze zmniejszeniem wartości PWM spróbuję jutro, bo dzisiaj wyłączyłem komputer.

    Diody to zwykłe RGB z elektronicznego. Niestety schemat jest z głowy, a jak pisałem wyżej teraz nie jestem przy komputerze.

    Klon, ale dotychczas wszystko działało. Nawet na 5 takich ledów.
  • #10 17892243
    lukaszd82
    Poziom 31  
    Posty: 1460
    Pomógł: 143
    Ocena: 491
    Prąd dostarczany do arduino czy do płytki arduino... Pytanie jak zasilasz tą płytkę. Klony mają często kiepskie stabilizatory liniowe na czym się już przejechałem ze 2 razy...
  • #11 17892248
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Zasilam przez USB, ale nie sądzę, że to kwestia zasilania, ponieważ przy innych kolorach bez czerwonego wszystko działa poprawnie.
  • #12 17892296
    makaronpl
    Poziom 12  
    Posty: 81
    Pomógł: 5
    Ocena: 15
    Podaj jeszcze model arduino.
    Odłącz diody i sprawdź miernikiem czy masz napięcia na wyjściach
  • #13 17892300
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Arduino uno klon i jeżeli można podac to z nettigo.

    Jutro spróbuje zrobić tak jak mówisz.
  • #14 17893893
    krzysiek_krm
    Poziom 40  
    Posty: 4612
    Pomógł: 716
    Ocena: 599
    Czy Ty przypadkiem nie podłączyłeś wszystkich diod za pomocą jednego wspólnego opornika ?
  • #15 17894075
    lukaszd82
    Poziom 31  
    Posty: 1460
    Pomógł: 143
    Ocena: 491
    I tu właśnie powinien pojawić się schemat bo to raczej nie jest coś skomplikowanego. Wystarczy na kartce naszkicować albo kilka fot układu testowego w dobrej rozdzielczości...
    A tak to niestety pozostają nam domysły. Program raczej będzie ok...
    Skoro z tranzystorem działa to napisz jak podpiąłeś te diody ...
    Dobrze, że są postępy.
  • #16 17894137
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Zmniejszyłem trochę wypełnienie PWM i diody lekko migają. Teraz szukam tranzystora npn to spróbuje na tranzystorze.

    Dodano po 8 [minuty]:

    Udało się. Diody działają gdy dałem tranzystor npn przy kolorze czerwonym.

    plik schemat.png to schemat jak było wcześniej. Arduino: Dlaczego tylko czerwona dioda świeci przy a == 4?

    A plik schemat2.png to schemat jak jest teraz. Arduino: Dlaczego tylko czerwona dioda świeci przy a == 4?
  • #18 17903015
    makaronpl
    Poziom 12  
    Posty: 81
    Pomógł: 5
    Ocena: 15
    Masz źle podłączone diody powinno być:
    PIN arduino - > rezystor (330Ohm) - > dioda czerwona
    PIN arduino - > rezystor (330Ohm) - > dioda niebieska
    PIN arduino - > rezystor (330Ohm) - > dioda zielona
    Katoda diody do masy.
    I wszystko będzie działało
  • #19 17903216
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Ja się tam uczyłem, że można też podłączyć masę przez rezystor.
  • #20 17903244
    lukaszd82
    Poziom 31  
    Posty: 1460
    Pomógł: 143
    Ocena: 491
    minecraftferaj napisał:
    Ja się tam uczyłem, że można też podłączyć masę przez rezystor.

    Można, ale dla każdej diody oddzielny rezystor a nie jeden dla wszystkich trzech.
  • #21 17909664
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Ale to jest jedna dioda RGB tzn. w jednej obudowie ze wspólną masą.
  • #22 17909683
    Konto nie istnieje
    Poziom 1  
  • #23 17909695
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 231
    minecraftferaj napisał:
    Ale to jest jedna dioda RGB tzn. w jednej obudowie ze wspólną masą.

    Będę trzecim użytkownikiem w tym wątku, który Ci tu napisze - użyj osobnych rezystorów do każdej led. Ledy o różnych kolorach mają różne napięcie przewodzenia, a czerwona ma tu akurat najniższe, jak jest aktywna to nie zostaje przekroczony próg napięcia do zaświecenia się innych kolorów.
    Edit: A teraz to już czwartym.
    Pomogłem? Kup mi kawę.
  • #24 17919943
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38915
    Pomógł: 3177
    Ocena: 6563
    Wypadałoby jakoś temat podsumować - otóż jest to niestety typowy przykład, że nauka przez praktykę, bez podstaw teoretycznych prowadzi na manowce. Na co dzień się z tym spotykam. Autor wiedział, że musi być ten rezystor, ale nie nie rozumiał po co on tam jest ani jak działa. Zapewne zapytany po co jest, odparłby (wyuczoną bez zrozumienia regułką), że ogranicza prąd.

    Rzeczywiście nie ma znaczenia po której stronie diody będzie rezystor, ale dla każdej diody musi być osobny. LED zachowuje się jak każda inna dioda półprzewodnika, z tą różnicą, że charakteryzuje się większym spadkiem napięcia. Część tego spadku napięcia ma charakter rezystancyjny, ale część (znaczna) zachowuje się jak źródło napięciowe. Zatem na rzeczywistą diodę należy patrzyć tak:
    Arduino: Dlaczego tylko czerwona dioda świeci przy a == 4?
    VD zależy od materiału z którego wykonana jest dana dioda (od strony praktycznej - od jej koloru), a różnice między nimi są nawet ponad 2-krotne - od 1,7V dla niektórych czerwonych (GaAlAs), po ponad 4 V dla UV (InGaN). W diodzie RGB, każdy LED charakteryzuje się innym spadkiem napięcia w kierunku przewodzenia: R (1,7 V), G (2,2 V), B (3,5 V). Oczywiście podane napięcia są orientacyjne.

    Żeby przy tym samym wypełnieniu PWM każda z diod emitowała światło o takim samym natężeniu, trzeba dobrać odpowiednią wartość rezystancji do każdego koloru, na pewno rezystor dla kanału R musi mieć większą wartość niż dla kanału G czy B.
  • #25 17920508
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    Szczerze? Do tego po co jest ten rezystor to masz racje, ale dlatego piszę w tym dziale :):)
  • #26 17920535
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    lukaszd82 napisał:
    minecraftferaj napisał:
    Ja się tam uczyłem, że można też podłączyć masę przez rezystor.

    Można, ale dla każdej diody oddzielny rezystor a nie jeden dla wszystkich trzech.

    minecraftferaj napisał:
    Ale to jest jedna dioda RGB tzn. w jednej obudowie ze wspólną masą.

    Możesz dać jeden wspólny rezystor ale musisz zadbać aby w jednej chwili nie świeciła więcej niż jedna struktura. Aby świeciły z tą sama jasnością musisz programowo skorygować jasność świecenia. Strasznie upierdliwe takie sterowanie ale możliwe do zrealizowania. Przerwanie od PWMx uruchamia timer y zatrzymując timer x. Przerwanie od PWMy uruchamia timer z zatrzymując timer y. Przerwanie od PWMz uruchamia timer x zatrzymując timer z.
    Można to zrobić tez na jednym timerze z trzema PWM lub dwóch timerach, gdzie jeden ma dwa wyjścia PWM drugi co najmniej jedno.

    Ja z wrodzonego lenistwa, zrobiłbym jak już kilka razy pisano i użył trzech rezystorów.
  • #27 17920819
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38915
    Pomógł: 3177
    Ocena: 6563
    Tak - sterowanie j/w jest jak najbardziej możliwe. Nosi to potoczną nazwę "przemiatania", a bardziej fachowo sterowania multipleksowego (choć de facto tutaj typowego multipleksowania nie ma). W komercyjnym projekcie, gdzie liczy się każdy grosz, może i miało by to sens.

    minecraftferaj napisał:
    Szczerze? Do tego po co jest ten rezystor to masz racje, ale dlatego piszę w tym dziale
    No i dobrze, że piszesz, ale źle że zacząłeś od "obwiniania" Arduino o złe wykonywanie programu. Nie wiem czemu ale obecnie ludzie uważają, że programowanie jest łatwiejsze niż elektronika i chętniej uczą się programowania niż choćby podstaw elektroniki. Druga rzecz to szukanie winy wszędzie, byle nie po swojej stronie. Taka ślepa pewność siebie. Wiem, że robię spory off-topic, ale kiedyś zrobiłem eksperyment - poprawkowe kolokwium zaliczeniowe z elektroniki właśnie. Nietypowo zrobiłem to kolokwium w formie testu (n a prośbę zainteresowanych). Pytania były bardzo proste i wystarczyło odpowiedzieć prawidłowo na kilka by zdać. Z tego co pamiętam zdała chyba jedna osoba. Gdzie był haczyk? W punktach karnych za błędną odpowiedź. Wszyscy zaznaczyli odpowiedzi na wszystkie pytania. Zupełnie nie potrafili ocenić na ile są pewni swojej wiedzy, ani oszacować ryzyka związanego ze "strzelaniem" (większość udzieliła prawidłowych odpowiedzi na wystarczającą liczbę pytań by zdać nawet na 4, ale pogrążyli się "strzelaniem" na pozostałe pytania). Co więcej, podczas tego kolokwium zostali zostawieni sami na ok 15 minut - mogli więc ściągać "ile wlezie"... ale i tutaj nie wiedzieli od kogo warto ściągać.
  • #28 17922082
    minecraftferaj
    Poziom 9  
    Posty: 48
    Pomógł: 1
    Ocena: 6
    tzok napisał:
    Tak - sterowanie j/w jest jak najbardziej możliwe. Nosi to potoczną nazwę "przemiatania", a bardziej fachowo sterowania multipleksowego (choć de facto tutaj typowego multipleksowania nie ma). W komercyjnym projekcie, gdzie liczy się każdy grosz, może i miało by to sens.

    minecraftferaj napisał:
    Szczerze? Do tego po co jest ten rezystor to masz racje, ale dlatego piszę w tym dziale
    No i dobrze, że piszesz, ale źle że zacząłeś od "obwiniania" Arduino o złe wykonywanie programu. Nie wiem czemu ale obecnie ludzie uważają, że programowanie jest łatwiejsze niż elektronika i chętniej uczą się programowania niż choćby podstaw elektroniki. .

    Ja mam 12 lat i chętniej się ucze elektroniki niż programowania. Z programowaniem mam tak : Chcę coś szybko napisać np. na arduino, ale nie chce działać i przez to porzucam cały projekt. A z elektroniką to sie siądzie z tatą poczyta cały dzień notę katalogową i czegoś nowego przy okazji nauczy( w programowaniu jak się nie wie jak coś działa to trochę słabo).

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik ma problem z kodem Arduino, w którym przy a == 4 zapala się tylko czerwona dioda, podczas gdy niebieska i zielona działają poprawnie. Po analizie kodu i schematu, użytkownicy sugerują, że problem może wynikać z niewłaściwego podłączenia diod LED, braku odpowiednich rezystorów dla każdej diody, lub zasilania. Użytkownik potwierdza, że zasilanie wynosi 1,5A, a diody to standardowe RGB. Po próbach z PWM i zastosowaniu tranzystora NPN, problem został rozwiązany, a diody zaczęły działać poprawnie. Wskazano również na znaczenie stosowania osobnych rezystorów dla każdej diody, aby uniknąć problemów z różnymi napięciami przewodzenia.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA