I would like to combine leds in this fashion with a push button and I would like to use a minimal amount of wire.
Any idea if there are any IC's that I can use to make a chain of push buttons (or capacitive touch sensors), with a protocol like SPI or I2C. Of course as inexpensive as possible (I don't want to chain one Arduino for each button). Although maybe an ATtiny85 could be a solution (Using an ATtiny85 as SPI Slave - Microcontrollers - Arduino Forum)
I tried to search a bit in the forum, but couldn't find anything. Maybe I'm searching with the wrong terms.
How far are the different node away from each other? How many of them do you plan to use? What speeds do you need?
The LED stripes/strings use specialized chips that buffer the signal before sending to the next node, so you don't have a bus in it's near definition but a string of repeaters. So the solution to your problem depends on the questions above.
So we have to calculate with a total length of about 12m, far too much for either I2C and SPI.
Are the LEDs RGB or just one colored?
For RGB LEDs you don't have enough pins though on an ATtiny85 but an ATtiny84 should have enough of them. You still need an LED constant-current driver (to have predictable results) and you need to make the data lines a loop (the last node connects back to the controller) to be able to get the gathered data about the button states. The speed shouldn't be a problem in this dimension (a clock rate of about 30kHz should be enough.
What do you suggest for protocol? I had a string of led lights that uses TTL levels for distances of 30cm between (20 lights). Or do I need something like RS485 (but that requires an extra IC)?
I would like to use RGB, that would be four pins. However if I use 5050 RGB leds with a WS2812 I can drive them as SPI, needing just one wire.
Where can I find good information about maximum lengths supported? I found a good basic introduction, this doesn't mention lengths though.
It depends on the capacity of the used wiring and the speed you want to drive on it but in practice it's about 0.5m (at least for I2C, I don't have experience with SPI buses longer than a few cm).
I would like to use RGB, that would be four pins. However if I use 5050 RGB leds with a WS2812 I can drive them as SPI, needing just one wire.
That's not really an SPI, it's more like a OneWire connection. That's a possibility that may lead to a ATtiny85 as the controller of the node.
What do you suggest for protocol? I had a string of led lights that uses TTL levels for distances of 30cm between (20 lights). Or do I need something like RS485 (but that requires an extra IC)?
What are the requirements? Does it have to be 2 wires or are 3 wires acceptable?
RS485 is a bus technology that may be good solution for you but you're right that it needs additional chips. It's probably the easiest solution if you want to use standards.
I'm interested in doing something similar. I really want to take and build on what has been done with blinkM. I saw in the BlinkM minim documentation that it's possible to use the i2c pin on as digital input, but I'm guessing this is something that's only applicable in a standalone mode and not daisy-chained network mode.
Perhaps the best choice is to rebuild blinkM but using the AtTiny84 which has additional pins. Luckily someone has provided support for the software i2c library.
Luckily someone has provided support for the software i2c library.
The Tiny (at least the ATtiny84) has support for I2C in hardware using the USI interface. There are libraries to use it as a slave and as a master with this. Why do you want to use a software emulation?