Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 12 of 12

Thread: OctoWS2811 LED Panels - Live Streaming Video - Issues

  1. #1

    OctoWS2811 LED Panels - Live Streaming Video - Issues

    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

  2. #2
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    27,653
    Quote Originally Posted by mountaindonky View Post
    it gives me a "not recognized" response
    ...
    Any idea on where I should begin to troubleshoot this issue?
    Posting the exact output from the ledvideo program, rather than merely a description, might be a start?

  3. #3
    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

  4. #4
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    27,653
    Quote Originally Posted by mountaindonky View Post
    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.

  5. #5
    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?

  6. #6
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    27,653
    Quote Originally Posted by mountaindonky View Post
    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.

  7. #7
    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?

  8. #8
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    27,653
    Quote Originally Posted by mountaindonky View Post
    Can the code be modified for this?
    Yes

    Or even though the dimension proportions are the same, will it take significant reprogramming?
    and yes

  9. #9
    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.

  10. #10
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    27,653
    Quote Originally Posted by mountaindonky View Post
    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.

  11. #11
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    27,653
    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?

  12. #12
    Senior Member
    Join Date
    Jan 2013
    Posts
    966
    I would be very interested in finding out how one would " modify code" for a micro controller without re- programming it ?

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •