First, lets start with a basic understanding of how pixels address pixels and then on to how this affects the spacing of pixels.
While each pixel protocol/chip type (2811, 2801, 6803, 1804, etc) has a slightly different method, pixel controllers generally generate a large packet of data that contains all the information for all the pixels in the entire pixel string. It would look something like this if we had three pixels connected to the pixel controller:
DMX Channels 1 to 9 (1,2,3 / 4,5,6 / 7,8,9) comes in via RS485 (E1.11) or over TCP/IP (Artnet/E1.31) > Pixel Controller Converts this to SPI Data Output > Data Packet [Pixel 1: 255,255,255][Pixel 2: 128,128,128][Pixel 3:000,000,000] (this is a pixel with a full on white, then one with half-on white and then the last pixel is off)
As you might have noticed, "normal" pixels don't have any pre-set address - so how do they get addressed? They don't - a pixel only knows that it takes a data packet from the preceding pixel and then processes it. So, when the above pixel "packet" is processed by each pixel in this three pixel string, it would look like this:
- PIXEL 1 Sees: [255,255,255][128,128,128][000,000,000], it takes off the first instruction (255,255,255), processes the instruction, cuts off the first instruction (that it processed) and then passes the remaining packet along to the next pixel
- PIXEL 2 Sees: [128,128,128][000,000,000], this pixel doesn't know if it is the first or middle pixel and again, processes the first instruction, then cuts it off and passes the remainder along to the other pixels
- PIXEL 3 Sees: [000,000,000], this is the last instruction and so even if there are additional physically connected pixels, this pixel doesn't pass anything along because it is the final instruction.
So, you can see why you need to define the number of pixels in a controller and also why pixels don't have pre-set addresses. You can also see why pixels always have an "DATA IN" and "DATA OUT".
The proceeding information is at the logical level - what happens at the physical level? Well, to start with, there are no absolute numbers for the distances from pixel to pixel (or from the controller to the first pixel) since a large number of factors come into play, some which you can control, other factors which you can't. These factors include the wire gauge (resistance), the wire capacitance, the design of the chip (how much power is dedicated to repeating the signal), signal interference, the design of the supporting circuits and others. Here are some basic rules of thumb for most common pixels (2811, 2801, 6803, 1804, etc):
What do you do if you need to go long (20+ feet) distances between pixels or the start of your pixel string from the controller? The solution is simple - a null / ghost / repeater. Nearly all current pixel controllers have a feature that allows you to specify a set number of pixel to be used only for repeating the data to the start of the string (some controllers have mid-string null pixels also). This is a simple trick, at the controller level, that presents null (hence the name) data to the pixels who's sole job is to just repeat the data and not actually be part of the "controlled" string. So, then when you sequence your show, you don't have to factor in that the first, say, 3 pixels are not used, the controller simply removes them and makes the 4th pixel the "first" pixel in the string. It is useful to set null pixels in the controller, as opposed to software (see below) because you can make adjustments as needed. Say that you think it will take two null pixels to go 20 feet but when you actually put up your display, you discover it takes three - no problem, you just change the settings in you pixel controller from two to three - no reprogramming of your display is required.
- 0 to 10 Feet - No problems
- 10 to 15 Feet - Generally OK with good connections and wiring
- 15 to 20 Feet - Variable and could result in possible issues
- 20+ Feet - Expect problems or the need for specific resistor banks or other work-arounds
That said, you can sometimes need to have more complex null pixels and you can also setup null pixels in your sequencing software. If you know an element has 100 pixels and it will be 30 feet from the controller (one pixel per 10 feet) to the start of the element, you simply setup your sequence to have 103 pixels and on pixels 1 through 3, you just always leave these "off". Of course you can also do this mid-string by just not sequencing a "null" pixel.
We hope this helps explain not only addressing of pixels but the relationship of pixels and their physical spacing and how to work within those limits of pixels.