100+ encoders

I still think the many MCU solution is good. At eBay prices you get 5 ATMega48 for similar price as 10 74HC165 (in DIP, if you can handle SMD the registers seem a bit cheaper). Better port expanders seem a lot more expensive. So for one pin cost of ATMega vs HC165 is about the same. 1 ATMega have 22 I/O lines free (using internal RC oscillator and not disabling reset). All pins have pin change interrupt functionality so you don't need to scan for pin change constantly - you just wait for interrupt to come. You may use 2 lines for I2C and you have 20 lines left for 10 encoders per 1 ATMega. And now the best thing: the main controller may act as I2C slave for all the ATMegas - you don't have to poll everything constantly in your main program. ATMegas wait for interrupt, if an interrupt from encoder comes it decodes what happened and send this via I2C to main controller - no need for "as fast as possible", no risk of lost or wrongly read transitions because main program was too busy doing something else. Since you don't have to read everything you have much less data to send, you can use slower clock speed making the I2C bus more reliable... Simply there are only advantages of this solution :wink: