You do not state “why”
Here’s a current 2-Arduino I2C setup I have working:
- GPS speed alerter. It beeps and flashes neopixels depending on how fast over the set speed limit I’m going.
- Arduino 1: GPS and interface control. I2C Master. It gets the speed, controls the OLED, and handles rotary encoder interaction. So, I click the encoder, and can set a new speed.
- Arduino 2: Beep and NeoPixel controller. I2C Receiver. Receives 2 bytes (speed and limit), then beeps and/or animates NeoPixels depending on how fast over. Say I have the limit set to 60. If I go 61-65, the pixels flash orange. If 66+, the pixels flash a random sequence of police-light imitations. It’s pretty sweet.
I did this to eliminate some problems. First, NeoPixels don’t play nice with hardware interrupts. So, while the encoder click worked any time you’d click, the pixels would mess up. But, running without interrupt, the pixels would be animating and the encoder click would be ignored. Perhaps I could change things up and convert all my animations to async, but that seemed overly complex, when I could just use two arduinos to split the processing.
Why I’d like to swap one of them with a ESP12e:
Configuration and unit testing. I’d like to make the ESP12e a server on its own access point in order to do some fine tuning and trigger test procedures. Like, “play animation 1” or “set incremental mode to 5’s instead of singles” or “turn buzzer off” or tap into other GPS values, etc.
Does this make more sense?