Serial LCD driver, vs. I2C slave arduino?

I may get one of the Serial LCD boards just to play with, AND try a second RBBB (I have a bare RBBB PCB and a bootloaded 328, so it would just be some rummaging to put one togeher.)

I'm just trying to get a feel from more experienced folks about the amount of complexity it would take to program an arduino to act as an I2C slave LCD driver, plus be able to use it's other pins (PWM please!) for "normal" use. I understand that I could use the liquidcrystal library to control the LCD from the slave arduino, but what I don't understand is how I would transmit commands and data from the master to the slave. All the I2C master-slave examples I've found concentrate on really simple things, where the slave only "knows" how to do one thing (blink an LED), and just waits for a pre-designated command from the master before doing it.

I cross-posted this on modern device's forum, and someone asked for more info on my project, so here's my response, in case people here would like more background:

Don,

I am working on a controller for an aquarium. This is intended to be both a functional project, and a learning experience. So, yeah, saving twelve cents isn't my only motivation here, so if that's what came across in my original post it wasn't intentional! While it would be simple to use the Serial LCD board, I'm wondering if the other option I presented (using another RBBB, communicate via I2C) would help me solve some other problems I may end up having as I continue this project. If I went with the Serial LCD board, all I'd get is an LCD. If I went with an RBBB, I get more PWM outputs, etc. But I'd need to do a lot of programming, in an area I'm not familiar with.

Basically what I'm looking for in this thread is a general idea - would that be a boneheaded and overcomplicated approach? If so, I'll just use the Serial LCD board, and port expanders or other add-on ICs to handle my potential other needs.

Currently, I have the following working:

  1. controlling several strings of high brightness LED lighting via PWM (I have drivers built around the OnSemi NCP3066 IC, which take a PWM signal to dim. I am using this functionality to approximate changes in light intensity throughout a typical day on a natural reef - dim in the morning, fading up to full intensity at noon, then back down to dim in the evening. Having multiple strings controlled independantly lets me also simulate relative position of the sun as it moves across the sky.)
  2. using one-wire for several temperature sensors
  3. using a DS1307 RTC via I2C for time backup (if the power goes out in the middle of the day, my program needs to maintain time when power comes back on, in order to pick up at the correct point in lighting schedules, etc.)

These items are all in progress. For some, I have some of the code and some of the hardware done, but for others, it's conceptual, so I don't know exact requirements (i.e. I don't really know if I'll need a bunch more PWM pins, but I have a feeling I will). And, I may add or drop from this list as needs dictate. Presenting this in order of decreasing importance (i.e. I will certainly do #1, but maybe not number 7)

  1. Controlling heaters and cooling fans from the temperature sensors
  2. Controlling one or more DC pumps to generate random water currents in the aquarium (the pumps have drivers that are designed to take a PWM signal)
  3. A "storm mode" for the lighting, such that the lighting dims (to simulate clouds blocking the sun) on a random schedule (hardware already in place, just need to code it)
  4. A moonlight simulation, following a 20-day moon cycle - dimming more LEDs via PWM
  5. A pH probe to monitor pH, and control dosing from a kalk reactor and/or calcium reactor to maintain steady pH
  6. An LCD to display temperature, pH, and other status information
  7. A "spill detector" to sense if water ends up somewhere where it shouldn't be (i.e. on the floor!) due to a leak or overflow somewhere in the system
  8. An ethernet connection to twitter or send text messages when alarm conditions occur (temperature out of range, pH out of range, spill detected, etc.)