Wpis z mikrobloga

Zrobiłem sobie ambilighta z użyciem #java i #arduino więc opisałem na blogu, jeszcze trzeba tam wprowadzić drobne poprawki, ale działa, więc może się komuś przyda. Wykorzystywany jest pasek neopixelowy, który można zamówić u majfrendów, ale po drobnych przeróbkach można to spokojnie przerobić na zwykłe diody RGB.
http://javastart.pl/b/programowanie/ambilight-w-oparciu-o-jave-i-arduino/
#javastart
  • 19
@Eoghan: Cumplu, zajebista sprawa, powiedz mi, używałeś oryginalnego arduino czy klona? Zainspirowałeś mnie trochę do kupna własnego i tak się zastanawiam, lepiej dopłacić do oryginała czy kupic klona "kompatybilnego z arduino" ?
Zastanawiam się teraz w jaki sposób zrobić to samo ale z TV bez podłączania PC do TV :P
@sambarumba: ja akurat mam oryginalne arduino, ale to tutaj nie ma większego znaczenia. Pasek LED jest dosyć drogi, więc możesz kupić klona a z zaoszczędzonej kasy zamówić pasek i dokupić jakiś zasilacz.
@adachoo: pasek jest zamontowany za monitorem w mocno prowizoryczny sposób, ale generalnie na pasku jest taśma samoprzylepna, więc da się to zrobić w sensowny sposób. Fajny efekt też można zrobić jak się to zamontuje np w szczelnie za
@Eoghan: Sam kiedyś próbowałem coś takiego zrobić, ale nie szło mi obliczanie kolorów na podstawie wyświetlanego obrazu. Teraz spróbuję to zrobić na podstawie Twojego programu. Powiedz mi tylko, czy będę w stanie w miarę prosty sposób ten kod na Arduino przerobić tak, żeby wykorzystywał zwykłe, pojedyncze diody RGB zamiast paska? Wiem, że efekty będą raczej marne, ale chciałem zobaczyć jak to zadziała nie posiadając paska.
@RayRayRay: dane są wysyłane w postaci:
r[0]
g[0]
b[0]
r[1]
g[1]
b[1]
itd.
czyli kolejne wartości koloru dla kolejnych diod. Jedyna zmiana jaka będzie potrzebna to zamiast zapalać diody tak jak u mnie poprzez bibliotekę NeoPixela
strip.setPixelColor(i*LEDSPERSECTION, r[i], g[i], b[i]);
będziesz musiał zapalić odpowiednią diodę przekazując jej te kolory RGB zapewne wykorzystując analog/digitalWrite()
Problemem może być to jak podłączyć kilkanaście/dziesiąt diod do arduino i sterować nimi osobno
@Crypton3: to zależy głównie od dokładności uśredniania kolorów i rozdzielczości. Przykładowo jeśli chcesz mieć na maxa dużą dokładność i liczyć średnią ze wszystkich pixeli to będziesz miał 1920x1080(ponad 2mln) przebiegów pętli, w każdym z nich tworzysz obiekt, wyciągasz informacje o kolorach, zapisujesz do tablicy - wtedy będzie dosyć ciężko :)
W programie jest stała SECT_SKIP, która mówi o tym co który pixel chcemy uwzględniać w uśrednianiu kolorów, przy aktualnym ustawieniu, czyli
@Eoghan: A co do uśrednionego koloru , kiedyś nad tym pracowałem trochę i najszybsze było skalowanie danego wycinku ekranu do 1x1 i pobranie koloru tego piksela.
@Eoghan: Mam takie pytanie.
Moje arduino dopiero leci do mnie od skośno okiego, tzn. nie znam się.

Można taki setup mieć na stałe?
Nic nie stoi na przeszkodzie, żeby z czegoś takiego korzystać na codzień? (oprócz #!$%@? cpu przez program do próbkowania)
@Gorion103: tak, nie będzie problemu, na stałe polecałbym jedynie podpiąć osobne zasilanie do paska, bo arduino średnio daje radę uciągnąć większą jasność i większą ilość ledów. Nie próbowałem też sposobu z wyliczaniem kolorów przez zmniejszenie danego fragmentu ekranu do 1x1px, a myślę że to dodatkowo mocno by odciążyło procka obliczeniowo.