I'm home safe and sound. As requested, I've uploaded my in-progress Fritzing document. I also verified this is how I indeed have my project wired. The resistor values are correct also. They don't have all of my exact parts, so I had to wing it on a few things (like the 8-relay board), but I think it's something somebody could build from. The breadboard diagram is complete up to where I am at in my project, and the wiring schematic in the file is maybe half done.
You can download the Fritzing file here
EDIT: updated file 8/14/14:
iAqua.fzz
Keep in mind, that's a living document on my end, and it's not final.
For those that just want a quick glance, here is what the breadboard looks like (NOT INCLUDING THE SCREEN):
EDIT: updated image 8/13/14
As I said, what is not on there are the screen connections. That's because there are almost 30 of them, and it'd just clutter it all up. Below is an image of how the screen hooked up, with the exception that I hooked LCD pin 6 to 5v and not 3.3v. Also, pin 19 on the screen goes to the breadboard lead that says "LCD BACKLIGHT PIN." That allows for the auto-dimming and backlight brightness control that i wrote. The image was taken from the
stilo documentation:
This is my first time ever using Fritzing, or ever making a wiring diagram. I'd love to hear if anybody has any pointers, or notices any mistakes.
Also, on the stilo project that got me started, he had put 20K resistors on every single pin between the Arduino digital pins and and the screen. I think I found somebody else that had none, but I don't recall. I've noticed that most things that plug into an arduino end up with a resistor on them. In the process of wiring my screen, I either copied a person that didn't use them, or I completely forgot. I just realized that I have no resistors, but it works fine.
I would love input on if I should use them, and why. Go easy on me, I'm still in the early stages of learning this level of electronics.
Also, I updated the first post with version
1.0.1 code:
iAqua.zip
CURRENT VERSION: 1.0.1 (7/13/14)
- created smart startup routine
- fixed math bug with dosing pump speed saving to eeprom
- changed PWM pins for dosing pumps to make room for RGBW PWM pins
- changed from previous RTC library to the more common RTClib
The smart startup routine looks through the schedules and turns on any power relays that are supposed to be on. If it turns the lights on, it looks through the ramping schedule to see what mode it should be in. I didn't go so far as to pick up the ramp (too complicated with the CSP lights), but I did calculate if it's closer to the beginning or end of the ramp, and then it chooses that mode. I'm not sure if that's the best logic, but it's what I went with. Reboots shouldn't happen very often, so I think it's probably just fine.