On my first big Arduino-project I made a game using the following Arduino's and the I2C-protocol:
1x Mega as master
4x Mega as slave
2x Uno as slave
The Arduino's controll a physical game where the players have to push 96 different buttons, according to how certain lights are controlled by relays. The two uno's are used for a MP3-shield and a timer.
My code might not be perfect at all, but I'm happy with how it works. The only problem is that sometimes my master freezes. This is on different moments, but always when the master processes multiple I2C-communications. Sometimes it completes the whole game without problem, but other times it freezes at different moments.
I used a 1ms delay at the end of the loop on all arduino's, because it looked like this might make the connection most stable. The I2C-cables are up to about 1m long, I can't make them shorter. I added 5K1-resesistors from the 5v-line of the master-Mega on the SDA and SCL line. Alle buttons and relays in the game are connected to seperate power sources and don't use the internal pullups.
The code is quite long, so I uploaded the code of the master and the code of 1 mega slave to Github: GitHub - mrcbrgrs/Arduino-mega-buttons-game. Some comments might be in Dutch, sorry for that.
Who has an idea how I can stop the Mega from freezing?