Pixel POI

Avatar
s.dvid
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2014. január 6. hétfő, 9:36

Pixel POI

Hozzászólás Szerző: s.dvid »

Sziasztok!

Egy tűzzsonglőr csapat beltéri bemutatójához szeretném a következőt megcsinálni:
PIXEL POI http://www.youtube.com/watch?v=wTQeqxeYvGc

A működése egyszerűen leírható:
-Vegyél kb 2x30 RGB LEDet (2 oldalas nyák)
-Valamilyen módszerrel lehessen külön külön ki be kapcsolni őket
-max. 40ms delayyel kell a megfelelő pixeleket villogtatni (hogy a 25 FPS meglegyen).

A probléma:
-Hogy kellően kicsi (max átmérője kb mint egy sodrófa :D ) legyen az UNO és a Mega alapból kiesik
-Nano panelem van, a 14 digitális kimenetre hogy lehet rávarázsolni 30/30+ LED-et? - Ha nem akkor talán
egy megfelelő AVR... majd eldől
-Programozás... Ha a program túl nagy lenne még-még megoldható egy SD kártya hozzáillesztése,
de jó lenne valamilyen grafikus szerkesztő, amibe beírva/megrajzolva a mintát, az kidobja a kódot.
(én itt egy egyszerűbb (már akinek) excel file-ra gondoltam).

Ha van ötlet azt szívesen várom!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Pixel POI

Hozzászólás Szerző: Robert »

SPI busz, és a 74595 shiftregiszter. Ha szemtelen vagy akkor a TPIC595 (kimenet nagyon terhelhető).
Az adatok shiftelése max 4 MHz-vel mehet. A shiftregiszterből végtelen számút összefűzhetsz. én nem vacakolnék multiplexeléssel....

Ok, de hogy oldják meg mások?

Kulcszó: propeller clock, illetve ha van gyorsulásmérő, azzal is pozícionálhatsz...
Avatar
s.dvid
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2014. január 6. hétfő, 9:36

Re: Pixel POI

Hozzászólás Szerző: s.dvid »

Gondoltam én is regiszterre, de nem lenne túl bonyolult felprogramozni?
Ha belegondolok, hogy teszem azt... youtube felirat. Már az is eléggé nagy falat pixelekre bontani.
Bár lehet hogy tévedek.
37581.jpg
Ezt pixelről pixelre felbontani... Nyilván nem kell hogy tökéletes HD legyen, úgysem lesz az.
Ha gondolkozok... egy fordulat 360 fok.
-Legyen a kép 180 fok pörgetés alatt 360 oszlopra bontva
-Az ugye azt jelenti, hogy 360x megadom hogy az adott virtuális sorban mely ledek gyulladjanak fel...
Nagy falat :P
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
s.dvid
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2014. január 6. hétfő, 9:36

Re: Pixel POI

Hozzászólás Szerző: s.dvid »

Gyorsan kreáltam egy excelt. Valamilyen ilyen formában kényelmesebb lenne a programozás
Ha a cella = x, akkor érték = 1
Ha a cella !=x, akkor 0

A mintát x-ekkel megrajzolod (fekete rész a képen)
Ő meg kidobja az értéket alul (fehér rész) és így binálisan, úgymond már kódolva van a kép
youtube.jpg
Erről vélemény? Nagy hülyeség?
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Pixel POI

Hozzászólás Szerző: Robert »

Tipp:
- Kép pixelesen elment.
- 8x-ra nagyít.
- ASCIIArt-ként leképezteted.

Kész van a képed :)
Avatar
s.dvid
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2014. január 6. hétfő, 9:36

Re: Pixel POI

Hozzászólás Szerző: s.dvid »

Kezdetnek szereztem 3 TLC5940-et beépített regiszterrel.
Szerencsére a Texas Instruments ennyit küld sample-ként,
így nem kellett megvenni a Hestore 3000 forintos darabárán 8)

Ez előtti próbálkozás: -ha már sokat emlegettem- digitalWrite
paranccsal leírtam a youtube feliratot 5 pixelben - ugyancsak: 8)
https://www.youtube.com/watch?v=dO2kLDXYgGE
Minőségben nem a legjobb, de látszik aminek kell.

Ezt az ASCIIArt dolgot viszont nem nagyon értem, ennyire nem
vagyok belemerülve :)
Avatar
s.dvid
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2014. január 6. hétfő, 9:36

Re: Pixel POI

Hozzászólás Szerző: s.dvid »

Ha valaki hasonló projektre vetemedik, annak leírom, hogy eddig mit csináltam. Azután persze egyéni gondolatmenet alapján lehet fejlesztgetni a dolgot :)
Ez a kód a következőt adja ki:
meander.jpg

Kód: Egész kijelölése

int p1 = 13;
int p2 = 12;
int p3 = 11;
int p4 = 10;
int p5 = 9;
int p6 = 8;
int p7 = 7;
int p8 = 6;

void meander() { 
  //1
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p2, LOW);
 digitalWrite (p3, LOW);
 digitalWrite (p4, LOW);
 digitalWrite (p5, LOW);
 digitalWrite (p6, LOW);
 digitalWrite (p7, LOW);
 digitalWrite (p8, LOW);
//2
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, LOW);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, HIGH);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
//3
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, LOW);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, HIGH);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 //4
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, LOW);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, LOW);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 //5
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, LOW);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, LOW);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 //6
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, LOW);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, LOW);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 //7
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, LOW);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, LOW);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 //8
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, LOW);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, LOW);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 //9
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, HIGH);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, LOW);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 //10
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, HIGH);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, LOW);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 //11
 delay (5);
 digitalWrite (p1, LOW);
 digitalWrite (p2, LOW); 
 digitalWrite (p3, LOW);
 digitalWrite (p4, LOW);
 digitalWrite (p5, LOW);
 digitalWrite (p6, LOW);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 //12
 delay (5);
 digitalWrite (p1, HIGH);
 digitalWrite (p2, HIGH); 
 digitalWrite (p3, HIGH);
 digitalWrite (p4, HIGH);
 digitalWrite (p5, HIGH);
 digitalWrite (p6, HIGH);
 digitalWrite (p7, HIGH);
 digitalWrite (p8, HIGH);
 delay (5);
}
  
void setup() {
  pinMode(p1,OUTPUT);
  pinMode(p2,OUTPUT);
  pinMode(p3,OUTPUT);
  pinMode(p4,OUTPUT);
  pinMode(p5,OUTPUT);
  pinMode(p6,OUTPUT);
  pinMode(p7,OUTPUT);
  pinMode(p8,OUTPUT);
}

void loop() {
  meander ();
}
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
s.dvid
DrótVégénSzéndarab
Hozzászólások: 25
Csatlakozott: 2014. január 6. hétfő, 9:36

Re: Pixel POI

Hozzászólás Szerző: s.dvid »

Elkezdtem nagyban gondolkozni, írtam egy excel táblát (32 RGB ledre) ami az adott cellá(k)nak az értékét bináris számmá alakítja, a végén kiköpi a kódot így:
digitalWrite(latchPin, LOW);shiftOut(dataPin, clockPin, MSBFIRST, 000111111111111111111000000000000000111111000000000000000111111111111111000111111000000111111000);digitalWrite(latchPin, HIGH);delay (5);
A kérdés, mit kellene varázsolnom ahhoz, hogy a programozó ne dobja ki, hogy "integer constant is too large for 'long' type"

Másik kérdés:
Működni fog-e ezzel a kapcsolással, ha 4-et összerakok?
kapcs.png
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Válasz küldése