OctoWS2811 LED Panels - Live Streaming Video - Issues

Status
Not open for further replies.
I have begun developing a set of OctoWS2811 LED Panels that I would like to stream video to via a USB capture device using the v42l library on Ubuntu. I am using Paul S's project as a starting point:

http://www.dorkbotpdx.org/blog/paul/maker_faire_2013

First I would like to get the panel's working using the built in webcam on my laptop, then adapt the software to use the incoming video from the USB capture device instead of the webcam.

My Teensy3.0 is programmed correctly using the VideoDisplay program created by Paul S because I am able to correctly display video on the LED panel using the Processing 2 'movie2serial' Program also created by Paul S.

When I run the 'ledvideo' program on Ubuntu (source code provided by Paul S. at the link above) my webcam is detected, my Teensy3.0 is detected, and the query of the Teensy comes back with the correct data, but the LEDs are not lighting up. After the query response from the Teensy populates Terminal though, it gives me a "not recognized" response, then begins the "........." with the webcam still activated.

Any idea on where I should begin to troubleshoot this issue? I really would like to get this working as it will open up the use of WS2811 panels for me for quite a few projects.

Thank you all for your help!

Sean
 
Paul,

I am posting the exact output from the ledvideo program:

"not recognized".

Here is the full terminal readout:

set_animation 1
set_animation 2
set_animation 3
set_animation 4
set_animation 5
set_animation 6
set_animation 7
set_animation 8
set_animation 9
set_animation 10
set_animation 11
set_animation 12
set_animation 13
set_animation 14
set_animation 15
set_animation 16
set_animation 17
set_animation 18
set_animation 19
set_animation 20
scan devices
new_video_device: /dev/video0
image size 320x240
bytes per line 960
bytes per frame 230400
new_serial_device: /dev/ttyACM0
send query
query response: "60,16,0,0,0,0,0,100,100,0,0,0"
not recognized
....................................................................................................


Hope this helps.

Thank you,

Sean
 
send query
query response: "60,16,0,0,0,0,0,100,100,0,0,0"
not recognized

Your board is not 1 of the only 2 sizes ledvideo can use.

From serial.c in ledvideo:

Code:
        if (led_width == 60 && led_height == 16 && led_layout == 0 &&
          video_xoffset == 0 && video_yoffset == 0 &&
          video_width == 100 && video_height == 50) {
                if (led_top_fd >= 0) close(led_top_fd);
                printf("LEDs top half\n");
                led_top_fd = fd;
                return;
        }
        if (led_width == 60 && led_height == 16 && led_layout == 0 &&
          video_xoffset == 0 && video_yoffset == 50 &&
          video_width == 100 && video_height == 50) {
                if (led_bottom_fd >= 0) close(led_bottom_fd);
                printf("LEDs bottom half\n");
                led_bottom_fd = fd;
                return;
        }
fail:
        printf("not recognized\n");
        if (fd > 0) close(fd);
        return;

The ledvideo program is NOT highly flexible like movie2serial. It only works with exactly 1 configuration, as you can see from this code.
 
Is there any way to change the size that ledvideo can use? My panels were planned to have a height of 80 pixels and a width of 16 pixels. I am sure it isn't as easy as changing the values in serial.c that you have mentioned above? The other possible solution, working with what you have already coded, is to work with multiples of 60 and 16. Say a 120 x 32 panel. Also, can the height and width values be interchanged in serial.c?
 
Is there any way to change the size that ledvideo can use?

Only by editing the source code can you change these things.

My panels were planned to have a height of 80 pixels and a width of 16 pixels. I am sure it isn't as easy as changing the values in serial.c that you have mentioned above?

That's correct. You will need to edit much more to use a different width.

Perhaps ledvideo may someday gain the flexible image scaling of movie2serial, but it is a considerable amount of work. Image scaling is very easy in Processing, because of the built-in image features. In C language, that stuff must be built from scratch or used from a library. Both ways involve significant coding.

I developed ledvideo very quickly using only very simple algorithms. It crops 300 of the 320 pixels and then just averages blocks of 5 pixels to get the 60 wide needed for the LEDs. You could edit the code, perhaps use all 320 pixels and average groups of 4 pixels? To do this, you must study the code and do significant reprogramming. There is no simple and easy answer for ledvideo at 80 pixels which does not involve substantial programming effort.
 
Thank you Paul. That is all very helpful information. As I look at the code more, I can see the amount of effort involved in changing the dimensions.

I can modify my planned panels to conform to your aspect ratio. I am thinking 120x32 using 4 Teensy3s. However, I would like to have the panels rotated 90 degrees to yours so that the 120 pixel length is the overall height of the panel. Can the code be modified for this? Or even though the dimension proportions are the same, will it take significant reprogramming?
 
I'm sorry, but what I meant was, can the code be modified to accommodate an LED panel that has a height of 120 pixels and a width of 32 pixels easily and without any reprogramming? Unfortunately, I do not have experience with C+ or many other programming languages other than HTML and CSS so I think it is a little over my head to attempt any reprogramming of ledvideo short of modifying specific number values.
 
what I meant was, can the code be modified to accommodate an LED panel that has a height of 120 pixels and a width of 32 pixels easily and without any reprogramming?

No. The ledvideo program is written for only 1 size. Any other size requires programming in C.

Use movie2serial, which automatically recognizes almost any size, to use other sizes without reprogramming the code.
 
Just in case that isn't perfectly clear, there is absolutely no other size that can be used with ledvideo's code as-is. None. Any size, no matter how apparently related to 60x32, would requite editing the C code. Is that clear?
 
I would be very interested in finding out how one would " modify code" for a micro controller without re- programming it ?
 
Status
Not open for further replies.
Back
Top