# iAqua: My Touch Interface Aquarium Controller (Arduino)



## AnotherHobby




----------



## 75ona76

I for one would be very interested in more details. I have to say that you have done an amazing job!


----------



## scapegoat

you SOB haha. I'm working on a raspberry pi project of similar scope. super cool project you've got going on here!


----------



## mistergreen

Heh, looks nice.
Is this fully working or is it just a mock up?

I'm building a web controller but can only find a weekend here or there to work on it.
I've finally made it relatively secure from outside hackers.


----------



## Adrand

This is great to see. I dont know if I would ever have the expertise to pull it off but might have to try if you put up some instructions. At least keep us updated on your progress and how it works out for you.


----------



## AnotherHobby

75ona76 said:


> I for one would be very interested in more details. I have to say that you have done an amazing job!


Thanks! I'll start posting details early next week when I get back in town.



scapegoat said:


> you SOB haha. I'm working on a raspberry pi project of similar scope. super cool project you've got going on here!


Ha! I think Pi might be better for the GUI stuff, but I haven't used one. The Arduino is great for hardware projects, and Pi is great for software ones.



mistergreen said:


> Heh, looks nice.
> Is this fully working or is it just a mock up?
> 
> I'm building a web controller but can only find a weekend here or there to work on it.
> I've finally made it relatively secure from outside hackers.


It's fully functional and running on my desk right now. Every single feature is implemented and works, except the low temp alarm tone, which will probably take about 15 min when I get back. So short of bug testing or any other fine tuning, it's ready for assembly and then hookup. 

Those pictures are mockups, because I can't take screenshots on it, but they basically look nearly identical to the screen itself (240x320). If I have time tonight before I leave, I might make a video tour of it, otherwise it'll be next week after I get home.

A web controller would be cool. For a follow up project, I was thinking of making one with pi and connecting it to the Arduino. Not sure what I'd do it remotely, but it might be fun.


----------



## sumer

Okay..
First, thank you so very much for taking your time to type this down.
Second, KUDOS. What a great DIY. I love it.

believe it or not but I have a similar thing in my mind. Of course, I have no experience in Arduino world. I wish they ran on PowerShell.
Its been 6-7 years I used C. 
Anyway, to answer your question, YES! I will build this.
I have started reading about arduino and would probably have one here in about a week. 
It will take me some time to get acquainted but I will DO this DIY for sure.
Believe me, this is such an awesome DIY.
Thanks once again.


----------



## AnotherHobby

Adrand said:


> This is great to see. I dont know if I would ever have the expertise to pull it off but might have to try if you put up some instructions. At least keep us updated on your progress and how it works out for you.


Sometimes you just have to dive in. You might surprise yourself.


----------



## mistergreen

Very nice that it's fully functional. Yeah, I want it fully web enabled so I can go traveling and still keep an eye out on the tank. 

I'm using the arduino mega & wifi shield. I'll distribute the code eventually. It's a whopper.


----------



## AnotherHobby

sumer said:


> Okay..
> First, thank you so very much for taking your time to type this down.
> Second, KUDOS. What a great DIY. I love it.
> 
> believe it or not but I have a similar thing in my mind. Of course, I have no experience in Arduino world. I wish they ran on PowerShell.
> Its been 6-7 years I used C.
> Anyway, to answer your question, YES! I will build this.
> I have started reading about arduino and would probably have one here in about a week.
> It will take me some time to get acquainted but I will DO this DIY for sure.
> Believe me, this is such an awesome DIY.
> Thanks once again.


Thanks so much for the kind words. I've been following your tank and excellent photography for a long time. 

Isn't your DIY LED 4 channels? I haven't read much into your controller or how that's set up, but you should be able to control them with PWM since I included that in the code. It'd get you the scheduling with ramping and fading. Maybe you already have that though.

Details will follow when I return from vacation.



mistergreen said:


> Very nice that it's fully functional. Yeah, I want to fully web enabled so I can go traveling and still keep an eye out on the tank.
> 
> I'm using the arduino mega & wifi shield.


Sweet! I'll be hitting you up for tips when I get that far. :biggrin:


----------



## scapegoat

I feel like the race is on now! I'll be working on mine more tonight


----------



## Wasserpest

This is a fantastic project. Thanks so much for sharing! I felt like referencing this thread in the stickies post on top of this forum. So I did. roud:


----------



## AnotherHobby

scapegoat said:


> I feel like the race is on now! I'll be working on mine more tonight


MUHAHAHAHAHA! :icon_twis



Wasserpest said:


> This is a fantastic project. Thanks so much for sharing! I felt like referencing this thread in the stickies post on top of this forum. So I did. roud:


Thanks! Wow.

So I just remembered one of the big features I have yet to program. I don't think it'll be that difficult, but it's very important. Right now when it starts up, it just starts up to default power settings (all on except aux1 and aux2) and doesn't touch the lighting modes. This is not ideal if it gets the power reset at an off time. So, the next thing I need to code it to read in all of the schedule data to determine where the lights should be and which power relays should be on/off. This'll be the first thing I work on when I get home.


----------



## vanish

I am interested, but probably would not get to it for a few months. I have a Current Sat+ and was going to to the simpler project, but this one kicks butt.


----------



## HunterX

Subscribed!


----------



## PhysicsDude55

Very very cool! I love the interface.

I'm planning on doing something similar, but haven't even gotten my Arduino to connect to the screen yet :-(

Once again, very well done! I am impressed.


----------



## bigd603

scapegoat said:


> you SOB haha.


I was gonna say the same exact thing.


Really incredible job man. Friggin virtual high five.


----------



## bigd603

My friend, you need to TFT LCD Shield (evil bay number 280930524149) and a good ol Arduino Mega Proto shield. This one is my favorite. That will solve your LCD cable woes, and give you a nice tidy build once you're ready to put it all together.


----------



## O2surplus

Nice controller, I like it. Have you considered consolidating all of the peripheral components onto a "shield" for the Mega? Plug-N-Play components rather than breadboards & wiring would make the controller much easier for the less electronically savvy to put together.

If you can provide a final draft of your wiring diagram- I'd be more than happy to design a shield for you.


----------



## Subtletanks91

TAKE MY MONEY lol

This is freaking awesome I wish I had something like this connected to a LAN line I could be on vacation five states away and send it a message saying feed fish. Lights on off etc. I think that should be the next technology.


----------



## jeffkrol

Subtletanks91 said:


> TAKE MY MONEY lol
> 
> This is freaking awesome I wish I had something like this connected to a LAN line I could be on vacation five states away and send it a message saying feed fish. Lights on off etc. I think that should be the next technology.


That is a lot closer than you think... 

http://www.gereports.com/post/89793785255/the-smartest-bulb-in-the-box-will-talk-to-your



> ........make the Internet of Things affordable for everyone.


----------



## mistergreen

jeffkrol said:


> That is a lot closer than you think...
> 
> http://www.gereports.com/post/89793785255/the-smartest-bulb-in-the-box-will-talk-to-your


Apple is coming out with a device controller app with their next iOS. The trick is to communicate with all of the different wireless protocols.


----------



## AnotherHobby

Thanks for all the feedback everybody!



bigd603 said:


> My friend, you need to TFT LCD Shield (evil bay number 280930524149) and a good ol Arduino Mega Proto shield. This one is my favorite. That will solve your LCD cable woes, and give you a nice tidy build once you're ready to put it all together.


I am going to clean the whole thing up for final build. The breadboard is only for testing and initial building. Those links look great! Thanks!

I have no Internet at our cabin (I'm in town now), but I did bring my laptop. I wrote all of the smart startup code while my wife was napping yesterday afternoon. It will turn all power inputs to their appropriate state base on the schedule upon startup, and put the lights into the correct mode.


----------



## AnotherHobby

O2surplus said:


> Nice controller, I like it. Have you considered consolidating all of the peripheral components onto a "shield" for the Mega? Plug-N-Play components rather than breadboards & wiring would make the controller much easier for the less electronically savvy to put together.
> 
> If you can provide a final draft of your wiring diagram- I'd be more than happy to design a shield for you.


A breadboard is no way to finish a project. I am definitely going to tidy it all up on a shield, and I'd love your input/help on design. I'll get a parts list when I get back.


----------



## talontsiawd

Wow, I saw this in your journal but it's more impressive here. I will admit, I know absolutely nothing about coding and Arduino scares me but it keeps on appearing in almost all my hobbies in one way or another so at some point, I may just have to jump on board and see what's up. The electrical part doesn't scare me, I have done enough of that, just the coding.

I think it's awesome that you can change everything in the GUI. That's one thing I didn't know if you could do very easily, or at all with Arduino. That's what made me not so interested, the continuous code tweaking until it works, then you change or add things and redo. To me, that is punishment haha, I am not that type of person so this inspires me to maybe get into this, or get my brother to make me one, haha.


----------



## sumer

So I watched a video about how to setup relays with Arduino.
It was very interesting. I am waiting for you to come back and write a detailed instruction set


----------



## AnotherHobby

Well summer, I'm pretty far along with a breadboard schematic with Fritzing. 

I chose control all of the relays using the analog pins.


----------



## mistergreen

AnotherHobby said:


> I chose control all of the relays using the analog pins.


Why not digital pins?


----------



## AnotherHobby

mistergreen said:


> Why not digital pins?


Because I'm hardly using any analog pins, and I had 8 clean right in a row. Figured I'd save any open digital pins for future use. That's all.


----------



## bigd603

Anotherhobby, any way you'd be willing to share what you have so far with fritzing? You can use the share feature so people can check it out. I'm doing something very similar and I would love to see how you're going about it.


----------



## AnotherHobby

Well I would, except the only Internet I have up here (on Lake Superior north of Grand Marais, MN near the Canadian border) is when I'm in town with my phone. Laptop is at the cabin, and there is no service there. I'll be home tomorrow afternoon and should have time to post it.


----------



## AnotherHobby

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.


----------



## sumer

Wonderful. Thanks so much again.
I have a very dumb kinda question here. Is there anything out there which can help simulate the circuit even before I attempt it? Something like circuitlab that electronics people use?


----------



## AnotherHobby

sumer said:


> Wonderful. Thanks so much again.


You're welcome. I realized I had to build the whole schematic anyway, because I have to rip it all apart to build it into it's case (a wood box from a bottle of Bookers bourbon). I could figure it all out again, but it'll be a lot easier with the schematic.



> I have a very dumb kinda question here. Is there anything out there which can help simulate the circuit even before I attempt it? Something like circuitlab that electronics people use?


That would be cool. I have no idea, but it'd have to be super advanced to know all of the electronic devices, and how they'd work together. Plus, it'd have to emulate Arduino hardware and code.


----------



## AnotherHobby

Right now I'm pretty happy with where the code is at. I'm sure I'll find things to fix and tweak, but for now I'm going to start working on the case and assembly.

Below is the case I'll be using. It's free to anybody who enjoys a great bottle of bourbon. It's dimensions are roughly 4"x4" and 14" tall. It'll be in a "tower" configuration with the power outlets on the back of it. It'll sit on the floor next to my tank, which is next to my main sitting chair. The clear front panel slides out for easy access, and lets you see all of the nerd guts when it's in place.










The screen will be mounted in an acrylic housing that I'm making that'll be fixed at about a 45° angle tilt backward. I just picked up the acrylic today from a local acrylic shop. They have scrap pieces, so it was only $2 for way more than I need. Here is a quick sketchup of what I'm thinking of.


----------



## AnotherHobby

To make the touch screen easy to connect to the mega, I'm making an adapter board. One side will have 2 rows of 16 header pins (42 total) and the other side will be two rows of 20 header pins (40 total). I have a female-female 40-pin cable, and a male-female 40 pin ribbon cable. 

The male-female cable will have the male end going to the mega's double row of pins (32 total) where all of the LCD pins are, and the female end will go to the two rows of 16 header pins on my adapter board. The outer 4 pins of the cable will go unused.

One end of the female-female cable will plug into the two rows of 20 header pins on the adapter board and the other end will plug into the 40 pins on the display.

The board will map the pins, so once it's soldered it'll just be simple plug-ins.

It'll go on a small piece of perfboard. This is the mapping from the bottom of the board. Also, since the outer pins on the mega cable care 5v and ground, I can use those to power the brightness PWM circuit on the same board, and just send one wire back to the mega for pin 4.

Also, if it really does need the 20k resistors, this is where they'd go. From what I read, the screen's communication was meant to run at 3.3v, and the mega's pins are 5v, so that's why some people had it hooked up with 20k resistors. It brought the voltage down to 3.3v. Mine's been running fine with no resistors for over a month, so I'm not sure what to think.

EIDT: <pic of board removed> Ordering a pre-built board on bigd603's recommendation, see below.


----------



## bigd603

Hey dude, no need to build a board. Its already been done for you: SainSmart Touch TFT LCD Expansion Board Adjustable Shield for Arduino Mega 2560 R3 1280 A082 Plug:Amazon:Industrial & Scientific


----------



## AnotherHobby

I saw that, but read it had issues. Maybe it would work. It also looks like it's using a bunch of pins it doesn't need to. I'm also not connecting the screen directly to the mega, but I suppose the cables I have could extend this connection as well. I should read up on it more.


----------



## bigd603

I've got one and its never caused me any issues.


----------



## AnotherHobby

I guess this newer version fixes the issue. I bet it'd work, and for less than $10 it's worth a try.


----------



## 75ona76

Or there is the Adafruit version. http://www.adafruit.com/products/1932


----------



## bigd603

Very good find on the new TFT shield, I really like he white silk screen too. Too bad you didn't get the screen with an SD card holder (like this one http://usd.dx.com/product/arduino-c...h-sensor-screen-module-901145725#.U8XqWonn8m8) to clean up a lot more of those wires.


----------



## AnotherHobby

bigd603 said:


> Very good find on the new TFT shield, I really like he white silk screen too. Too bad you didn't get the screen with an SD card holder (like this one http://usd.dx.com/product/arduino-c...h-sensor-screen-module-901145725#.U8XqWonn8m8) to clean up a lot more of those wires.


I do have the TFT shield with the SD card, but I couldn't get the SD part working. That's why I got the little $3 stand alone SD reader. I'm assuming it was my own inexperience and lack of knowledge that was making it not work, so I am also hoping this shield makes it work for me. For exactly the reason you state.


----------



## AnotherHobby

Today I started putting the project case together. I did all of the AC wiring, which included the relay board, the power outlets, a circuit breaker, a power switch, and a power cord. I'm pretty happy with how it all turned out.

Here are is the relay board wired up. 120v will go into the terminal bar, distributing power to each relay. All of the wires coming out are positioned and bent to drop right into the outlets. Each outlet pair has the little metal piece that connects the two outlets removed on the hot side, so each outlet is wired individually to a relay.










Here is the relay board dropped into place, and now connected up to the power outlets. You can also see where the power cord comes in and where the switch and breaker are (in the upper right of the pic).










Here is how it will actually stand. I plan on attaching a slightly larger platform base, but will wait until the end because it's easier to work on this way. The switch and breaker are mounted in on a small piece of flat aluminum. You can also see a long hole at the top of the box, that's where the 40 pin ribbon cable will go out to the display.


----------



## AnotherHobby

Well I just wired it all up to the arduino to test, and I didn't start any fires and no sparks flew. In fact, everything is working exactly as expected. This was a pretty exciting step for me, as it's now starting to look real.

Video:


----------



## 75ona76

Congratulations! That is an important step.


----------



## AnotherHobby

EDIT: This whole post contained incorrect info about a voltage regulator.


----------



## mistergreen

Looks cool. I got my dad to play with the Arduino now too. He kill his uno usb connection. We think it's because he didn't use a diode to to protect the board from his stepper motor.


----------



## AnotherHobby

mistergreen said:


> Looks cool. I got my dad to play with the Arduino now too. He kill his uno usb connection. We think it's because he didn't use a diode to to protect the board from his stepper motor.


Yeah, live and learn with electronics. I'm 90% certain I fried my touch screen by neglecting to use resistors. As I mentioned 10 days ago, I didn't notice until I was a ways along that I had not put them on. I thought it might be fine since everything was working great. 

Earlier this week the screen went pure white and now refuses to display graphics. The code is running and active, so I know the Arduino is fine. I ordered a new one for $17 from China, but now I have a two week wait. Oh well, at least they are cheap.


----------



## AnotherHobby

I'm adding a new feature to my controller: CO2 Pressure Alarm

I've been thinking of a way to alert me when I run out of CO2. My 5 gallon CO2 tank lasts probably 6 months, so it's tough to keep remembering to look at the gauges. Furthermore, I use a reactor, so I can't see any bubbles.

Well today I came up with an idea. I hunted down and bought a MPX5700AP pressure sensor made by Freescale Semiconductor. I actually bought 2 for $24 shipped ($12 each) on evilbay. They look like this:










It'll sense from 0-101 PSI with a 2.5% margin of error. I'm going to hook it to the airline tubing that goes from the regulator into the reactor with a T connector. I've also already found code for how to read the values and convert them into PSI.

Once the iAqua controller turns on the CO2, if it doesn't come up to the correct PSI in the line within a minute (or however long), then I've got problems (empty tank, leak, dead power adapter on the solenoid, dead/stuck solenoid, etc). If it drops down before I cut power to it, I also have problems.

I can also kill the power to the solenoid if the PSI floats up higher than it should. I have a high quality dual stage regulator, so I shouldn't get an end of tank dump, but it'll be nice to know that I can kill if if something goes wonky. For anybody with a single stage regulator, this would be a nice piece of mind.

This seems to me to be a relatively easy way to tell if CO2 is working or not. Pretty cheap too since the sensors were only $12 each (although most of them are $20 each on evilbay).

EDIT: I was just thinking... This all assumes that when CO2 is running through a reactor under the tank there is more pressure in the air line than when CO2 is not running. I know that's the case with a diffuser, but I guess I'm less sure about a reactor. I think that's the case, but maybe I'm wrong and I just wasted $24. We'll see.


----------



## bigd603

Now that is cool. I haven't seen anyone else do that.


----------



## mistergreen

neat sensor.
Do you mind if I steal the idea so my site? I have a whole section dedicated to sensors/components so it's easier to find.


----------



## AnotherHobby

bigd603 said:


> Now that is cool. I haven't seen anyone else do that.


It'll be especially cool if it _actually_ works! 



mistergreen said:


> neat sensor.
> Do you mind if I steal the idea so my site? I have a whole section dedicated to sensors/components so it's easier to find.


Go for it! Here is a link to some code that should make it work: MPX5700 Pressure Sensor


----------



## Whiskey

You could put the sensor between the regulator and the needle valve. That pressure should always be the setpoint of the low side of the regulator.

The pressure between the needle valve and reactor will depend on back pressure of the reactor, and may be very little.

Whiskey


----------



## AnotherHobby

Whiskey said:


> You could put the sensor between the regulator and the needle valve. That pressure should always be the setpoint of the low side of the regulator.
> 
> The pressure between the needle valve and reactor will depend on back pressure of the reactor, and may be very little.


That's kind of what I was thinking. Also not sure how check valves between the bubble counter and the reactor affect things. We will see once I get it in my hands for testing. I'll report my findings back in here. I'm really hoping I can make it work.


----------



## bigd603

It seems like with a lot of these builds, and I am definitely included in this, we keep finding more and more cool stuff to test, measure, and control, so the building never ends and the thing never actually winds up in our tank.


----------



## AnotherHobby

bigd603 said:


> It seems like with a lot of these builds, and I am definitely included in this, we keep finding more and more cool stuff to test, measure, and control, so the building never ends and the thing never actually winds up in our tank.


Ha! True enough! Well, I'm somebody who does usually finish things, but feature creep can happen. Right now I'm on hold until the replacement screen gets here, so I have time to putz. I also put a deadline on myself for completion at the end of summer, so I'm doing alright. It's also nice that I have a controller already ramping my lights and running my dosing pumps for me.

I actually bought an extra 2560 Mega, along with several other extra parts, and will probably buy an extra screen to allow me to continue development and tweaking without having to steal my controller back all the time. I want to be able to continually evolve the project, but I don't want to keep taking everything apart and interrupting what it's doing. Once it's in place, it needs to be stable.


----------



## Whiskey

AnotherHobby said:


> Ha! True enough! Well, I'm somebody who does usually finish things, but feature creep can happen. Right now I'm on hold until the replacement screen gets here, so I have time to putz. I also put a deadline on myself for completion at the end of summer, so I'm doing alright. It's also nice that I have a controller already ramping my lights and running my dosing pumps for me.
> 
> I actually bought an extra 2560 Mega, along with several other extra parts, and will probably buy an extra screen to allow me to continue development and tweaking without having to steal my controller back all the time. I want to be able to continually evolve the project, but I don't want to keep taking everything apart and interrupting what it's doing. Once it's in place, it needs to be stable.


That's funny because I did the same thing. I eventually had to go to a Mega on mine because the I2C bus to the screen was unreliable causing lockup issues. Now I have 2 extra Uno's and a screen that I will use to prototype a menu as soon as my summer class ends. I'm having a really tough time wrapping my head around the input side of this and it will be very good to have an extra one.

Thanks for the tip on the knockoff mega BTW! Came in handy.

Whiskey


----------



## AnotherHobby

I finally got my replacement screen today. Here is the good news (it works!):










The bad news is that they mapped the touch pins where I don't like. They took the of PWM pins I had set for RGBW control. I haven't dug in too deep yet because I control my lights with IR, but if you were to use this code with PWM, you'd probably have to do some minor hardware changes to the board, or just not use this board.

The only thing that appears to stand in the way of what I need is that they mapped the LCD backlight straight to power, so I'll need to modify something to send that to PWM for the auto-brightness adjustment.

As a bonus, the SD card slot works at max speed, so that saves a bit of wiring!


----------



## AnotherHobby

I hooked up the sensor to a little UNO and got it working today. It works perfectly, and as expected with a diffuser, but not with my reactor. With a diffuser, you can watch the PSI climb right up when the CO2 comes on, and you can watch it drop right off when you turn off the CO2. 

However, there is almost no pressure required to push CO2 into a reactor, so the difference between on and off is't detectable near as I can tell. I do think putting it before the needle valve would do the trick, but I'll have to get a fitting to accomplish that. My other option would be to put a diffuser inside of my reactor, and plug the airline into it. That would pressurize the line also.

One way or the other, I'm going to make it work, because it's really slick!


----------



## bigd603

Very cool!


----------



## AnotherHobby

Because I'm super excited to play with this thing, I just redid my regulator. It actually worked out great, because I've never liked how I built it to begin with. I had the low pressure fittings and valves all sticking way too far out to one side. I added a few bends in and got it much more compact. 

I also made it so that if I decide not to do this anymore, or if I sell it, I can just add a 1/8" plug in where the airline fitting for the pressure sensor is.

Here is the updated regulator, and you can see the airline barb on the back with the sensor attached:










And the verdict? BOOM! It works fan-freaking-tastic!

Here is a 5 minute graph from the sensor. I turn the CO2 off, and you can watch the PSI drop over 5 minutes. At the end, I turn it back on, and you can see it instantaneously jump to pressurized.










So the verdict is, YES! I can monitor my CO2 pressure with the Arduino, and notify when the pressure isn't correct (empty, leak, broken solenoid, bad power adapter, etc). I'm super stoked!

:bounce:

Side note — I have to get a little clamp for the hose barb on the sensor. I do NOT need that hose popping off and draining all my CO2.


----------



## mistergreen

Neat, I was afraid the sensor wouldn't get a good reading.


----------



## scapegoat

Love the pressure sensor. Didn't even know those existed. I'm placing an order tonight


----------



## AnotherHobby

scapegoat said:


> Love the pressure sensor. Didn't even know those existed. I'm placing an order tonight


I've come to the conclusion that sensors exists for almost anything. :hihi:

The trick is thinking of ways to apply them usefully.


----------



## scapegoat

AnotherHobby said:


> I've come to the conclusion that sensors exists for almost anything. :hihi:
> 
> The trick is thinking of ways to apply them usefully.


I'm a hardware novice, but there definitely appears to be something for everything. I think I need to just read through jameco and similar websites


----------



## mistergreen

scapegoat said:


> I'm a hardware novice, but there definitely appears to be something for everything. I think I need to just read through jameco and similar websites


If you think of something, go to the arduino forum and ask the guys there. They'll point you to an sensor or component.


Sent from my iPad using Tapatalk HD


----------



## theknight

*My Touch Interface Controller*

Anotherhobby,

First thank you and all the others that contributed, I have been lurking for a couple of weeks and am in the process of gathering my parts.

One question I have, with the modifications that are happening, and hopefully keep happening are you planning on updating wiring and the sketch. Specifically, the screen shield which I think will use I2C and the new sensor. Also do you have any plans to incorporate PH monitoring.

Before I read your thread I never heard of Aduino, now I think with all my controller related purchases I feel like a major stockholder. The hardware part is pretty easy for me, it's the programming that throws me a curve. Haven't done anything in programming except some basic years ago. I have been visiting the forums and playing with a Uno trying to understand more. Could you recommend a book that would help?

Thanks and keep me motivated.:help::help:


----------



## AnotherHobby

theknight said:


> Anotherhobby,
> 
> First thank you and all the others that contributed, I have been lurking for a couple of weeks and am in the process of gathering my parts.
> 
> One question I have, with the modifications that are happening, and hopefully keep happening are you planning on updating wiring and the sketch. Specifically, the screen shield which I think will use I2C and the new sensor. Also do you have any plans to incorporate PH monitoring.
> 
> Before I read your thread I never heard of Aduino, now I think with all my controller related purchases I feel like a major stockholder. The hardware part is pretty easy for me, it's the programming that throws me a curve. Haven't done anything in programming except some basic years ago. I have been visiting the forums and playing with a Uno trying to understand more. Could you recommend a book that would help?
> 
> Thanks and keep me motivated.:help::help:


Yes, I'll update my wiring sketch once I decide how to do it. I still haven't ironed that out exactly, but from looking over it all today, it's all doable. I just want to remap a few of the pins they chose. It'll still save me a ton of work and be a lot cleaner.

I don't have any books to recommend because I haven't read any. I've gotten by mostly with google and hacking away at the keyboard. I regularly do scripting and programming at work, it's just not in C/C++, so that was new to me, but it's not all that different.

Also, if you're a stockholder, I think you're motivating yourself.


----------



## bigd603

This is the book I got, and it really helped out when I was first starting:

http://www.barnesandnoble.com/listi...LA-_-Book_25To44-_-Q000000633-_-2684102987131

Beginning Arduino programming.

I had never done any code before, and it was really easy to pick up and get some very usable sketches going. Everything else I have learned from googling.




theknight said:


> Anotherhobby,
> 
> First thank you and all the others that contributed, I have been lurking for a couple of weeks and am in the process of gathering my parts.
> 
> One question I have, with the modifications that are happening, and hopefully keep happening are you planning on updating wiring and the sketch. Specifically, the screen shield which I think will use I2C and the new sensor. Also do you have any plans to incorporate PH monitoring.
> 
> Before I read your thread I never heard of Aduino, now I think with all my controller related purchases I feel like a major stockholder. The hardware part is pretty easy for me, it's the programming that throws me a curve. Haven't done anything in programming except some basic years ago. I have been visiting the forums and playing with a Uno trying to understand more. Could you recommend a book that would help?
> 
> Thanks and keep me motivated.:help::help:


----------



## theknight

Thanks again Anotherhobby

And BigD, looks like I'll be buying a book, thanks for pointing me in the right direction.


----------



## AnotherHobby

A made progress on two fronts today. First, I modified the TFT adapter shield to move the touch pins from 2, 3, 4, 5, 6 to 42, 43, 44, 45, 46 respectively. I removed the header pins from 2-6 and then made jumpers over to 42-46. It took less than 20 minutes and worked perfectly. Woohoo!

Header pins removed (center top):










Jumpers to the pins I wanted:










The next progress today was making the TFT acrylic housing to mount on top of the project box. I've been afraid of this, because I'm not super familiar with acrylic. It went really well, with my only mistake being the line across bottom of the face. It's not straight, but I didn't notice until it was glued. Oh well, it still looks good, so I'm happy with it. It's not perfect, but I'm proud of how it turned out:


----------



## AnotherHobby

This is a recap of my final modifications to the ElecFreaks TFT shield. I did this because I wanted this shield to do everything display related, and I wanted to remap some pins.

First, you do not need to do any of this if you don't care about the touch pins taking digital pins 2-6, and if you don't care about backlight dimming. If you want dimming, you should know that you can't really do dimming easily if you plug the screen directly to the shield. They wire the backlight directly to power, so it's not easy to intercept. I used a M/F 40 pin cable between the screen and shield instead, and then I just broke the LED backlight pin off on the male side of the cable so it never connected to the board. 

From there I ran a separate jumper from the LED backlight pin on the display to a header pin that I mounted on the ElecFreaks shield. That header pin goes through a transistor and eventually do PWM pin 13 so I can control the backlight.

In the pic are 2 header pins at the bottom. One of the pins is for the backlight, and the other is only there because my cable is an IDE cable that doesn't have a pin in the middle, so I had to run it outside. On the back side of the board it jumpers to the missing pin. If you get a FULL 40 pin cable, this is unnecessary.

Here is what the shield looks like now:










Here is the display, you can see the 2 pins I've jumpered. They run to the two header pins seen in the picture above.


----------



## AnotherHobby

*ALMOST THERE!*

I'm getting close to finishing this beast. I'm going to post a few pics before I go to bed, and I can follow up with more details tomorrow.

I've finished building out my prototype board. This board will sandwich between the display board and the Arduino. It's wired *almost* the same as my initial diagram. I had to move a couple of pins, so I'll update the wiring diagram later. Here is the underside of the board:










Here it is stacked onto the Arduino. The board has the RTC and all of the external hookups. For making external connections, I decided to go with screw terminals since I had the space. All 8 relays, the temp sensor, both dosing pumps, the ambient light sensor, the IR led to control the lights, and the new CO2 pressure sensor all connect into the terminals. You can see the temp sensor and the ambient light sensor hooked up in this pic.










Here is the full stack with the modified display shield attached.










And here it is booted up!










So from here I basically have to mount everything into the box — boards, screen bezel, sensors, and all of that. It's still quite a bit of work left, but I'm getting close!!

I have to say I'm pretty stoked! :bounce:


----------



## scapegoat

that looks awesome. are you mounting the touchscreen to the project box itself?


----------



## HunterX

Grrrr... You have really caused me to wish I built mine with a touch screen ILO the LCD display. I may have to switch to the touch screen. If I do would you be willing to help me out?


----------



## AnotherHobby

scapegoat said:


> that looks awesome. are you mounting the touchscreen to the project box itself?


Yes, it'll mount on the top of the box. It's going to be a little mini-tower next to my stand. It'll probably make more sense in final pictures. The whole case is designed specifically for how I'll interact with it from my chair.



HunterX said:


> Grrrr... You have really caused me to wish I built mine with a touch screen ILO the LCD display. I may have to switch to the touch screen. If I do would you be willing to help me out?


Yeah, after I saw the stilo project and realized a touchscreen was possible, I dove down the rabbit hole. The touch screen is really nice since it negates the need for any physical buttons. The downside is that depending on what you do, it can add a lot of code. You also have to design and build a GUI, so that adds a bit of work too. If you use the button library instead of rolling your own, that'll save you a lot of work.

And yes, I'd be more than happy to help out with any questions. A big part of why I was able to accomplish this was because of what I learned in this forum.


----------



## AnotherHobby

I have updated all documents. The code on page 1 is the latest code I have and pin mappings match the pins in the diagrams (iAqua.zip). I haven't written the CO2 PSI sensor feature yet, but I know what I'm going to do with it. The Fritzing documents are up to date (iAqua.fzz), including the breadboard and schematic — but not the circuit board design, I'm not doing that. I also updated the pic of the breadboard wiring on page 3 of this thread. *EDIT: I have to edit the schematics because I realized I don't need a voltage regulator, and it won't even work right since the Mega needs more voltage.*

I have not included the wiring of the screen in the documents, other than the backlight pin. It's unnecessary if you get the ElecFreaks TFT shield for less than $10. If you don't use that shield (or one like it) you'd have to make a crazy number of solder joints by the time you get all of the resistors and such in place, not to mention the rats nest of wires. If you are brave enough to try it, there's a diagram for you on page 3, post 32. Also, it's up to you if you want to modify the ElecFreaks TFT shield like I did to move the touch pins. If you do all of the info is on page 5, post 73. If you don't you'll need to change the pins in the code.

I hope to start final mounting and assembly in the next few days. I also have to code the PSI sensor. Here are my plans for how to make use of it:


button to set low PSI (when CO2 is off)
button to set high PSI (when CO2 is on)
feature to alert if PSI falls below high PSI when CO2 should be on
feature to dim lights and cut dosing if CO2 PSI drops below 1/2 way between high and low settings (running empty or a leak)
feature to power off CO2 solenoid if threshold drops below 1/2 way between high and low settings to prevent loosing CO2 if it's a leak
The last 2 would be great features for if I'm out of town. If there is no CO2, I want low light with no ferts. The last thing I want to have is high light and tons of ferts with no CO2 for several days.

The prototype board, the display shield, the power supply board with the motor MOSFETs, and everything else is wired the same as my diagrams below. I'm not going to diagram out the exact placements of my components, because that would vary a lot depending on what prototype board you got. I can post more/better pictures of those boards if anybody needs or wants them.

Here is the current breadboard diagram:










I've never built a schematic before, so I'm sure there will be some head scratching at my methodology, but oh well. Here is the current wiring schematic:


----------



## 75ona76

I have to say thank you. For sharing your hard work and for documenting it so in detail!


----------



## theknight

Thank you once again, I have all my parts and with the book that was recommended to me, I might have a slight idea as to what I am doing. Great job


----------



## AnotherHobby

I realized tonight that I have no idea why I have a 5v voltage regulator in this. The Mega takes 12v natively, and needs 7v to run. It's completely unnecessary, and doesn't even provide the mega with enough juice. I think it's just because I used one with my Uno projects and assumed I'd need one again. I'll have to erase it from the drawings and parts list.


----------



## Dan's85

This is a killer write-up!! EXACTY what I've been looking for! Being a complete "noob" to the custom electronics/programming world has made it a real pain trying to figure out who, what, when, where, why, and how.


----------



## kman

All I can say is wow.

And yes, I will be [attempting to] building one. 

Because wow.


----------



## AnotherHobby

*All linked documents and images in the thread have been updated to remove the voltage regulator.* I still feel silly for having one in there. :icon_redf



75ona76 said:


> I have to say thank you. For sharing your hard work and for documenting it so in detail!





theknight said:


> Thank you once again, I have all my parts and with the book that was recommended to me, I might have a slight idea as to what I am doing. Great job





Dan's85 said:


> This is a killer write-up!! EXACTY what I've been looking for! Being a complete "noob" to the custom electronics/programming world has made it a real pain trying to figure out who, what, when, where, why, and how.





kman said:


> All I can say is wow.
> 
> And yes, I will be [attempting to] building one.
> 
> Because wow.


Thanks for all the nice comments, and you're welcome for sharing. I've been documenting and sharing everything here because this is the place that got me started. It's only fair to give back. 

For those of you that plan to build your own, it's a lot of work, but it's also really fun, and you'll learn some valuable life skills. I'll help out with whatever I can.


----------



## O2surplus

AnotherHobby said:


> *All linked documents and images in the thread have been updated to remove the voltage regulator.* I still feel silly for having one in there. :icon_redf
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Thanks for all the nice comments, and you're welcome for sharing. I've been documenting and sharing everything here because this is the place that got me started. It's only fair to give back.
> 
> For those of you that plan to build your own, it's a lot of work, but it's also really fun, and you'll learn some valuable life skills. I'll help out with whatever I can.



LOL- as soon as I have some spare time, I'm gonna design a custom PcB for this project, and build one of these for myself. Thanks for all the hard work you put into this project.


----------



## PortalMasteryRy

Nice project dude! One word! Kickstarter! LOL
I would love to get access to a completed system and I think you might get a lot of interest in the type of unit you have.


----------



## AnotherHobby

I figured the easiest way to configure the CO2 would be to have it all hooked up, and then just match the current known conditions. With the CO2 off and pressure dropped all the way down to whatever your system sits at when off (takes 5-10 min for pressure drop), you would hit the "SET LOW PSI" button. It would store whatever that is as it's low value. Then turn the CO2 on and use the "SET HI PSI" button to set the pressure for when the system is on. 

The checkbox to disable protection would be for when you have to go fill up your CO2. You would want to turn off the monitoring during that time so it doesn't bug you. You'd then recalibrate and turn protection back on once everything is hooked back up.

Here is the screen:










Seems pretty simple to me. Now I have to write the code. Should be pretty easy since I already have all of my test code. 

The only thing I'm not sure of is if the formula I found for converting the voltage to PSI is accurate. I'll have to do some research on that. On the other hand, it's very consistent and can see the difference between LOW and HI, so maybe the actual calculated PSI number doesn't really matter. Since I don't plan on displaying the actual PSI anywhere, I suppose I could just not bother. I could just store the raw number it reads from the sensor and forget any formulas.


----------



## Ultimbow

Hi was wondering if this would work for the built.
http://www.sainsmart.com/sainsmart-...anel-sd-card-slot-shield-kit-for-arduino.html
the screen is smaller and the shield is different. The smaller screen would be better for me. And i have no experience in codding so am i going to have to do recodding? Its a nice deal so that why i am asking


----------



## talontsiawd

That CO2 idea is super cool.


----------



## AnotherHobby

PortalMasteryRy said:


> Nice project dude! One word! Kickstarter! LOL
> I would love to get access to a completed system and I think you might get a lot of interest in the type of unit you have.


Oh man, *way* too much work for the benefit. For me the fun is learning and building things. The time it would take to make this into an actual marketable product would be insane, and then I don't know how many I could even sell. I value my free time so much that I have no interest in additional income unless it meant quitting my job. No aquarium controller, no matter how good, is going to support that.


----------



## mistergreen

Have you graphed the CO2 psi when you turn it on? 
It doesn't shoot straight to high immediately?


----------



## bigd603

Ultimbow said:


> Hi was wondering if this would work for the built.
> http://www.sainsmart.com/sainsmart-...anel-sd-card-slot-shield-kit-for-arduino.html
> the screen is smaller and the shield is different. The smaller screen would be better for me. And i have no experience in codding so am i going to have to do recodding? Its a nice deal so that why i am asking


Hmm, that one looks interesting. I wonder why it has the second set of headers on the middle shield (the one the screen plugs into).

Anyway, there's no reason why that wouldn't work, but you would have to redo some coding (button press areas would be the biggest thing). Plus, since AnotherHobby used image files for his screen, you may need to resize them on your computer before you save them to the SD. That's really easy to do though so not really a big deal. I say might because I don't know if the Arduino screen would just shrink them down automatically.


----------



## AnotherHobby

Ultimbow said:


> Hi was wondering if this would work for the built.
> http://www.sainsmart.com/sainsmart-...anel-sd-card-slot-shield-kit-for-arduino.html
> the screen is smaller and the shield is different. The smaller screen would be better for me. And i have no experience in codding so am i going to have to do recodding? Its a nice deal so that why i am asking


That screen is not supported by UTFT (at least it's not in the document), which is the set of libraries that do all of the graphics. I would guess that it would not work with this project. 

Here is the link to the doc that lists all compatible displays: UTFT_Supported_display_modules_&_controllers.pdf

You'd need one that did 320x240 res.



mistergreen said:


> Have you graphed the CO2 psi when you turn it on?
> It doesn't shoot straight to high immediately?


I posted this a few pages back, but yes, it jumps to high immediately. I turned it off at 3pm, and then turned it on before it had dropped all the way down, but you can see where I turn it back on at the end.


----------



## mistergreen

ah, yeah, that's what I thought. I miss read on how you set your highs and lows. You can also just set the low mathematically. You can just set a high and the low is set for the user say 1/3 of the high.


----------



## AnotherHobby

mistergreen said:


> ah, yeah, that's what I thought. I miss read on how you set your highs and lows. You can also just set the low mathematically. You can just set a high and the low is set for the user say 1/3 of the high.


That's not a bad idea, I just don't know how all of the variables come into play with that. I'm not sure how much the low can vary based on setup. Maybe it doesn't but I'm not sure. I have a cerges reactor under my tank, which is pressurized by the water above it, so I think my low is likely higher than somebody using an inline or in tank diffuser. I also don't know how much atmospheric pressure comes into play, but I know they say that with nothing connected, the sensor will read atmospheric pressure (about 14.7 psi). 

I would have to test to find all of this out. For now adding the low button was easier than testing.


----------



## bigd603

AnotherHobby said:


> That screen is not supported by UTFT (at least it's not in the document), which is the set of libraries that do all of the graphics. I would guess that it would not work with this project.
> 
> Here is the link to the doc that lists all compatible displays: UTFT_Supported_display_modules_&_controllers.pdf
> 
> You'd need one that did 320x240 res.


I stand corrected.


----------



## AnotherHobby

bigd603 said:


> I stand corrected.


You might be able to make it work somehow, I just wouldn't bet on it. I'd do a bunch of google searches on it. If you can get it to work with UTFT and UTouch, and it does 320x240, then it'd work. I just know it's not listed as supported in the documentation.


----------



## Ultimbow

AnotherHobby said:


> That screen is not supported by UTFT (at least it's not in the document), which is the set of libraries that do all of the graphics. I would guess that it would not work with this project.


I dont know much about this but is there a diferenve wit utft and tft and yes the screen is 320x240


----------



## mistergreen

After several hours off, what's the psi? I guess it never is zero or will it be close to atmosphere? You're right, I guess a diffusor would be pretty different psi than any inline diffusion.


----------



## gus6464

Just get this combo. It's $10 more and guaranteed to work. I ordered the China stock and got it all in a week. Mine is just waiting for the aqua board from bigd.

http://www.sainsmart.com/arduino/ar...-kit-for-atmel-atmega-avr-16au-atmega8u2.html


----------



## AnotherHobby

Ultimbow said:


> I dont know much about this but is there a diferenve wit utft and tft and yes the screen is 320x240


Sorry for the confusion. The physical screen is TFT. UTFT is the arduino software library that I'm using: Library: UTFT



mistergreen said:


> After several hours off, what's the psi? I guess it never is zero or will it be close to atmosphere? You're right, I guess a diffusor would be pretty different psi than any inline diffusion.


I didn't measure it after several hours, and it's all unhooked now. If I have time, I can wire it all back up again in the interest of science.


----------



## bigd603

gus6464 said:


> Just get this combo. It's $10 more and guaranteed to work. I ordered the China stock and got it all in a week. Mine is just waiting for the aqua board from bigd.
> 
> http://www.sainsmart.com/arduino/ar...-kit-for-atmel-atmega-avr-16au-atmega8u2.html


THANK YOU so much for saying this! It just made me realize that the TFT shield needs to use pins 7-0 to control the screen, and I had pins 7-4 mapped to control the motors and the IR led on the AquaShield. I moved everything around so it now uses pins 13-10, and should be fully compatible with the TFT shield.


----------



## Ultimbow

AnotherHobby said:


> Sorry for the confusion. The physical screen is TFT. UTFT is the arduino software library that I'm using: Library: UTFT



I think i am more confuse then you are . I actualy have a uno starter kit comming in the mail so will start with this to learn the basic first but my goal is to achive something similar to you by next spring.


----------



## AnotherHobby

bigd603 said:


> THANK YOU so much for saying this! It just made me realize that the TFT shield needs to use pins 7-0 to control the screen, and I had pins 7-4 mapped to control the motors and the IR led on the AquaShield. I moved everything around so it now uses pins 13-10, and should be fully compatible with the TFT shield.


The ElecFreaks TFT shield I got uses pins 2-6 for the touch control. I don't think the other pins (0, 1, 7) are actually used, but I digress. That's a dumb place to put those pins since they don't require PWM or anything special, and only a limited number of pins have PWM. If you look earlier in my thread, I remapped my TFT shield to move the touch pins to 42-46 instead. I wanted to save my PWM pins for future use.

They also hardwired the backlight pin to straight voltage, so you can't dim it. That's stupid too. That screen is super bright. Not sure how many people would want a super bright screen on 24x7 next to their aquarium. Some may not care, but I suspect many would. I had to remap that pin as well so I could do auto-dimming with my ambient light sensor (which is very easy to implement). 

The TFT shield definitely saved me a lot of time and made my project more compact, but I don't think it was very intelligently laid out for people that are going to use a lot of pins on a big project like this. Here is why mine looks like now, except that I had to move the resistor from pin 13 over to pin 8 in the upper left of the pic.










All of that aside, your shield looks really slick. If it would have been done before I got this far, I probably would have used one and made some design changes to accommodate it.


----------



## kman

AnotherHobby said:


> This breakdown is not 100% of the parts you need, but it's all the main pieces:
> 
> Arduino Mega 2560: $17 for Funduino brand
> 3.2"inch TFT LCD Touch Screen: $17 (I got evil-bay item 271201097446)
> SD Card Reader (one on screen didn't work): $3 on amazon
> <2 GB SD Card: Under $5, but I had one
> RTC DS1307 Clock Module: $4 (I got evil-bay item 371058354861)
> 2 Dosing Pumps: $27 total, $13 each on amazon
> 8 channel 12v Relay Module w/ Optocoupler: $13 from dx.com
> DS18B20 Stainless Temperature Probe: $3 from dx.com
> Ambient Light Sensor (for screen dimming): $4 for 5 from the local shack
> BC337 Transistor (for screen dimming): $3.20 for 50 of them (evil-bay item 320622653696)
> IR LED Emitter: $2.50 from the local shack


Hiya, AH!

I'm getting serious about this, so I'm going to place an order from DX, since I know shipping is quite slow. Is there anything I should grab from there while I'm ordering? Looks like just the three things, per your list above: The Funduino, the 12v relay, and the temp probe.

Aaaaand, as I write this, apparently they're sold out of the temp probe.  Although I can live without that for a while and add it later, as my heater is reasonably trustworthy.

But if there is anything else I should grab to get this going, please let me know! 

Edit: Sold out of the 12v relay, too. ARGH. So only the Funduino, to start, perhaps? The EvilBay vendor is also sold out of the RTC module. *sigh*


----------



## AnotherHobby

kman said:


> Hiya, AH!
> 
> I'm getting serious about this, so I'm going to place an order from DX, since I know shipping is quite slow. Is there anything I should grab from there while I'm ordering? Looks like just the three things, per your list above: The Funduino, the 12v relay, and the temp probe.
> 
> Aaaaand, as I write this, apparently they're sold out of the temp probe.  Although I can live without that for a while and add it later, as my heater is reasonably trustworthy.
> 
> But if there is anything else I should grab to get this going, please let me know!
> 
> Edit: Sold out of the 12v relay, too. ARGH. So only the Funduino, to start, perhaps? The EvilBay vendor is also sold out of the RTC module. *sigh*


That list is not 100% all inclusive. Look at my wiring diagrams to see all of the parts I got (the breadboard one is probably easiest to read). There are some diodes and resistors you'll need. Here are the diodes I used on my dosing pumps for $2.56. I don't have time to go through everything, but here are some thoughts...

RTC chips are everywhere. Just look for DS1307. Make sure it has a battery. Here's one on DX.com for just $2.83.

If you don't mind blue, they have the same relay board for $10 here: 

8-Channel Relay Module Board w/ Optocoupler Isolation -Blue (Works with Official Arduino Boards)

The TFT shield I just posted about above is also there for $9.27. You won't need the SD card reader if you get this since it makes the card reader on the screen work perfectly.

I also bought this from there for connecting the outlets to relays: 24-Pin Screw Terminal Block Connector w/ Cover - Black + Silver

I got some of these crappy little boards to make a board that holds the motor MOSFETs. You may or may not want to do that.

I also got my breadboards and jumper wires from there. You'll want to breadboard everything out and make it work before you start soldering stuff.

I'd get everything you can at once, because if you forget something, you'll either have to wait a few weeks for cheap Chinese parts, or pay the US premium to get it quick. DX has pretty good prices, so you may want to cross shop the parts.


----------



## kman

AnotherHobby said:


> That list is not 100% all inclusive. Look at my wiring diagrams to see all of the parts I got (the breadboard one is probably easiest to read). There are some diodes and resistors you'll need. Here are the diodes I used on my dosing pumps for $2.56. I don't have time to go through everything, but here are some thoughts...
> 
> RTC chips are everywhere. Just look for DS1307. Make sure it has a battery. Here's one on DX.com for just $2.83.
> 
> If you don't mind blue, they have the same relay board for $10 here:
> 
> 8-Channel Relay Module Board w/ Optocoupler Isolation -Blue (Works with Official Arduino Boards)
> 
> The TFT shield I just posted about above is also there for $9.27. You won't need the SD card reader if you get this since it makes the card reader on the screen work perfectly.
> 
> I also bought this from there for connecting the outlets to relays: 24-Pin Screw Terminal Block Connector w/ Cover - Black + Silver
> 
> I got some of these crappy little boards to make a board that holds the motor MOSFETs. You may or may not want to do that.
> 
> I also got my breadboards and jumper wires from there. You'll want to breadboard everything out and make it work before you start soldering stuff.
> 
> I'd get everything you can at once, because if you forget something, you'll either have to wait a few weeks for cheap Chinese parts, or pay the US premium to get it quick. DX has pretty good prices, so you may want to cross shop the parts.


Thanks! Will one test breadboard be enough, or will I want two? This is my first time dabbling at this level. Long time since I soldered circuit boards, or anything more complicated than patching zip wire!

Aaand, suddenly I'm up to nearly $75 of stuff in my cart, LOL

Funduino: $16.99
Diodes: 2.56
RTC: 2.83
Relay: 9.91
Mega Shield: 9.27
Screw terminal: 3.22
Circuit Boards: 3.23
Breadboard: 4.41
Jumper Wires: 2.99
More Jumper wires: 4.79
Roll of jumper wire: 7.90
Resistors: 5.49

(enough jumper wires for many future projects)

Already ordered the Touch LCD from EvilBay, so I should be well on my way once everything comes in!


----------



## AnotherHobby

I was able to do it on one big 830 point breadboard.


----------



## AnotherHobby

I'm looking for some design feedback here. I'm trying to decide between two ways of connecting the CO2 pressure sensor. One is to keep the sensor at the project box, and then run an air line to the box. The other is to put 3 little screw terminals externally and then keep the sensor at the regulator and just connect it via terminals at the back. I'm going to connect the temperature sensor using the screw terminals also, so I'll have terminals on the back anyway.

It's the same amount of work either way. Any input on this decision?


----------



## kman

AnotherHobby said:


> I'm looking for some design feedback here. I'm trying to decide between two ways of connecting the CO2 pressure sensor. One is to keep the sensor at the project box, and then run an air line to the box. The other is to put 3 little screw terminals externally and then keep the sensor at the regulator and just connect it via terminals at the back. I'm going to connect the temperature sensor using the screw terminals also, so I'll have terminals on the back anyway.
> 
> It's the same amount of work either way. Any input on this decision?


Frankly I think the less airline the better. Fewer opportunities for leaks. Also puts the sensor closer to the source. And thin wires are easier to conceal than 2 pieces of airline.


----------



## 75ona76

I agree. Less likelihood of failure running wires vs airline.


----------



## scapegoat

AnotherHobby said:


> I'm looking for some design feedback here. I'm trying to decide between two ways of connecting the CO2 pressure sensor. One is to keep the sensor at the project box, and then run an air line to the box. The other is to put 3 little screw terminals externally and then keep the sensor at the regulator and just connect it via terminals at the back. I'm going to connect the temperature sensor using the screw terminals also, so I'll have terminals on the back anyway.
> 
> It's the same amount of work either way. Any input on this decision?


The pressure sensor is an analog signal, so you do need to be careful in regards to voltage drop on longer wires. I know for my system's layout I'll be better off running the airline tubing to my controller due to the distance.


----------



## AnotherHobby

kman said:


> Frankly I think the less airline the better. Fewer opportunities for leaks. Also puts the sensor closer to the source. And thin wires are easier to conceal than 2 pieces of airline.


I've never had an airline leak, and it'd only be 1 line instead of 2. Good points though!



75ona76 said:


> I agree. Less likelihood of failure running wires vs airline.


I don't think failure is the overriding issue. There are the same number of connections either way, just a difference of 2" of line vs. 2' of line. Silicone line can handle a lot more than 30 psi. That said, I like the idea of the sensor a the regulator better.



scapegoat said:


> The pressure sensor is an analog signal, so you do need to be careful in regards to voltage drop on longer wires. I know for my system's layout I'll be better off running the airline tubing to my controller due to the distance.


Hmmm... that's a good point, although I don't know if there is much voltage drop over just 2' of wire. I'd wonder about interference too, but there's not much else close to it. I'll have to test that if I go that way though.

So far that's two for keeping it by the regulator and one for the box. One advantage of it at the regulator is also if I have to work on the regulator or the arduino project, it's less intrusive to disconnect 3 screw terminals than it is to disconnect an airline. The advantage of at the box is it's easier to just run 1 airline. I'm still curious if anybody thinks the either way has some advantages.

*PROGRESS UPDATE*

Now for a big picture/progress update. Lots of pictures, cause that's what I do. Tonight I finished removing the voltage regulator from the motor controller and cut the board down smaller. I mounted the ambient light sensor for auto-dimming with a quick disconnect. I attached quick disconnects to the dosing pumps, and also mounted them. I took pictures of my final modifications to the ElecFreaks board. And I'll end with a quick ode to the best soldering iron I've ever used.

This is how I decided to connect my dosing pumps. I wanted to be able to disconnect the easily and not confuse +/- when reconnecting. It's just two header pins soldered to a 2-pin quick disconnect.










This is the front/back of the motor controller and 12v board. It has the MOSFETs for the motors, the resistors for the incoming Arduino PWM connections, input from the 12v power supply, and output 12v to the motors and the Arduino. I'm using 200V 1A diodes for flyback. Last time I used 60V 2A ones and they were fine as well.










This is the front/back of the ambient light sensor. It's in the lower right of the screen. It just needs to be mounted wherever it can see the ambient light of the area. I pushed the sensor into a 2-pin quick disconnect and glued that to the back of the screen board, then bent it around to face the front. I'll get a little joy out of seeing it every time I look at the screen. 










Here are the dosing pumps mounted. I put them up high, leaving plenty of room under them if I decide to add more. I could see adding one for glut if I decide to start dosing that, or perhaps for doing auto top off with water. I wanted to leave room "just in case" because space will be at a premium in this box.










The next two pics are of the ElecFreaks board. The last pic I posted of this board showed the resistor going to PWM pin 13, but I moved it to 8. I just wanted to be clear in case anybody decides to do this. Also, I cut off pin 47 on the side that plugs into the Arduino because it's not needed and I'm using pin 47 for the temp sensor. I just didn't want any interference.



















And last but not least, my sweet a$$ soldering iron. A rechargeable ISO-TIP 7700. It does about 100-125 joints on a charge, so it won't make it through a massive session, but it gets through most. Charge takes about 3-4 hours in it's docking station. It's cordless, it heats up in < 10 seconds, it has multiple tips depending on how fine or heavy I'm soldering, it's super comfortable to use, and you can't leave it on because you have to push the button to use it. It's just a great tool.


----------



## scapegoat

If you're going to run wires to the sensor I'd recommend getting some wires that are already wrapped, even if it's ethernet cable. just to keep things cleaner, and better protected. if your options are a single airline, or three low voltage wires... go with the single airline, it'll end up being much cleaner. 

I doubt you'll see much voltage drop over 2', but I'd rather see a cleaner installation.


----------



## kman

What's the theory behind the co2 pressure sensor function? It's merely picking up air pressure, right? Does it T off the regular line in a common diffuser setup?


----------



## maxwellag

Wow, nicely done! I have been wanting to do this for quite some time. I was wondering... can you use an uno, or does it have to be a mega?


----------



## AnotherHobby

scapegoat said:


> If you're going to run wires to the sensor I'd recommend getting some wires that are already wrapped, even if it's ethernet cable. just to keep things cleaner, and better protected. if your options are a single airline, or three low voltage wires... go with the single airline, it'll end up being much cleaner.
> 
> I doubt you'll see much voltage drop over 2', but I'd rather see a cleaner installation.


I'm still vacillating between cleaner install, or ease of future maintenance.



kman said:


> What's the theory behind the co2 pressure sensor function? It's merely picking up air pressure, right? Does it T off the regular line in a common diffuser setup?


The pressure sensor is picking up CO2 pressure. The purpose is to determine if CO2 is pressurized and running when it should be, and then to take automated action if it's not.

The sensor on my setup is placed between the solenoid and the needle valve on the regulator. I'm using a reactor, which barely takes any pressure to work, so in testing I couldn't tell the difference between on and off. That's why I had to put the sensor between the solenoid and needle valve. 

A diffuser takes a lot more pressure to operate, so it could just go inline with a T on the airline after the needle valve (and bubble counter if you have one). No need to mess with changing a regulator setup.



maxwellag said:


> Wow, nicely done! I have been wanting to do this for quite some time. I was wondering... can you use an uno, or does it have to be a mega?


Thanks! You couldn't use an uno. They don't have enough pins to even run the screen and touch pins. They also don't have enough memory to hold all of the code. A Funduino uno is $13 and a Funduino mega is $17, so it's a minuscule difference in cost anyway.


----------



## scapegoat

how often will you need to remove the airline? you could put something like a compression fitting or something somewhere. I'd go for some sort of fitting that'll allow for easy disconnect. 

I mean, my controller is ugly, but you're not going to see it.


----------



## mistergreen

Wouldn't it be cool if the pressure sensor was built into the regulator? You just plug a 2 wire into it to get readings.

Do they make digital regulators?


----------



## AnotherHobby

scapegoat said:


> how often will you need to remove the airline? you could put something like a compression fitting or something somewhere. I'd go for some sort of fitting that'll allow for easy disconnect.
> 
> I mean, my controller is ugly, but you're not going to see it.


You know, now I'm thinking a black phone line (RJ11) with 4 conductors would work perfect for this. It'd be just as clean as an airline, and super easy to disconnect. Same goes for the temp sensor. Ding! ding! ding! We have a winner!



mistergreen said:


> Wouldn't it be cool if the pressure sensor was built into the regulator? You just plug a 2 wire into it to get readings.
> 
> Do they make digital regulators?


That would be slick. I wish the sensor just had 1/8" NPT fittings. Screw it right in, and done. Digital regulator sounds expensive. EEK!


----------



## kman

Hey, AH, do you have a good source for those quick disconnects you're using? I've used them many times before and they're super handy, but it occurs to me that they've always come with whatever I was assembling, usually with pigtails already attached. I gotta imagine DX would be a great place to just pick up whole bag of matched connects with pigtails, but I can't for the life of me find the search terms to pull them up. (so far this is the closest I've found) If I can, I'll add them to my order.

Bump:


AnotherHobby said:


> You know, now I'm thinking a black phone line (RJ11) with 4 conductors would work perfect for this. It'd be just as clean as an airline, and super easy to disconnect. Same goes for the temp sensor. Ding! ding! ding! We have a winner!


Ooh, good idea. Although those of us with network cable crimpers are going to have an easier time of this than others.  Hm, the corresponding sockets, however, could be more of a PITA.


----------



## AnotherHobby

kman said:


> Hey, AH, do you have a good source for those quick disconnects you're using? I've used them many times before and they're super handy, but it occurs to me that they've always come with whatever I was assembling, usually with pigtails already attached. I gotta imagine DX would be a great place to just pick up whole bag of matched connects with pigtails, but I can't for the life of me find the search terms to pull them up. (so far this is the closest I've found) If I can, I'll add them to my order.


Evilbay item 400653890690 gives you 26 pairs for $7.87 shipped from China. That's 26 female and 26 male. That's what I bought. They work great. Pin spacing is correct for soldering the male end to a normal board, as seen in this pic:


----------



## kman

AnotherHobby said:


> Evilbay item 400653890690 gives you 26 pairs for $7.87 shipped from China. That's 26 female and 26 male. That's what I bought. They work great.


Ordered.

I sure hope I get this all to work...


----------



## AnotherHobby

kman said:


> I sure hope I get this all to work...


Me too!


----------



## dustinah

I would totally pay you to make one for my saltwater reef. Totally pay you, message me.


----------



## PortalMasteryRy

dustinah said:


> I would totally pay you to make one for my saltwater reef. Totally pay you, message me.


Like I said! Kickstarter! LOL 

I just saw a guy's project for a digital C02 Meter got funded $16k. I don't know how complex the device is but I'm assuming that he could make a ton of money since we have yet to see an AFFORDABLE digital C02 meter.


----------



## AnotherHobby

I've completed the project box, and I love it. I still have a few finishing touches and connections to make, like mounting the IR light nicely. I haven't even powered the box on yet, but here is what it looks like. 

From the floor to the top of the screen case is 19" tall.

I love the finishing touch of the super high end thick glass base. It's from a Definitve Tech Mythos Two tower speaker. It's a *perfect* fit. It's very heavy, has rubber feet on aluminum posts with a wide stance, and makes the tower insanely stable. It also looks freaking sweet. Pardon the big pic:










So you can see the shape, here is a pic of the underside of the base:










The tower shape is was very deliberate from the beginning. It's functional because of where it goes. It lifts the screen up so I can see it an interact with it from my chair. Here are a few pictures of where it will go. The first one is from behind my chair that sits by my tank. You can see the iAqua tower sitting by the tank stand, next to my chair.










This is the view of the controller from my chair. I have a clear view of the screen, and it's very easy to reach. The screen also rotates, so normally it'd be angled toward me.










The only thing I noticed after taking these pictures is the color. I'm trying to decide if I should use the same stain I used on the stand.

I think it would look better, but I'm on the fence.


----------



## kman

Very nice!

Stain it.

DefTech makes some nice speakers. 

Do you have your aquascaping tools on a mag strip on the side of your stand?

And of course, now I want to know what you're looking at while you sit in that chair.


----------



## dustinah

I just bought all the kit tonight (200 bucks just to start) and have been searching all day on best programming / code to use.. I'll be in the race soon!!!


----------



## AnotherHobby

kman said:


> Very nice!
> 
> Stain it.
> 
> DefTech makes some nice speakers.
> 
> Do you have your aquascaping tools on a mag strip on the side of your stand?
> 
> And of course, now I want to know what you're looking at while you sit in that chair.


I'm really leaning towards staining it, but it means 100% tear down. :icon_frow

Yes, the speakers are great. Didn't need the stands because my TV is on a big swing arm that hold's all 3 front channels.

Yes, I have all of my aquascaping tools on a mag strip on the side of the stand. It works really awesome, and I never lose them now. That side of the tank is rarely seen, so it was a great place to hide them.

From that chair, I just look into the living room. No TV in this room. Just music, conversation, and the aquarium:












dustinah said:


> I just bought all the kit tonight (200 bucks just to start) and have been searching all day on best programming / code to use.. I'll be in the race soon!!!


Sweet! That seems like a bit more than I spent. Did you get a bunch of extra stuff, or did you choose different components?


----------



## theknight

*PH Addition*

Has anyone investigated and modified the sketch to include a PH sensor and control of the CO2 solenoid with the monitor?

I would really like to add this but my ability to write and modify code for this are lacking.


----------



## AnotherHobby

theknight said:


> Has anyone investigated and modified the sketch to include a PH sensor and control of the CO2 solenoid with the monitor?
> 
> I would really like to add this but my ability to write and modify code for this are lacking.


It's on my radar, but I haven't dug into which probes to get. The thing is that doing PH isn't cheap, and has to be calibrated. I'm on the fence if it's worth it.


----------



## theknight

Glad to hear it is on your radar. I might have to give you my SSN so you can claim me as a dependent. I bought the Atlas Scientific kit with the probe, IC and calibrating fluids. I will probably set it up and run it as a stand alone until I can incorporate it into the iAqua.


----------



## AnotherHobby

theknight said:


> Glad to hear it is on your radar. I might have to give you my SSN so you can claim me as a dependent. I bought the Atlas Scientific kit with the probe, IC and calibrating fluids. I will probably set it up and run it as a stand alone until I can incorporate it into the iAqua.


Yep, this is the kit I was looking at. I've been going a little nuts on the projects lately, so if I get one it'll be a little while. Once you get far along with your project, it would be pretty easy to add it to the sketch.

-Dan


----------



## theknight

Thanks, any guidance you can give would be greatly appreciated.


----------



## AnotherHobby

kman said:


> Stain it.


Done. Inside and out, with as much of the electronics removed as was practical to do so (the 120v and relays are not easy to remove). Looks way better! I'll do a satin finish wipe on poly tomorrow.


----------



## Ultimbow

Awsome work. I slowly started to orded my parts to put this together this winter if i can wait that long


----------



## kman

Gorgeous! Have you had it actually up and running your tank yet, or is all in testing phase still thus far?


----------



## AnotherHobby

Ultimbow said:


> Awsome work. I slowly started to orded my parts to put this together this winter if i can wait that long


Thanks! And good luck waiting! LOL!



kman said:


> Gorgeous! Have you had it actually up and running your tank yet, or is all in testing phase still thus far?


Thanks! The hassle of constantly undoing everything has kept me from hooking it up. Once I know I'm done with the hardware, it'll get hooked up. I'm expecting this to happen in the next week or so. It'll take a couple of days to get the poly coats put on, and then I have to re-assemble and test all of the connections. I got a nice dual phone jack hookup for the temp sensor and co2 pressure sensor, so I have to wire that up too. Getting very close though!!


----------



## AnotherHobby

For anybody the gets the MPX5700AP sensor and wants to play with it or integrate it into their own project, here is a small sketch that will show you how to use it. I explain how the math works in the comments.



Code:


// sketch to read MPX5700AP pressure sensor
// written by Dan Cunningham
// released to public for free use

#include <Wire.h>

int pressureSensor = A0; // Set MAP sensor input on Analog port 0

// atm is your average barometric pressure in HPA. We will need to subtract this later.
// To mesaure it, this is the value of the pressure variable below when nothing is attached to the sensor.
// The value of 101.1174 is for MN, this can vary quite a bit for altitude.
float atm = 101.1174; 

void setup(){
  
  Serial.begin(9600); // Open serial port
}

void loop()
{
  // MEASUREMENT
  int pressureSensorRaw = analogRead(pressureSensor); //Reads the sensor raw value on analog port 0
  float pressureSensorVoltage = pressureSensorRaw * (5/1023);  // convert the raw reading to voltage
  
  // MATH
  // pressure raises linear from 0 to 700 kPa, over 0.2 to 4.7 volts, so we need to map those values correctly
  // first add 0.2 volts to raise the linear floor, then divide 700 kPa by the range of 4.5 volts (4.7 - .2)
  // multiply the two and we get how many kPa the sensor read
  float kPa = (pressureSensorVoltage + 0.2) * 700.0/4.5;
  
  // next we have to remove atmospheric pressure from the reading
  kPa = kPa - atm;
  
  // OUTPUT TO SERIAL
  Serial.print("RAW:\t");
  Serial.println(pressureSensorRaw); 

  Serial.print("Volt:\t");
  Serial.println(pressureSensorVoltage); 

  Serial.print("KPa:\t");
  Serial.println(kPa,  3); 
  Serial.print("PSI:\t");
  Serial.println(pressure*0.145037738,  3);   // convert to PSI
  delay(1000);
  
}

I had to figure out most of the math for myself. The code I had found online made some miscalculations, and it's why my earlier graph showed a floor in the low 20's of PSI and a max of 40 PSI. That bugged me because I knew my regulator was set to somewhere around 30 PSI, and it's a high quality unit that should read correctly. I knew the math was wrong. They misinterpreted the spec sheet, and there was no correction for atmospheric pressure.

After digging in and getting the formula to what I had figured was right, I reapplied the new math to my numbers from earlier. Below is the corrected graph, and it reads exactly what it should, maxing out around 30 PSI as my regulator said. On a side note, the jump at the end is interesting — when the solenoid first turns on, it overshoots by about .7 psi, then drops back down after the needle valve catches up.

So, we now have accurate and correct math for this sensor!


----------



## AnotherHobby

Interesting note... the MPX5700GP would actually be a better pressure sensor for this. It measures the input pressure against atmospheric pressure instead of an absolute pressure of 0. As such, there is no need to compensate for atmospheric pressure with the MPX5700GP (it works like a tire gauge). The one I have works great, but the other one would technically be less math and a little easier to work with. Here is a good reading on the matter.


----------



## kman

Mental note: Don't buy pressure sensors until the design is more finalized.


----------



## AnotherHobby

kman said:


> Mental note: Don't buy pressure sensors until the design is more finalized.


Ha! I suppose that's fair, but the sensor I have works very well anyway. 

On a side note, today I was on the hunt for an affordable similar type sensor that can read air/gas flow. I found a few, but they were in the $100 range, which I don't know if it's worth what I want to do with it. I am thinking it should actually be pretty easy to measure CO2 flow rate with the right sensor. 

The idea being that you measure the precise amount of CO2 you are flowing into your tank. It would be really easy to go make adjustments and track progress. Once you get your flow dialed in for your tank, you'd be able to monitor it, and repeat it. People could compare real flow rates instead of BPS. You'd have to make manual physical adjustments, but you'd know precisely where you are at, and it'd be way better than BPS or a drop checker. The other two things would help you get there, but this would help you stay there.

A needle valve setting is dependent on pressure, so if you swap tanks or have to change your working pressure, you have to start over. As we know, BPS isn't actually that accurate. So if you really got your flow dialed in, it would be super easy to swap tanks and then just dial it back in. Not sure if I'll be successful in finding anything, but I know the idea is good. I'm on the hunt.


----------



## mistergreen

kman said:


> Mental note: Don't buy pressure sensors until the design is more finalized.


You don't need exact numbers really, just high & low.


----------



## AnotherHobby

mistergreen said:


> You don't need exact numbers really, just high & low.


Bingo! Although my new formula does provide exact numbers. :icon_cool


----------



## kman

^^ Yes, and I like the idea of being able to dial in a more precise bubble rate after changing tanks, etc.

Probably less of a big deal for people with nice, super accurate gear, but my little Aquatek paintball rig has a not-very-precise needle valve. Also, I'm so lazy I haven't gotten around to installing my bubble counter yet! So I'm kinda going by the seat of my pants, adjusting co2 until (a) the fish aren't gasping, and (b) the bubble stream from my diffuser looks "about right".


----------



## mistergreen

kman said:


> ^^ Yes, and I like the idea of being able to dial in a more precise bubble rate after changing tanks, etc.
> 
> Probably less of a big deal for people with nice, super accurate gear, but my little Aquatek paintball rig has a not-very-precise needle valve. Also, I'm so lazy I haven't gotten around to installing my bubble counter yet! So I'm kinda going by the seat of my pants, adjusting co2 until (a) the fish aren't gasping, and (b) the bubble stream from my diffuser looks "about right".


The sensor is on the other side of the needle and is not use to control bubble rate. It's used to figure out if the co2 tank is full or not from what I understand.

I guess you can reconfigure the sensor after the needle valve for that purpose.

Sent from my iPad using Tapatalk HD


----------



## AnotherHobby

mistergreen said:


> The sensor is on the other side of the needle and is not use to control bubble rate. It's used to figure out if the co2 tank is full or not from what I understand.
> 
> I guess you can reconfigure the sensor after the needle valve for that purpose.
> 
> Sent from my iPad using Tapatalk HD


mistergreen is Correct. You'll never get flow with this setup. Near as I have been able to think of, it'll just tell you if pressure comes up when it should, and if it falls off when it shouldn't. It'll also tell you exactly what your pressure is, but so does the needle on your CO2. That's why I'm hunting for a reasonably priced flow sensor.


----------



## kman

AnotherHobby said:


> mistergreen is Correct. You'll never get flow with this setup. Near as I have been able to think of, it'll just tell you if pressure comes up when it should, and if it falls off when it shouldn't. It'll also tell you exactly what your pressure is, but so does the needle on your CO2. That's why I'm hunting for a reasonably priced flow sensor.


Ah, yes, that's what I was referring to.


----------



## AnotherHobby

*Found one!*

It's really hard to find a sensor to detect flow at the super slow rates we use CO2. First I had to find out how much CO2 we really use in the form of a rate, and I think I have that figured out.

My first attempt at figured this out involved making all sorts of assumptions. I think it took about 6 months to empty my 5 pound CO2 tank. I calculated out 5 pounds of CO2 over 6 months with the tank running for 8 hours per day. From this I calculated 1.69 grams of CO2 per hour. I then found a formula for how much space 1 kg of CO2 occupies at room temperature and atmospheric pressure, and calculated that I'm flowing about .94L of CO2 per hour, or 15.7 mL/min. I figured that this is not a very precise estimate, especially since the CO2 line is under more than atmospheric pressure. It might be close, but who knows.

Then I recalled a post by Tom Barr where he measured CO2 by holding a container under water and filing it up. That's going to be more accurate than my above fuzzy math. He was flowing a lot of CO2 for his big 180 gallon tank, and the rate he had was 500 mL in 249 seconds. That works out to be close to 120 mL per min. That's just under 10x how much CO2 I'm moving in my 17 gallon tank, which is about 10x smaller. That actually jives very well with my initial fuzzy math.

So, based on all that, I think the ideal sensor that would work on most tanks would measure from 0 to 200 mL/min from 0-5v, and withstand up to 50 psi. I haven't found one yet, but I did find something very close. The sensor is an Omron D6F-P0001A1 (datasheet). It will detect flow from 0-100 mL/min outputting 0.5v to 2.5v in a very linear fashion. This should good enough resolution and flow for any tank between 10 and 150 gallons (based on Tom's above measurement), and it should work on an Arduino just using analog in. The biggest catch is that it can only handle 7 psi. So, it won't work with a diffuser. However, according to my MPX5700AP sensor, the line going to the reactor is less than that! So, it should work with a reactor. I'm going to double check my reactor pressure tonight.

When reading analog in, you get a value from 0-1023 for 0-5v. Since this sensor only has about 2v or range, that's a resolution of a little over 400 values for 0-100 mL/min. In other words, we could detect to within .25 mL/min, which I think would be pretty good for this. It would be better if it output 0-5v for twice the resolution, or read higher for tanks over 150 gallons, but beggars can't be choosers. 

Digikey sells them for $51.71. That also happens to be the cheapest flower sensor. Most are $100 and up.

EDIT: Another vendor has them for only $36!

Not sure if I'll buy one yet, and don't blame me if you do and it doesn't work. 

It'd basically be a very accurate and precise $50 digital bubble counter. Wouldn't that be cool though if we could compare mL/min rates instead of bubbles?!

Now to find a stepper controlled needle valve, and have it self adjust for the worlds most rock steady CO2. :drool:


----------



## kman

LOL you're a rare bird, AH. 

Meanwhile, it begins...










MWAH-HA-HA-HA-HA!

Of course, I'll be waiting another week or two for the Arduino itself before I can actually DO anything with it...


----------



## AnotherHobby

kman said:


> LOL you're a rare bird, AH.
> 
> Meanwhile, it begins...
> 
> MWAH-HA-HA-HA-HA!
> 
> Of course, I'll be waiting another week or two for the Arduino itself before I can actually DO anything with it...


A rare bird indeed! Thanks for the compliment! 

Woah, stuff! Let the fun begin!



AnotherHobby said:


> The biggest catch is that it can only handle 7 psi. So, it won't work with a diffuser. However, according to my MPX5700AP sensor, the line going to the reactor is less than that! So, it should work with a reactor. I'm going to double check my reactor pressure tonight.


Quoting myself for clarity here. I just tested the pressure between the reactor and the needle valve, and it's only 1.6 PSI above atmospheric pressure. I've read that on here, and it makes sense. The only real pressure is the water above it coming down the flow pipe tubes. That means this thing should be a slam dunk for measuring CO2 flow with a reactor.

After doing some minimal searching, I found the sensor for just $36, and I couldn't help but click the buy button. The hose barbs are also 4.9mm, so it should work with the standard silicon airline tubing.


----------



## theknight

AnotherHobby said:


> A rare bird indeed! Thanks for the compliment!
> 
> Woah, stuff! Let the fun begin!
> 
> 
> 
> Quoting myself for clarity here. I just tested the pressure between the reactor and the needle valve, and it's only 1.6 PSI above atmospheric pressure. I've read that on here, and it makes sense. The only real pressure is the water above it coming down the flow pipe tubes. That means this thing should be a slam dunk for measuring CO2 flow with a reactor.
> 
> After doing some minimal searching, I found the sensor for just $36, and I couldn't help but click the buy button. The hose barbs are also 4.9mm, so it should work with the standard silicon airline tubing.


Great find, now on to the digital needle valve! But for selfish reasons I think you should do the PH first


----------



## AnotherHobby

theknight said:


> Great find, now on to the digital needle valve! But for selfish reasons I think you should do the PH first


Ha! One thing at a time. I'm busy for the next couple of nights, but should be able to poly the case on Saturday. After that dries I can put this thing together and flush out any final little bugs. I want to get what I have completed all assembled and running before I start adding more stuff. I don't even plan on integrating the CO2 pressure sensor until later. It's pretty much ready to go as is, and it'll be a big milestone to get it up and running.

There is plenty of time to play with new toys after that!


----------



## theknight

AnotherHobby said:


> Ha! One thing at a time. I'm busy for the next couple of nights, but should be able to poly the case on Saturday. After that dries I can put this thing together and flush out any final little bugs. I want to get what I have completed all assembled and running before I start adding more stuff. I don't even plan on integrating the CO2 pressure sensor until later. It's pretty much ready to go as is, and it'll be a big milestone to get it up and running.
> 
> There is plenty of time to play with new toys after that!


Fair enough, but just keep in mind that if you stop developing new ideas to abruptly the Chinese economy can go into a tailspin and trigger another global crisis.


----------



## mistergreen

theknight said:


> Great find, now on to the digital needle valve!


I think there is one. Clippard sell it. I was eyeing it a while back.

http://www.clippard.com/products/electronic-valve-proportional


----------



## AnotherHobby

mistergreen said:


> I think there is one. Clippard sell it. I was eyeing it a while back.
> 
> http://www.clippard.com/products/electronic-valve-proportional


I was looking at that, but I don't know if it'd work.

Based on my earlier calculations, we're looking to flow between 0 and 100 mL/min, and less than 50 mL/min for most tanks. The smallest orifice option looks like the ET-P-05-0950. That unit will max out at 2700 mL/min (2.7 LPM). As you know, PWM on the Arduino gives us 255 steps. That means with the 5v model the smallest step we can make is 10.6 mL/min (2700 / 255). Not nearly precise enough with PWM.

Even if you could theoretically under-drive the 20v model with 5v and effectively use just the bottom 1/4 of it's range, you'd still have a resolution of 2.6 mL/min. I think that's still not good enough. I think the orifice opening is just fine, but the arduino's PWM doesn't have fine enough control.

What do you think? Did I do my math right?


----------



## O2surplus

AnotherHobby said:


> I was looking at that, but I don't know if it'd work.
> 
> Based on my earlier calculations, we're looking to flow between 0 and 100 mL/min, and less than 50 mL/min for most tanks. The smallest orifice option looks like the ET-P-05-0950. That unit will max out at 2700 mL/min (2.7 LPM). As you know, PWM on the Arduino gives us 255 steps. That means with the 5v model the smallest step we can make is 10.6 mL/min (2700 / 255). Not nearly precise enough with PWM.
> 
> Even if you could theoretically under-drive the 20v model with 5v and effectively use just the bottom 1/4 of it's range, you'd still have a resolution of 2.6 mL/min. I think that's still not good enough. I think the orifice opening is just fine, but the arduino's PWM doesn't have fine enough control.
> 
> What do you think? Did I do my math right?



Would it be feasible to put some TIMER ONE code in your software to create a 10 bit PWM signal? Then you'd have 1024 steps of resolution instead of 255?


----------



## mistergreen

I'll trust your math 

O2surplus is right, you can change the resolution. Depending on what chip/arduino (due only) you're using, you can do http://arduino.cc/en/Reference/AnalogWriteResolution

If not, you can use a Timer library
http://playground.arduino.cc/Code/Timer1


----------



## AnotherHobby

O2surplus said:


> Would it be feasible to put some TIMER ONE code in your software to create a 10 bit PWM signal? Then you'd have 1024 steps of resolution instead of 255?


Hmmmm... that's a good idea! I'm not sure how it would affect my code, because I'm not a super wiz at the Arduino. It'll take some research, or somebody who knows better to tell me. I know the IR library can run on timer one if I move the IR LED to pin 11. Other than that I'd have to dig in.

That many steps would take the 5v model to the 2.6 mL/min resolution range, which I don't think is good enough (at least for smaller tanks). However, if you could under drive the 20v model with 5v, and effectively only use the bottom 1/4 of it's range, then you'd have 0.66 mL/min resolution, which should work.

I know you can drive it with PWM because the data sheet says "The valve may be controlled using DC current, open- or closed-loop control, and even PWM (pulse width modulation) to cover a broad range of applications." It's just a question of under driving the 20v model with 5v. 

The other thing that I just thought of is that flow rate is dependent on working pressure. If we used the 5v model (ET-P-05-0950) but only supplied it with 25 PSI working pressure instead of it's 100 PSI max rating, would that knock it down to 1/4 the flow? That would accomplish the same thing, and combined with 1024 steps, you'd have .66 mL/min resolution.

I've submitted all of my questions to Clippard. We'll see what they say.


----------



## mistergreen

You can also use a TLC5940 which will give you 12 channels and 12 bits. 

http://playground.arduino.cc/learning/TLC5940

You can use the extra channels for lights, motors etc.


----------



## AnotherHobby

mistergreen said:


> You can also use a TLC5940 which will give you 12 channels and 12 bits.
> 
> http://playground.arduino.cc/learning/TLC5940
> 
> You can use the extra channels for lights, motors etc.


Sweet! And they are pretty cheap, which is great. That many steps gets you 0.66 mL/min flow rate resolution at 100 PSI. I think if you were at 25 PSI working pressure, you'd have more resolution than you'd need. This is looking more and more like it's a completely possible goal to set your flow rate in mL/min, let the Arduino read from the flow sensor and make adjustments to the electronic needle valve until it hits it's desired flow rate. 

If you already have an Arduino, hardware costs should be in the neighborhood of a little over $100 for the valve, the meter, and the TLC5940. Yes, that's more expensive than an NV-55 and a bubble counter, but it's also precise, automated, and repeatable control.

If I get good answers from Clippard on flow rates for lower PSI ranges, I'm going to buy what's needed and try to make this (after the main project is done).

The only catch I know of at this point is that the flow sensor I found isn't rated for more than 7 PSI, so full automation will only work if you have a reactor, or if you find another sensor than can handle higher PSI.


----------



## mistergreen

bah, who needs a bubble counter when you have this although it would be fun to create a virtual bubble counter. The number of bubbles would reflect the mL/min.


----------



## kman

My recommendation (free to take or leave): Perhaps set it up with both ways as options: 1) A simpler low cost method using just the simpler cheaper pressure sensor to warn if pressure dramatically changes unexpectedly (as originally envisioned), and 2) the high tech way which needs the more expensive hardware but delivers the accurate flow measurements as opposed to the simple on/off high/low of the cheaper route. That way feature creep doesn't turn a ~$100-200 project into a $300+ project.


----------



## AnotherHobby

kman said:


> My recommendation (free to take or leave): Perhaps set it up with both ways as options: 1) A simpler low cost method using just the simpler cheaper pressure sensor to warn if pressure dramatically changes unexpectedly (as originally envisioned), and 2) the high tech way which needs the more expensive hardware but delivers the accurate flow measurements as opposed to the simple on/off high/low of the cheaper route. That way feature creep doesn't turn a ~$100-200 project into a $300+ project.


Yeah, that's what i was thinking, and why I am going to build the main project, and get it done and 100% flushed out. I've just having fun with research on my lunch breaks.  Same goes for PH, since that'd add another $100 as well. If/when I add those things in the future, I figured I'd just tag them on top of the other info panels on the home screen. If you didn't have them, just don't show them. Conceptually, something like this:










Then I can't add anything new. I'm out of home screen space. :redface:


----------



## Ultimbow

I am so hook to that built i am suppose to get my arduino tommorow. I can see late night of learning so i can try to built something similar or copy it....


----------



## kman

Sounds good, AH!


----------



## 75ona76

Oh my. I can already see that I am going to have to watch this idea grow. I haven't been interested in CO2 because of the variability of the control systems currently. If I could control it so exact and integrated with the controller I am building now... Hmmm.


----------



## Calico88

Best design aqua controller i've ever seen.
I've been following this thread since the beginning and it's getting better and better, specially the GUI design.

Can you explain the process of making the GUI language after you design in photoshop?
I'm trying to find the easiest way to use a language to create good GUI like yours.
Could'not find one for non programmer like me.

Btw, how fast the "CPU" when you touch/control it?
Is it fast enough for this ?

This would be cool if you can control/remote through internet (web server) 

Great job!


----------



## AnotherHobby

Calico88 said:


> Best design aqua controller i've ever seen.
> I've been following this thread since the beginning and it's getting better and better, specially the GUI design.


Thanks!



> Can you explain the process of making the GUI language after you design in photoshop?
> I'm trying to find the easiest way to use a language to create good GUI like yours.
> Could'not find one for non programmer like me.


The drawing of pictures is acceptable, but not that fast. The biggest consideration when making the GUI with this hardware is to try and not use too many image files. I do use a lot of them, but most of them are "icons" and made to be pretty small.

Once I've got what I want in Photoshop, I cut up the images and save out PNG files of each little icon or image. You have to name them to strict DOS 8.3 file naming or they won't read. Once you've had the PNG's, you have to convert them to RAW. This isn't like camera RAW, and you can't save them out of PS this way. You have to convert the PNG files. There is a web-based converter, or you can use the windows app that comes with the UTFT library. Copy them to the SD card, and then draw them to the screen using loadBitmap like this: 



Code:


myFiles.loadBitmap(26, 80, 188, 72, "iAqua.raw");

For the lines, I don't use images. I draw them. Here is an example:



Code:


myGLCD.setColor(130, 130, 130);  // this sets color to gray 
myGLCD.drawLine(40, 31, 239, 31); // this draws a horizontal line

You'll definitely need to read thorough the documentation for the UTFT and UTFT_tinyFAT libraries. The documentation is pretty good.



> Btw, how fast the "CPU" when you touch/control it?
> Is it fast enough for this ?
> 
> This would be cool if you can control/remote through internet (web server)
> 
> Great job!


The touch response is instant. I'll probably web enable it at some point, but I'll do that with Raspberry Pi connected to the Arduino over I2C.


----------



## Calico88

Thanks for the quick answer.
If you do web anable with raspberry pi, do you need to rewrite the code that's been done or you just "add" the code for the raspbeery pi ?

My purpose is webenable monitor/control and schedule dosing pump.
That means I don't have to buy/use display, just use web.

But I have to write the code in some languages which is not in my brain.

Any suggestions ?
Appriciate for that...
Best Regards
C


----------



## mistergreen

Calico88 said:


> Thanks for the quick answer.
> If you do web anable with raspberry pi, do you need to rewrite the code that's been done or you just "add" the code for the raspbeery pi ?
> 
> My purpose is webenable monitor/control and schedule dosing pump.
> That means I don't have to buy/use display, just use web.
> 
> But I have to write the code in some languages which is not in my brain.
> 
> Any suggestions ?
> Appriciate for that...
> Best Regards
> C


It depends on how you organized your code. A good scenario is to write code for the pi and write additional code for arduino to interface with the pi. It won't be easy though.


Sent from my iPad using Tapatalk HD


----------



## AnotherHobby

mistergreen said:


> It depends on how you organized your code. A good scenario is to write code for the pi and write additional code for arduino to interface with the pi. It won't be easy though.


Definitely not easy. It's also not a must have for me, and I have some other projects I want to get to before that. It'll be quite a while before I do it.


----------



## iforeman

*CO2 measurements*

Hi.
I have been following this for a while now. When I saw the addition of the CO2 pressure sensor, it got me thinking. Have you guys seen this, _it directly measures CO2 (not pH, or anything else, just CO2) in the aquarium, and reports the number as parts per million (ppm). It works in all types of water (hard, soft, even marine!)._

(https://www.kickstarter.com/projects/4612189/oco-the-worlds-first-co2-meter-for-aquariums ). 

I spoke the guy who's product it is and asked if he would be willing for us to incorporate his product into iAQUA.

This was his response _“Please feel free to post the link and let people know that I will support integration of my probes into other projects. I'm not anticipating any changes to my hardware, but when you're getting close to wanting some probes, best to email me again just to verify I haven't had to change connectors or anything.“_

What do you guys think about attempting to incorporate this into the iAQUA?


----------



## mistergreen

iforeman said:


> Hi.
> I have been following this for a while now. When I saw the addition of the CO2 pressure sensor, it got me thinking. Have you guys seen this, _it directly measures CO2 (not pH, or anything else, just CO2) in the aquarium, and reports the number as parts per million (ppm). It works in all types of water (hard, soft, even marine!)._
> 
> (https://www.kickstarter.com/projects/4612189/oco-the-worlds-first-co2-meter-for-aquariums ).
> 
> I spoke the guy who's product it is and asked if he would be willing for us to incorporate his product into iAQUA.
> 
> This was his response _“Please feel free to post the link and let people know that I will support integration of my probes into other projects. I'm not anticipating any changes to my hardware, but when you're getting close to wanting some probes, best to email me again just to verify I haven't had to change connectors or anything.“_
> 
> What do you guys think about attempting to incorporate this into the iAQUA?


That looks cool. And it looks like something I've been playing with for a while. There's a CO2 sensor inside that box. I'm not sure how accurate is because of how high it's place above the water line but I'll test for that.

It said there a usb connecting for data logging. It might be using serial data so you'll have to ask them what baud it is and code the arduino to listen to the CO2 device.


----------



## AnotherHobby

I've seen that project, and it's really cool. I have no plans on buying one though, so if somebody wants it integrated they'll have to do that themselves.


----------



## talontsiawd

mistergreen said:


> That looks cool. And it looks like something I've been playing with for a while. There's a CO2 sensor inside that box. I'm not sure how accurate is because of how high it's place above the water line but I'll test for that.
> 
> It said there a usb connecting for data logging. It might be using serial data so you'll have to ask them what baud it is and code the arduino to listen to the CO2 device.


If I recall correctly (there was a thread on it), the sensor is actually below the box, I believe extending down further. 

A couple of have asked if he would develop one with a remote sensor, rather than an all in one box and he says there is a possibility. Most want it for a cleaner look but IMO, it is a bit sketchy to have an outlet on the lip of your aquarium so I do feel there is a potential safety issue that is hopefully compelling enough for him to decide to fix. 

Anyway, if he does go with a remote sensor, it would be much easier to hack the thing but the device is not available yet, and he didn't intend on making design changes, seems open to them if it will help them sell, we will have to see.


----------



## mistergreen

talontsiawd said:


> If I recall correctly (there was a thread on it), the sensor is actually below the box, I believe extending down further.
> 
> A couple of have asked if he would develop one with a remote sensor, rather than an all in one box and he says there is a possibility. Most want it for a cleaner look but IMO, it is a bit sketchy to have an outlet on the lip of your aquarium so I do feel there is a potential safety issue that is hopefully compelling enough for him to decide to fix.
> 
> Anyway, if he does go with a remote sensor, it would be much easier to hack the thing but the device is not available yet, and he didn't intend on making design changes, seems open to them if it will help them sell, we will have to see.


Oh yeah, is there a picture of the sensor? I don't see it anywhere. Yeah, having an outlet next to water is bad. I'm sure there's a fuse/breaker in there.
I found some diy CO2 sensor diagrams with some help of users. The gas permeable material alone is too expensive; it's like $500.


----------



## talontsiawd

mistergreen said:


> Oh yeah, is there a picture of the sensor? I don't see it anywhere. Yeah, having an outlet next to water is bad. I'm sure there's a fuse/breaker in there.
> I found some diy CO2 sensor diagrams with some help of users. The gas permeable material alone is too expensive; it's like $500.


I cannot seem to find one. I did find this however:

_"UPDATED JULY 2: YES, the remote probe is a GO! As for those who want a remote probe instead of a fixed probe, I will be offering this option on all the OCO CONTROLLERS (but not the monitors). When the project concludes at the end of July, I will contact all backers to find out which form they want, ORIGINAL (like in the video) or REMOTE PROBE. There will be no increase in price to have the choice of probe."


_Of his Kickstarter page. Now, these are not available yet, I think the people who donated get there models reasonably soon so we will have to see exactly what they are and how well they work.


----------



## AnotherHobby

So upon final assembly, I ran into a small engineering issue. It turns out that the onboard 5v voltage regulator on the Fundino can't handle the whole project for very long, and within about a minute of powering on, it's shuts down. If I power off USB or USB along with the 12v, it's fine, because it doesn't use the regulator, it just uses USB for the 5v.

I have two different Mega boards, one is the Funduino brand and the other is a knockoff (which I thought was supposed to be a Funduino also, but I digress...). I swapped out the Funduino for the knockoff board, and that one does work without shutting down, but the voltage regulator is too hot to touch, which is probably not good. I'm thinking I do indeed need to add a 5v regulator.

I'll have to modify the project properly integrate a 5v regulator with a Mega. My original plan was not the correct way of doing it, because I was trying to power the Mega off 5v through Vin, but it needs at least 6-7v for the regulator to power the Mega. I know they don't recommend using the 5v pin to power it since it bypasses the regulator, but I think that's how you get this done. Just have to make sure the 5v is clean and steady.

Aside from that, the final project looks great! If this wasn't in the way, it would have gone into use today as my full time aquarium controller. 

Also, I think I promised this a while back, but I finally made a full walkthrough video of the controller interface. The colors don't record correctly, so the colors don't look quite ride on video. I didn't practice, and I hate the way my voice sounds recorded, but if you feel like hearing me jabber on for 10 minutes in 720p, here go:


----------



## AnotherHobby

In reference to my voltage regulator issue above, it's all fixed now. I threw in an L7805CV 5V regulator, and put it on my 12v distribution and motor board. It's properly wired with capacitors on the input and output. I also threw on a nice big heat sink. Instead of wiring to the Vin pin, I bypassed the onboard voltage regulator and wired it to the 5v pin instead.



















With that done, I got it all wired up and it's working! It's "final" at this point! Final is in quotes because I have a few more features and code tweaks I want to do, but I think I'm ready to let it run the tank under a little supervision. Before that I want to get some good pictures first.

We have some friends coming over in a little bit, so we'll see if I have time yet today.

In the meantime... WOOHOO!!


----------



## Ultimbow




----------



## O2surplus

Just finished downloading and installing Fritzing on my PC. Now I can see your drawings easier. I'm gonna convert them over to an EAGLE schematic and then design a shield that integrates everything you've got into one tidy package. (easier said than done- Lol)


----------



## NatroN

Hi you all,

I've spent several hours with google after a arduino aquarium project and now i found this and registered at this board.

After reading every word and watching your video I've to say:

AWESOME work! This is exactly what I was searching for. It will need some changes for me (I'm from asutria so it should show celsius and 24h clock) but nothing not doable. I think I'll have to order some parts. 


Just 2 questions:
1. PH - I have no CO2 controller for 200bucks - i just have an solenoid/magnetic valve (I don't know the right english word) and a needle valve to control my CO2 and I almost killed my fish once with this setup, because the bottle presure raises a bit before it is empty way more CO2 was added over 2 days (I wasn't at home) and all my fish swam at the surfcae. Luckily none of them died.
So it would be totally cool to implement a PH prope as well and turn on/off CO2 when PH is below or above fixed ranges. 100bucks for the probe? Totally worth it.

2nd question: Why MEGA? The due would have been much faster and the touchscreen would work faster as well.





Regards and thanks for this project.


----------



## AnotherHobby

O2surplus said:


> Just finished downloading and installing Fritzing on my PC. Now I can see your drawings easier. I'm gonna convert them over to an EAGLE schematic and then design a shield that integrates everything you've got into one tidy package. (easier said than done- Lol)


That would be sweet. That would have saved me a lot of time, soldering, and precision work. Mine is all done, and I actually love the home-brew look and feel of the whole thing, so I'm happy I went the way I did, but yeah, that would be way less work. I'll post pictures of it in a bit!



NatroN said:


> Hi you all,
> 
> I've spent several hours with google after a arduino aquarium project and now i found this and registered at this board.
> 
> After reading every word and watching your video I've to say:
> 
> AWESOME work! This is exactly what I was searching for. It will need some changes for me (I'm from asutria so it should show celsius and 24h clock) but nothing not doable. I think I'll have to order some parts.


Thanks! All the code and graphics are posted (although I'll have an update shortly), so changes should be quite doable for anybody that can code.



NatroN said:


> Just 2 questions:
> 1. PH - I have no CO2 controller for 200bucks - i just have an solenoid/magnetic valve (I don't know the right english word) and a needle valve to control my CO2 and I almost killed my fish once with this setup, because the bottle presure raises a bit before it is empty way more CO2 was added over 2 days (I wasn't at home) and all my fish swam at the surfcae. Luckily none of them died.
> So it would be totally cool to implement a PH prope as well and turn on/off CO2 when PH is below or above fixed ranges. 100bucks for the probe? Totally worth it.


I'm not sure if I'll do PH or not. I'm still sorting out how I want to handle CO2 control. You should be able to add it, and theknight in this thread also expressed interested. Maybe the two of you can figure it out.



NatroN said:


> 2nd question: Why MEGA? The due would have been much faster and the touchscreen would work faster as well.[/url]
> 
> Regards and thanks for this project.


Because I have no idea what I'm doing. This is my first Arduino project that is my own, so I grabbed what I knew would work.


----------



## AnotherHobby

*It's running my tank!* :bounce:

I'm going to outline some of the final details with how I approached a few parts of the physical build. I hope you enjoy the picture dump. 

This is how I approached 2 things: connecting to external sensors, and making sure IR is always shooting at the lights. It's a 2 jack phone box. The top jack is the temp sensor hook up, and the bottom jack will be the CO2 pressure sensor when I finish that off. You can see the IR emitter on the top of the phone box with the Current IR sensor being held in place by 2 pieces of velcro. Easy to remove, and no chance me or one of my cats will knock the light sensor out of the way.










Sensor wires are all soldered and shrink-tubed to the phone lines for high quality splicing:










Here is the final prototype board that makes all external connections for the Mega. The TFT shield plugs into and piggy packs onto this.










Here is an acrylic mount/protector for the 12v power supply. It was gutted from a wall wart, so it didn't have any normal mounting holes. Right above it you can see the 12v distribution board in place with the 5v voltage regulator.










Here are the fully assembled guts. It's a tight fit to work inside of, but it's definitely workable. The 120v power and relays are very hard to get at, but the rest is pretty easy.










Here it is, all hooked up and running my tank! You have no idea how excited I am to be at this point. I did it! I'm also super glad I stained and poly'd it to match my tank stand. It's of course a perfect match and looks right at home here:










My view from my chair, with the screen angled toward me:


----------



## kman

So exciting! 

I'm glad my order is already en route, because I'm super impatient to start my own, now that everything's up and running. Although perhaps I'll wait to see how O2surplus' shield works out, since that could possibly save me several days of soldering!


----------



## bigd603

AnotherHobby, really awesome job. It's really looking great, and good working finding the CO2 sensor and continuing to find us new stuff to add to our builds.




kman said:


> So exciting!
> 
> I'm glad my order is already en route, because I'm super impatient to start my own, now that everything's up and running. Although perhaps I'll wait to see how O2surplus' shield works out, since that could possibly save me several days of soldering!





O2surplus said:


> Just finished downloading and installing Fritzing on my PC. Now I can see your drawings easier. I'm gonna convert them over to an EAGLE schematic and then design a shield that integrates everything you've got into one tidy package. (easier said than done- Lol)






You guys mean a shield like this? I just got these in the other day. They control up to 3 pumps, has an IR led to control the Current Satellite LED, and has room for pH circuits. Plus it works with the TFT Shield, and has lots of input plugs to add all sorts of fun stuff. If you guys are interested, I have a few extra.


----------



## AnotherHobby

I saw the aquashield. They are cool! However, for what I was building, it wouldn't have worked right, and I still would have had to stack another protoshield anyway. The D48-53 pins and whatever is next to them won't work with the display shield (they will be blocked), and the IR LED would be blocked by the shield also, although maybe you just stick the IR from the light all the way down in there. Some lights have bigger IR receivers though.

Furthermore, since the 5v regulator on the Mega gets super hot with 12V supplied (see here regarding the Mega and 12v : Fuelling Your Arduino - Why you should use an External Power Breakout), I'm not sure how the motor stuff would work since I'm now feeding the Mega with 5v out of my own regulator setup. Now, I didn't know the power stuff until today, but I have no ideal how the 12v stuff is setup on that board. I'm guessing it might have been an issue for me.


----------



## bigd603

Yeah the shield and the board are intended to have separate power sources. From what I have read on other motor shields (Adafruit's specifically) its is best to have two sources. My previous pump shield made from the same protoshield you used had some intermittent issues that I think were cause by powering the shield and arduino from the same power supply. With a 5v regulator, of course.


----------



## AnotherHobby

bigd603 said:


> Yeah the shield and the board are intended to have separate power sources. From what I have read on other motor shields (Adafruit's specifically) its is best to have two sources. My previous pump shield made from the same protoshield you used had some intermittent issues that I think were cause by powering the shield and arduino from the same power supply. With a 5v regulator, of course.


Nice! You knew better than I. I'm glad mine exhibited it's issue in testing, and not after I had gone to work for the day. Where is your Aqua Shield thread anyway? The details of it?


----------



## Ultimbow

NatroN said:


> Hi you all,
> 
> 
> 2nd question: Why MEGA? The due would have been much faster and the touchscreen would work faster as well.
> Arduino DUE and Mega 2560 with CTE 3.2" TFT LCD Module with Font IC Demo - YouTube
> 
> Regards and thanks for this project.


I Been looking at the 2 board the due and mega the mega work at 5v and the due at 3.3v so my gues is i dont think this project would work with the due... but i might be wrong my knowledge are very basic.


----------



## NatroN

Ultimbow said:


> I Been looking at the 2 board the due and mega the mega work at 5v and the due at 3.3v so my gues is i dont think this project would work with the due... but i might be wrong my knowledge are very basic.




the same setup wouldn't work with the due - you're totally right. - because not every shield, tft, probe is MEGA and DUE ready. 

But the functionality is the same - when you've got the right hardware you can run the whole project (with code tweaks for sure) on the due platform as well.

But AH did a great job with his Mega - everything workin as it should be so there is no reason for this project to switch the platform at this stage.


----------



## kman

bigd603 said:


> You guys mean a shield like this? I just got these in the other day. They control up to 3 pumps, has an IR led to control the Current Satellite LED, and has room for pH circuits. Plus it works with the TFT Shield, and has lots of input plugs to add all sorts of fun stuff. If you guys are interested, I have a few extra.


That's very cool! I'd be interested if I was going alone on my an independent design, but I'm a slave to AnotherHobby's design at this point, so I'll pass, although I certain appreciate the offer.


----------



## Matthew RJ

*?*

In what ways does this differ from the one on the market made by Fusion / Apex?

(aside from the obvious satisfaction of DIY). This project is way beyond me, but I know a friend who knows a friend. It's something I'm certainly interested in, but would like some general understanding here.


----------



## AnotherHobby

Matthew RJ said:


> In what ways does this differ from the one on the market made by Fusion / Apex?
> 
> (aside from the obvious satisfaction of DIY). This project is way beyond me, but I know a friend who knows a friend. It's something I'm certainly interested in, but would like some general understanding here.


The Apex can schedule power, do temp, run dosing pumps (not sure about the cheap DIY ones though), and can probably do a lot more than this can (like PH and other stuff). I don't think it can ramp the Current Satellite lights, but that may not be a big deal (especially if you don't have those lights). 

It costs a lot more, but it's also a real completed high quality product. It's not touch screen, but it is web enabled. If a project like this is beyond you, but you really want to do this stuff, I think Apex is probably a great way to do it. Here's a current thread on the Apex. It'd be a good place to answer questions.


----------



## Matthew RJ

*thanks*

I've been following both threads with interest. Good job on this project!


----------



## AnotherHobby

Oh baby! I just got my E-Series! This things controller is way more responsive and smoother reacting to the remote than the Sat Plus. I'm going to have to make a bunch of changes to my iAqua controller for this light. It should be easier to set up. It also does 100 steps per color instead of 42, so the fades will be way smoother. 

The biggest integration difference is that the E-series controller display actually tells you what step you are on out of 100, so there is no need to set the steps via the iAqua interface in order to keep track. Instead I can just enter the numbers I see on the controller and call it good. I'll have to play around with it a bit to decide how I want to do everything. 

I'll still keep Sat Plus support for anybody that plans to make one to integrate with one. That code is all done anyway, so I'll make sure to keep it in mind.

Now I need to make a light hanger so I can actually use it!


----------



## kman

There's a limit to how much I'm going to copy your designs.

_<--- obviously a liar_

But your continuing support for "old" tech is definitely appreciated.


----------



## AnotherHobby

kman said:


> There's a limit to how much I'm going to copy your designs.
> 
> _<--- obviously a liar_
> 
> But your continuing support for "old" tech is definitely appreciated.


Ha! Well, if I made something that caused somebody to go out and buy a bunch of stuff, it'd be kind of a jerk move to suddenly drop that. 

And I still own a Satellite Plus for my new office tank that I'll be setting up in a few weeks.


----------



## kman

That's good, because I _may_ have just ordered a couple of glass syringes and glass J tubes, since my EI ferts arrived today and I suddenly realize I have to actually DO something with them soon, LOL!


----------



## kman

Question: Is there currently a way to set the controller to _automatically_ go into Feeding Mode at a specific time of day, daily? (or better still, scheduleable like the ferts) Reading the Apex thread got me thinking about auto-feeders. The only auto-feeder I really trust wouldn't really be directly compatible / controllable without seriously hacking into it, but if I was to take a 2 week vacation and set the auto-feeder to feed Mon-Sat at 9am, could the iAqua automatically initiate "Feeding Mode" at 9am on those days?

Because that would complete the last step to a FULLY automated tank (at least, fully automated enough to cover a 2 week vacation). Obviously I wouldn't be able to do a water change, but I would imagine (hope?!?) going 1 extra week between water changes wouldn't irreparably harm the tank. Although I'm a little less sure what EI ferts would do over that second week without a change... I'll have to look into that.


----------



## AnotherHobby

kman said:


> Question: Is there currently a way to set the controller to _automatically_ go into Feeding Mode at a specific time of day, daily? (or better still, scheduleable like the ferts) Reading the Apex thread got me thinking about auto-feeders. The only auto-feeder I really trust wouldn't really be directly compatible / controllable without seriously hacking into it, but if I was to take a 2 week vacation and set the auto-feeder to feed Mon-Sat at 9am, could the iAqua automatically initiate "Feeding Mode" at 9am on those days?
> 
> Because that would complete the last step to a FULLY automated tank (at least, fully automated enough to cover a 2 week vacation). Obviously I wouldn't be able to do a water change, but I would imagine (hope?!?) going 1 extra week between water changes wouldn't irreparably harm the tank. Although I'm a little less sure what EI ferts would do over that second week without a change... I'll have to look into that.


That's not in there, but it would be pretty easy to add. As somebody who is prone to long vacations, it's an appealing idea.


----------



## Ultimbow

Got my arduino learning curve is starting


----------



## O2surplus

Hey AH

Any chance that you could attach a copy of the various libraries used in your code? I see you've that you've got everything else needed for this project in the file folder already. Copies of the libraries would make life easier for those with less experience, to make a copy of this awesome project.


----------



## AnotherHobby

O2surplus said:


> Hey AH
> 
> Any chance that you could attach a copy of the various libraries used in your code? I see you've that you've got everything else needed for this project in the file folder already. Copies of the libraries would make life easier for those with less experience, to make a copy of this awesome project.


Excellent suggestion! I was thinking about doing this, but completely forgot about it. I have updated the first post with the package, and I'll past it here:

iAqua_libraries.zip​
That's every library used in the sketch. roud:


----------



## O2surplus

AnotherHobby said:


> Excellent suggestion! I was thinking about doing this, but completely forgot about it. I have updated the first post with the package, and I'll past it here:
> iAqua_libraries.zip​That's every library used in the sketch. roud:



You're the man! Posting those libraries just made my day! Thank you!

Edit: I tried to compile the sketch and got an error. It looks like the _tinyFAT.h_ library was left out and need to be included.


----------



## AnotherHobby

Doh! I will update the zip file later. I have to head out for the day!


----------



## O2surplus

AnotherHobby said:


> Doh! I will update the zip file later. I have to head out for the day!


No worries- I downloaded it from the Internet and put it in my Arduino library folder. Now your Code compiles for me perfectly! All I have left to do is- figure out how to load the image files to the SD card and I should be in business.

Thanks again.


----------



## AnotherHobby

Cool! Ill be out of town through Monday, so if you hit any hiccups, I might not be able to dig in until I get back.


----------



## STReNT

Borrowing a bit of inspiration from you and HunterX to get my controller project back off the ground again. I had started using a Netduino as I'm a .NET guy in the past, but ran in to too many problems and had abandoned the project.

Switched to an Arduino now and upgraded from a 16x2 LCD to a TFT after I saw yours

Here's what my interface looks like so far
























































I'm trying to use as few bitmaps as possible so that it can be drawn dynamically with the UTFT geometry methods. This means the screens load up super fast as there's no load or processing time for the bitmaps.


----------



## AnotherHobby

STReNT said:


> Borrowing a bit of inspiration from you and HunterX to get my controller project back off the ground again. I had started using a Netduino as I'm a .NET guy in the past, but ran in to too many problems and had abandoned the project.
> 
> 
> 
> Switched to an Arduino now and upgraded from a 16x2 LCD to a TFT after I saw yours
> 
> 
> 
> Here's what my interface looks like so far [images removed for smaller quote]
> 
> 
> 
> I'm trying to use as few bitmaps as possible so that it can be drawn dynamically with the UTFT geometry methods. This means the screens load up super fast as there's no load or processing time for the bitmaps.




That looks fantastic — great job! Less bitmaps will certainly load way faster. Even the ones you do have are small, so I'm guessing this is a snappy interface. It's very different than mine, but also similar in a lot of ways. I like what you've done. Super functional and very attractive. I'm impressed! roud:

Is the code written yet? That'll be a lot of graphics code.


----------



## Muttley

Hi AH,

Congratulations for your project - it's awesome.
Thank you very much for sharing your work with the community.
I have been looking for the best project to replicate. I saw the Stilo but yours sets the standard 

Cheers,

Fernando


----------



## NatroN

cool stuff both of you.

I've ordered a mega, tft, shields, rtc, ph sensor and a 16channel relay board.. ..many stuff and I'll take a dive into your code once the shipping is here.

I'm very excited to see what is possible and thank you for sharing. I think I'll have to borrow some code. 

regards 
mathias


----------



## Muttley

Ufffff .... Now I realize the amount of work that I have in front of me...
I just want to use the light control and measure water temperature...
Let's see if I am able to clean all the rest


----------



## AnotherHobby

Muttley said:


> Ufffff .... Now I realize the amount of work that I have in front of me...
> I just want to use the light control and measure water temperature...
> Let's see if I am able to clean all the rest


If that's all you need, I'd just build a simple controller. It's _way_ less work. I have a project I built (still have the code) for light ramping, dosing pumps, and a temp with a simple 2 line LCD screen. It would also cost way less too. Without the dosing pumps the wiring is even easier.

Here's what it looks like. The -269 is supposed to show how many long until the next light ramp. This was before my code was done so the formatting wasn't dialed in yet.


----------



## Muttley

Hi AH,

Thank you for your post. Yes, you are absolutely right, I could use a much easier project.
But, I have a problem: I am totally in love with your TFT screen and I already have all the material  Just missing the shield - it will arrive in one week.
I will see what I can do 

I already have the LED lights working via PWM MeanWell drivers, but still connect to the old fashion timers. I really want to have a similar display to yours with very basic functions.

Kind Regards,

Fernando


----------



## AnotherHobby

Cool beans! Well, roll up your sleeves and dig in. I started knowing it would take me a long time, and looked forward to having a fun long term project to work on. If you go in with that attitude, I think you'll really enjoy it.

All of the dimming in this project should work perfectly with PWM. I put all of the code in there for it. It defaults to IR, but when you get that far I'll let you know how to change it to use that part of the code.


----------



## Muttley

I am almost sure that I will request your help....

Thank you !!!


----------



## HunterX

That is a very sexy interface! 



STReNT said:


> Borrowing a bit of inspiration from you and HunterX to get my controller project back off the ground again. I had started using a Netduino as I'm a .NET guy in the past, but ran in to too many problems and had abandoned the project.
> 
> Switched to an Arduino now and upgraded from a 16x2 LCD to a TFT after I saw yours
> 
> Here's what my interface looks like so far
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> I'm trying to use as few bitmaps as possible so that it can be drawn dynamically with the UTFT geometry methods. This means the screens load up super fast as there's no load or processing time for the bitmaps.


----------



## O2surplus

Hey AH-

When you have the time can you describe any prerequisites required to loading the image files to the SD card. I've managed to load the main iAqua sketch to the Mega and it boots up showing most of the Home screen without the buttons. I copied your "SD card images" file to an SD card but if the card is installed in the reader at boot up- I get "snow". I noticed when reading up on the tinyFAT library that it supports FAT16 formatted SD cards. MY SD card is formatted to FAT32 and my PC doesn't provide the FAT16 "Re-Format" option. Any help would be greatly appreciated.


----------



## Fernando Garcia

Hi!

AnotherHobby, congratulations by your job.

I've tested your code in my custom board, looks very fine.










Best regards.


----------



## Muttley

Hi O2,
I'm running Windows 7 and to format the SD Card I have two options: FAT32 (doesn't work) and FAT (It works).

Does this help ?


----------



## jeffkrol

Muttley said:


> Hi O2,
> I'm running Windows 7 and to format the SD Card I have two options: FAT32 (doesn't work) and FAT (It works).
> 
> Does this help ?


Just to throw this in there ..Choices I get are 
Fat32
NTFS
exFat.. whatever that is...???
Win7 64bit..

There is no plain FAT option AFAICT

As a possible "workaround" some older digital cameras use plain FAt in small cards. Format it in camera.. Copy files to it.. Pretty sure you need an under 2GB card as well..


----------



## Muttley

hum.... Mine is Windows 7 32 bit.... I have never tried the 64 bit version. Could that be the issue ?


----------



## Fernando Garcia

I had problem to copy files directly from unzip folder to SD card. I tried in 2 computers with Win 8. The solution was copy files to desktop and then to SD card.

I don't understand what happened.


----------



## AnotherHobby

O2surplus said:


> Hey AH-
> 
> When you have the time can you describe any prerequisites required to loading the image files to the SD card. I've managed to load the main iAqua sketch to the Mega and it boots up showing most of the Home screen without the buttons. I copied your "SD card images" file to an SD card but if the card is installed in the reader at boot up- I get "snow". I noticed when reading up on the tinyFAT library that it supports FAT16 formatted SD cards. MY SD card is formatted to FAT32 and my PC doesn't provide the FAT16 "Re-Format" option. Any help would be greatly appreciated.



Look for SD card formatting tools. There are free ones that will do FAT 16. It will not work with a card over 2GB with any format other than FAT 16. 



Fernando Garcia said:


> Hi!
> 
> 
> 
> AnotherHobby, congratulations by your job.
> 
> 
> 
> I've tested your code in my custom board, looks very fine.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Best regards.



Awesome! Ha! Fun to see my project running for somebody else!


----------



## kman

... and all I can do is drool, while my DealExtreme order slowly inches my way from China. Two more weeks of hell, I'm telling you! LOL

O2surplus: A quick Google turned up this link: http://techtalk.n3tlab.com/2010/01/windows-7-and-xp-format-fat16-flash.html

Haven't tried it myself, but it should be pretty straightforward.

AnotherHobby, how much space does your graphics library (or anything else) need on the SD card? I know I have a bunch of small ones (2gb or less) from old digital cameras that are probably already already FAT16, but I definitely have some 512mb cards I could repurpose, if they're big enough.


----------



## AnotherHobby

I'm using a 512 MB one. The graphics only use 1.1 MB.


----------



## jeffkrol

AnotherHobby said:


> I'm using a 512 MB one. The graphics only use 1.1 MB.


On a 511mb or less card win has to default to FAT 16..
or refuse to format it.. 
http://technet.microsoft.com/en-us/library/cc940351.aspx


----------



## kman

Old 512 mb memory cards from old digital cameras are usually FAT16 by default anyway. No reformatting needed.


----------



## theknight

*5V Regulator*

AH,

Just want to make sure I am clear on your 5 volt fix. Instead of feeding 12 volts to the Vin, you are feeding your 5 volts directly to the 5V pin on the Mega. Is this correct.

Thanks


----------



## AnotherHobby

theknight said:


> AH,
> 
> Just want to make sure I am clear on your 5 volt fix. Instead of feeding 12 volts to the Vin, you are feeding your 5 volts directly to the 5V pin on the Mega. Is this correct.
> 
> Thanks


Yes. I need to update the diagram, but I'm using a 7805 regulator with capacitors on both the input and output to keep the voltage smooth. Lots if info on google on how to do it proper. You don't want to let the built on Mega regulator do the work. It overheats with 12v input.


----------



## theknight

AnotherHobby said:


> Yes. I need to update the diagram, but I'm using a 7805 regulator with capacitors on both the input and output to keep the voltage smooth. Lots if info on google on how to do it proper. You don't want to let the built on Mega regulator do the work. It overheats with 12v input.


Thanks, didn't want to mess that up. Hopefully will be up and running this weekend. Guess they don't call it Labor Day weekend for nothing.


----------



## STReNT

AnotherHobby said:


> That looks fantastic — great job! Less bitmaps will certainly load way faster. Even the ones you do have are small, so I'm guessing this is a snappy interface. It's very different than mine, but also similar in a lot of ways. I like what you've done. Super functional and very attractive. I'm impressed! roud:
> 
> Is the code written yet? That'll be a lot of graphics code.



Thanks!

I've written the code for the home screen and it's working well. I've actually done it without requiring any bitmaps at all. The Icons are in a custom font array.

I've also written it so there's functions to draw the elements eg.



Code:


void drawSmallRelayStatus(int state, char icon, int x, int y)
void drawLargeButton(int state, char icon, char[8] text, int x, int y)
void drawDoseChart(char* title, int vol, int remaining, int x, int y)

The slowest loading part is drawing the dosage status charts - but it still loads reasonably quickly.

The good part about not using any bitmaps at all is that I've also written it so that it can be themed (well, you can change the color scheme)



Code:


// Color Scheme
const unsigned int THEME_BACK[] = {240, 243, 244};

const unsigned int THEME_HEAD_BACK[] = {17, 153, 196};
const unsigned int THEME_HEAD_FORE[] = {255, 255, 255};

const unsigned int THEME_SUBHEAD_BACK[] = {246, 248, 248};
const unsigned int THEME_SUBHEAD_FORE[] = {88, 102, 100};

const unsigned int THEME_PRIMARY_BACK[] = {255, 255, 255};
const unsigned int THEME_PRIMARY_FORE[] = {88, 102, 100};

const unsigned int THEME_ON[] = {35, 175, 68};
const unsigned int THEME_OFF[] = {255, 255, 255};

const unsigned int THEME_BTN_LIGHT[] = {255, 255, 255};
const unsigned int THEME_BTN_DARK[] = {39, 194, 76};
const unsigned int THEME_BTN_DARK_A[] = {35, 175, 68};

const unsigned int THEME_TAB_LIGHT_FORE[] = {88, 102, 100};
const unsigned int THEME_TAB_LIGHT_BACK[] = {255, 255, 255};
const unsigned int THEME_TAB_DARK_FORE[] = {88, 102, 100};
const unsigned int THEME_TAB_DARK_BACK[] = {237, 241, 242};

const unsigned int THEME_MACRO[] = {250, 215, 51};
const unsigned int THEME_MICRO[] = {111, 98, 184};
const unsigned int THEME_GLUT[] = {35, 183, 229};

I'll post the code up when it's a little more complete


----------



## O2surplus

Spent some time this weekend working on a custom shield for the iAqua Controller. It's no where near completed yet, as I still have quite a few components to add and traces to connect. Making the 40 pin header for the touch screen has been the biggest nightmare so far. I still have to figure out the connections from the SD card reader to the Mega and then I'll have that part of the project beat. Everything else will be easy. Here's a photo of what I have so far-


----------



## mistergreen

@STReNT
If you want to save memory, you might want to define those arrays as bytes instead of ints.


----------



## theknight

*Help*

I need some expert help, I'm ready to start testing but I am running into problems when I try to compile. I keep getting an error that refers to the font files and undefined references.

Any help would be greatly appreciated, I'm so close.

Thanks


----------



## STReNT

mistergreen said:


> @STReNT
> If you want to save memory, you might want to define those arrays as bytes instead of ints.


Thanks mistergreen - one step ahead of you 

It now looks something like this



Code:


struct RGB {
  byte r;
  byte g;
  byte b;
};
typedef struct RGB Color;

const Color THEME_BACK = {240, 243, 244};

const Color THEME_HEAD_BACK = {17, 153, 196};
const Color THEME_HEAD_FORE = {255, 255, 255};

const Color THEME_SUBHEAD_BACK = {246, 248, 248};
const Color THEME_SUBHEAD_FORE = {88, 102, 100};


----------



## AnotherHobby

theknight said:


> I need some expert help, I'm ready to start testing but I am running into problems when I try to compile. I keep getting an error that refers to the font files and undefined references.
> 
> Any help would be greatly appreciated, I'm so close.
> 
> Thanks


What exactly are the errors?


----------



## O2surplus

theknight said:


> I need some expert help, I'm ready to start testing but I am running into problems when I try to compile. I keep getting an error that refers to the font files and undefined references.
> 
> Any help would be greatly appreciated, I'm so close.
> 
> Thanks


I ran into that too! Take the entire iAqua file after unzipping it and toss it into your Arduino sketch folder. The Arduino IDE will then recognize the font files and load them into tabs behind the iAqua main sketch. If problems persist when compiling, make sure you have all the libraries called for in the main sketch. AH forgot to include the "tinyFAT" library with the rest of the libraries, so you may have to down load it yourself. I'd post it, but it's too large to attach, per the Forum.


----------



## theknight

Thanks, I'll give that a try. I saw your earlier message about the tinyFat.h and had that taken care of and thought I was good to go.


----------



## AnotherHobby

O2surplus is correct. The files iAqua.ino, arial_bold.c, and Sinclair_S.c all have to be at the root level of the sketch folder. I'm guessing he's correct that this is your issue.


----------



## theknight

Yes he was 100% correct, thanks O2,now I am fighting the FAT16 issue, just get snow until I pull the SD. Then I get some relays turning on and mirror image writing on the screen. Going to find a program to reformat and see what happens.


----------



## O2surplus

theknight said:


> Yes he was 100% correct, thanks O2,now I am fighting the FAT16 issue, just get snow until I pull the SD. Then I get some relays turning on and mirror image writing on the screen. Going to find a program to reformat and see what happens.


I'm waiting for some 1GB SD cards to arrive in the mail, but that's the least of my problems. I ordered the Sainsmart Mega with the Touch screen and shield, but it turns out that it's not compatible with the iAqua code. It looks like Sainsmart's shield uses pins to drive the touch LCD that are called out for different purposes in the iAqua code. No worries though, I'm designing a shield to correct the problem. It's just gonna be awhile before I can get it done. Par for the course I'm guessing- LOL:red_mouth


----------



## theknight

AnotherHobby said:


> O2surplus is correct. The files iAqua.ino, arial_bold.c, and Sinclair_S.c all have to be at the root level of the sketch folder. I'm guessing he's correct that this is your issue.





O2surplus said:


> I'm waiting for some 1GB SD cards to arrive in the mail, but that's the least of my problems. I ordered the Sainsmart Mega with the Touch screen and shield, but it turns out that it's not compatible with the iAqua code. It looks like Sainsmart's shield uses pins to drive the touch LCD that are called out for different purposes in the iAqua code. No worries though, I'm designing a shield to correct the problem. It's just gonna be awhile before I can get it done. Par for the course I'm guessing- LOL:red_mouth


Is that why I am getting nothing but snow on start-up. If I pull the SD I get part of the header and some other things, but it is mirror image. Everything I read says if I format the card on window just call for FAT I will get FAT16. 

I am a little bummed, I thought I would be running, I also have the Sainsmart shield, guess it is time for the electricfreak or whatever. Thanks again for your help.


----------



## STReNT

O2surplus said:


> I'm waiting for some 1GB SD cards to arrive in the mail, but that's the least of my problems. I ordered the Sainsmart Mega with the Touch screen and shield, but it turns out that it's not compatible with the iAqua code. It looks like Sainsmart's shield uses pins to drive the touch LCD that are called out for different purposes in the iAqua code. No worries though, I'm designing a shield to correct the problem. It's just gonna be awhile before I can get it done. Par for the course I'm guessing- LOL:red_mouth


Change the pins to the following



Code:


UTFT myGLCD(ITDB32S, 38, 39, 40, 41);
UTouch myTouch(6, 5, 4, 3, 2);


----------



## kman

I had a realization today. I'm DYING to get ahold of my parts, because I really really want to start to put together an Arduino- based sprinkler controller, now that I have realized how similar the two situations are. I'm checking out OpenSprinkler but while it's super similar, the idea of putting a full-fledged Arduino with an iAqua-style touchscreen (for the gardener guy) behind it is a whole different thing.


----------



## AnotherHobby

O2surplus said:


> I'm waiting for some 1GB SD cards to arrive in the mail, but that's the least of my problems. I ordered the Sainsmart Mega with the Touch screen and shield, but it turns out that it's not compatible with the iAqua code. It looks like Sainsmart's shield uses pins to drive the touch LCD that are called out for different purposes in the iAqua code. No worries though, I'm designing a shield to correct the problem. It's just gonna be awhile before I can get it done. Par for the course I'm guessing- LOL:red_mouth


Yes, their choice of pins, and my remapping of them, was documented in the thread. I didn't like where they put the pins, so I moved them. I just didn't want to give up all those PWM pins for touch, in the event that I decided to add more stuff to it in the future that needs PWM. Also, the auto-dimming backlight on the LCD won't work without the transistor modification I did since the backlight is hardwired to directly power on the ElecFreaks board.

Here is from post 104 on page 7:



AnotherHobby said:


> The ElecFreaks TFT shield I got uses pins 2-6 for the touch control. I don't think the other pins (0, 1, 7) are actually used, but I digress. That's a dumb place to put those pins since they don't require PWM or anything special, and only a limited number of pins have PWM. If you look earlier in my thread, I remapped my TFT shield to move the touch pins to 42-46 instead. I wanted to save my PWM pins for future use.
> 
> They also hardwired the backlight pin to straight voltage, so you can't dim it. That's stupid too. That screen is super bright. Not sure how many people would want a super bright screen on 24x7 next to their aquarium. Some may not care, but I suspect many would. I had to remap that pin as well so I could do auto-dimming with my ambient light sensor (which is very easy to implement).
> 
> The TFT shield definitely saved me a lot of time and made my project more compact, but I don't think it was very intelligently laid out for people that are going to use a lot of pins on a big project like this. Here is why mine looks like now, except that I had to move the resistor from pin 13 over to pin 8 in the upper left of the pic.



And more from post 113 on page 8.



AnotherHobby said:


> The next two pics are of the ElecFreaks board. The last pic I posted of this board showed the resistor going to PWM pin 13, but I moved it to 8. I just wanted to be clear in case anybody decides to do this. Also, I cut off pin 47 on the side that plugs into the Arduino because it's not needed and I'm using pin 47 for the temp sensor. I just didn't want any interference.





theknight said:


> Is that why I am getting nothing but snow on start-up. If I pull the SD I get part of the header and some other things, but it is mirror image. Everything I read says if I format the card on window just call for FAT I will get FAT16.
> 
> I am a little bummed, I thought I would be running, I also have the Sainsmart shield, guess it is time for the electricfreak or whatever. Thanks again for your help.


I don't think so. The pins I remapped are only for the touch control. When I tested it unmodified, it worked fine with my code except the touch part. 



STReNT said:


> Change the pins to the following
> 
> 
> 
> Code:
> 
> 
> UTFT myGLCD(ITDB32S, 38, 39, 40, 41);
> UTouch myTouch(6, 5, 4, 3, 2);


This will work just fine, as long as you are driving your lights with IR and not PWM. If you are using PWM, then you'll need to look at the PWM pins I had set for that.


----------



## theknight

STReNT said:


> Change the pins to the following
> 
> 
> 
> Code:
> 
> 
> UTFT myGLCD(ITDB32S, 38, 39, 40, 41);
> UTouch myTouch(6, 5, 4, 3, 2);


Thanks STReNT I have done that.




AnotherHobby said:


> Yes, their choice of pins, and my remapping of them, was documented in the thread. I didn't like where they put the pins, so I moved them. I just didn't want to give up all those PWM pins for touch, in the event that I decided to add more stuff to it in the future that needs PWM. Also, the auto-dimming backlight on the LCD won't work without the transistor modification I did since the backlight is hardwired to directly power on the ElecFreaks board.
> 
> Here is from post 104 on page 7:
> 
> 
> 
> 
> And more from post 113 on page 8.
> 
> 
> 
> 
> 
> 
> I don't think so. The pins I remapped are only for the touch control. When I tested it unmodified, it worked fine with my code except the touch part.
> 
> Yes, my problem was the formatting on the SD I was using, I found an old card copied the files and now the graphics load. The home screen comes up and I know my RTC and temperature are working, but I have no touch ability. The problem may be my screen, I've noticed a separation at the bottom of the screen that has even caused a slight difference in color on the lower half of the bottom buttons which should be touch.
> 
> unless the Sainsmart uses different touch I am at a loss. The good news is I have another screen coming in from DX that is in transit. Let me know your thoughts.
> 
> Thanks for all your help
> 
> This will work just fine, as long as you are driving your lights with IR and not PWM. If you are using PWM, then you'll need to look at the PWM pins I had set for that.


----------



## AnotherHobby

theknight said:


> Yes, my problem was the formatting on the SD I was using, I found an old card copied the files and now the graphics load. The home screen comes up and I know my RTC and temperature are working, but I have no touch ability. The problem may be my screen, I've noticed a separation at the bottom of the screen that has even caused a slight difference in color on the lower half of the bottom buttons which should be touch.
> 
> unless the Sainsmart uses different touch I am at a loss. The good news is I have another screen coming in from DX that is in transit. Let me know your thoughts.
> 
> Thanks for all your help


Check out this thread: http://forum.arduino.cc/index.php?topic=198188.msg1462294#msg1462294

I stumbled across this when I was doing research for this project. The third post down from the author of the UTFT libraries: _"The problems described here are specific to the crappy SainSmart products which ARE NOT, nor will they ever be, supported by any of my libraries!"_

So, I don't have an answer for you, other than the author of many of the libraries I'm using hates SainSmart, and he doesn't build support into his libraries for their stuff. I don't know which of their products will work or don't work, or if you'll have to do hacking to make them work. I just knew to make sure I stuck to things that his documentation said was supported (which the ElecFreaks board was).


----------



## Ultimbow

I order a saintsmart uno starter kit the board so far work good but half there beginer code tutorial dosnt work. I get my code from other people then work fine i have a mega with 3.2 touch screen comming from them i hope i dint waste my money.... aparently with the new board (uno r3 and mega r3) they have fix many problem the again i can confirm exept from what i read


----------



## theknight

AnotherHobby said:


> Check out this thread: http://forum.arduino.cc/index.php?topic=198188.msg1462294#msg1462294
> 
> I stumbled across this when I was doing research for this project. The third post down from the author of the UTFT libraries: _"The problems described here are specific to the crappy SainSmart products which ARE NOT, nor will they ever be, supported by any of my libraries!"_
> 
> So, I don't have an answer for you, other than the author of many of the libraries I'm using hates SainSmart, and he doesn't build support into his libraries for their stuff. I don't know which of their products will work or don't work, or if you'll have to do hacking to make them work. I just knew to make sure I stuck to things that his documentation said was supported (which the ElecFreaks board was).


Thanks, I read through the post and Sainsmart forum, all indications I see is a problem with the compatibility of the SainsMart TFT. Hopefully my ElecFreak shield and TFT from DX show up soon.


----------



## Fissure

Wish I saw this before ordering the bluefish controller. Amazing work! 8 thumbs up from Sweden.


----------



## STReNT

For the brave - my code is now available here: https://github.com/TrentScholl/aquarium-wise-controller

It is very very much work in progress, there's no documentation and it isn't as feature fledged as AnotherHobby's. So far only Relays, Temperature & pH work but none of the settings screens work yet.

It's can be built with Ino or VisualMicro

I'll create my own build thread soon with progress so I stop hijacking this AnotherHobby's


----------



## AnotherHobby

It's been almost 2 weeks with iAqua running my tank. No hiccups, and I'm loving it!

I've noticed 2 areas that need refinement. I think the temp control needs a little smoothing and some better thought. It works how I programmed it, but I want to put a little more thought into it. I'll have a better explanation once I think about it more. 

I noticed 2 small bugs with the fish feeding. One is that when it first goes to the fish feeding screen, it doesn't show the correct time remaining for about a second or two (pretty minor detail). Also, if I hit restart before the feeding cycle ends, it doesn't seem to remember the previous power settings. Both easy fixes, I just have to take the time to get in there.

I'm really liking how I did the schedules so far. I was on vacation and got back on a Monday, which means I would be a day late on my water change. I edited it before I left so it didn't dose on Monday morning. It's a simple thing that probably wouldn't have made a difference, but I thought it was cool to be able to do it so easily. With my other controller I would have been editing code to do that.

Now that I have my e-series hooked up, I only have 1 light power outlet. Definitely a limitation of my code and interface in that I can't rename it easily. I think that STReNT's GUI would make it much easier to allow for some dynamic naming and such. I love the color and look of my interface, but STReNT's is probably easier to maintain and modify.


----------



## kman

If you decide to do serious monkeying (hopefully nothing that changes the parts list too much!), an option for a third dosing pump (for Glut or whatever) would be cool to add. 

If not, I don't care, because I love it as-is!

Got one nice package from DX today, the power block and such. Still waiting for the main Arduino itself, though. :/ So close!!!


----------



## STReNT

Tried to post my code here a few days ago but my post got moderated and hasn't been approved - hopefully this one comes through

I've put it up on GitHub here: https://github.com/TrentScholl/aquarium-wise-controller

It's very very much incomplete, but feel free to take whatever you want from it


----------



## AnotherHobby

kman said:


> If you decide to do serious monkeying (hopefully nothing that changes the parts list too much!), an option for a third dosing pump (for Glut or whatever) would be cool to add.
> 
> If not, I don't care, because I love it as-is!
> 
> Got one nice package from DX today, the power block and such. Still waiting for the main Arduino itself, though. :/ So close!!!


You'll be digging in deep in no time! The wait for cheap Chinese parts can be painful. Adding a 3rd pump wouldn't be too hard, but it'd definitely require a bit of graphics and touch code redo. I don't have any need since I do CO2, but feel free to dig in. As I make any code changes going forward, I'll try to document what I've changed, so that if people divert from the code base to do their own things, it'll be easier to implement anything new.



STReNT said:


> Tried to post my code here a few days ago but my post got moderated and hasn't been approved - hopefully this one comes through
> 
> I've put it up on GitHub here: https://github.com/TrentScholl/aquarium-wise-controller
> 
> It's very very much incomplete, but feel free to take whatever you want from it


Thanks! It'll be a bit before I have a chance to dig into it due to other projects, but I can't wait to check it out.


----------



## kman

AnotherHobby said:


> You'll be digging in deep in no time! The wait for cheap Chinese parts can be painful. Adding a 3rd pump wouldn't be too hard, but it'd definitely require a bit of graphics and touch code redo. I don't have any need since I do CO2, but feel free to dig in. As I make any code changes going forward, I'll try to document what I've changed, so that if people divert from the code base to do their own things, it'll be easier to implement anything new.


Lots of people use Glut/Excel for algae control, moreso than for actually helping plants absorb carbon. I already have pressurized co2, but as long as I'm still battling algae, I'm not going to give up Excel!


----------



## mistergreen

kman said:


> Lots of people use Glut/Excel for algae control, moreso than for actually helping plants absorb carbon. I already have pressurized co2, but as long as I'm still battling algae, I'm not going to give up Excel!


You can wait for my wireless web controller to come out. It's very flexible but not as pretty as the iAqua.

I can see 3 pumps for ferts; nitrogen+K, phosphate+secondary macros, micro.

Oh, Anotherhobby,
If the iAqua shuts off for some reason, does all the preferences go away? I was thinking of some backup plan by saving the preferences on the SD. I was thinking of eprom but from what I've read, if you write/delete to it too often, it'll degrade.


----------



## AnotherHobby

mistergreen said:


> You can wait for my wireless web controller to come out. It's very flexible but not as pretty as the iAqua.
> 
> I can see 3 pumps for ferts; nitrogen+K, phosphate+secondary macros, micro.


How far out is your wireless web controller? I'm excited to see it!



> Oh, Anotherhobby,
> If the iAqua shuts off for some reason, does all the preferences go away? I was thinking of some backup plan by saving the preferences on the SD. I was thinking of eprom but from what I've read, if you write/delete to it too often, it'll degrade.


All settings are already stored in EEPROM. As you change settings, they are written immediately to EEPROM so that you never lose them. Furthermore, if you do reboot it, it does a "smart startup" and turns everything on or off and sets the lighting based on what time it is and how your schedules are set up.

I was thinking of making an import/export function to dump the EEPROM settings to the SD card as a backup/restore function, but I don't know how necessary that is.


----------



## mistergreen

AnotherHobby said:


> How far out is your wireless web controller? I'm excited to see it!


It's out there. It uses class inheritance & polymorphism for the devices. The code is complicated so to make it flexible but ultimately, I'm not sure if it's worth the trouble. The user basically won't need to code the arduino. They'd just plugin the device and set the settings via the browser.

But the problem is when they plugin a device that doesn't use a protocol that it understands like I2C, you'd have to add a custom library into the code.


----------



## O2surplus

Got all the parts needed for this project in the mail over the last few days, so I'm ready to start playing around now. I've got the controller up and running and everything looks good so far. I'm going to put it all together, test it for proper function, and then continue working on a dedicated shield design for this thing. This should be fun!


----------



## kman

O2surplus said:


> Got all the parts needed for this project in the mail over the last few days, so I'm ready to start playing around now. I've got the controller up and running and everything looks good so far. I'm going to put it all together, test it for proper function, and then continue working on a dedicated shield design for this thing. This should be fun!


I'm looking forward to seeing your shield! Hopefully in time to use for my own build.


----------



## theknight

Seeing as I am on hold while I wait for my new touch screen and shield to make it from China, I have been fooling around with my Atlas-Scientific PH Stamp. I got a temperature and PH sketch working and in exploring the web found out that the V5.0 that I bought last month has been replaced with a new EZO version that will work with I2C and seems a lot friendlier. No need for serialsoftware. So I would advise anyone contemplating the Atlas Scientific PH stamp to make sure they get the new version. I spoke with TS and they said they are in the process of switching all of their stamps over, the ORP comes out Monday.

As a side note, I found that my PH was really 6.8 not the 6.6 I thought it was. So now I have proper CO2 levels. This alone made it worth while, even if I never figure out how to incorporate into iAqua


----------



## kman

Hey quick question: Is it possible to set this up for a siesta-style photo period? (as in, assuming 8 hrs total photo period, splitting that into two 4 hour segments instead)


----------



## NatroN

kman said:


> Hey quick question: Is it possible to set this up for a siesta-style photo period? (as in, assuming 8 hrs total photo period, splitting that into two 4 hour segments instead)



I plan to do the same for me here. Should be pretty easy and even without any coding.

change the HI Sun image to another (let's say Clouds to simulate a cloudy mid day to turn off the lights) 

then the day would be:

night to normal
normal to clouds (lights off or dimmed)
clouds to normal
normal to night


----------



## AnotherHobby

As it stands, there are 6 ramp timers tied to the M1-M4 buttons on the Current Sat+ remote. Think of them this way:

M4 > M3
M3 > M2
M2 > M1
M1 > M2
M2 > M3
M3 > M4

In the GUI, they relate as such:

M1 = High Sun
M2 = Mid Sun
M3 = Low Sun
M4 = Moon

The end result is: Moon > Low > Mid > High > Mid > Low > Moon

Any ramp can be as long or as short as you want. If you wanted a split photo period, you could swap mid sun with high sun. That would give you this progression:

Moon > Low > High > Mid > High > Low > Moon

To make it less confusing, I'd probably make changes to the GUI icons for that if I was going to do it. This way it'll show your progressions correctly on the home screen. If you don't want to make those changes, just remember that the orange sun is actually your daylight high sun.

It'd be nice to make it all customizable where you could pick all of your ramps more dynamically, but that's a ton of code, and not that easy to pull off. I think it'd be easier to do a project like that with STReNT's interface though.


----------



## kman

Good points, guys. I thought that might be the case but wanted to be sure. While I'd prefer a "normal" 8-hour light cycle, this might be something I need to look into if I'm still battling algae by the time I'm ready to build this sucker.

But hopefully the massive tank cleaning and h2o2 soak my main branch got this weekend will have done the trick, and I won't need to change anything.


----------



## O2surplus

Hey AH!

Why'd you choose to use an 8 position relay board that requires a 12V signal instead of an Arduino friendly 5V? Am I missing something here? You've got the Mega programmed to send a positive signal to the relay board- correct?


----------



## AnotherHobby

O2surplus said:


> Hey AH!
> 
> Why'd you choose to use an 8 position relay board that requires a 12V signal instead of an Arduino friendly 5V? Am I missing something here? You've got the Mega programmed to send a positive signal to the relay board- correct?


Not that it matters a ton, but the 12v power supply is more powerful (3A) than the 5v regulator, so it seemed smarter to use that instead of the regulator. 5v will also work perfectly fine.


----------



## O2surplus

AnotherHobby said:


> Not that it matters a ton, but the 12v power supply is more powerful (3A) than the 5v regulator, so it seemed smarter to use that instead of the regulator. 5v will also work perfectly fine.


Ah! I follow your logic. I'm guessing 5V is "high" enough to trigger the optocoupler, which in turn triggers the relay's coil, so it ultimately doesn't matter whether we use 12V or 5V. 
Thanks for the clarification.:red_mouth

I'm going back to working on my shield now. Just added a Meanwell SCW05C-12 to the design. It's addition will allow the controller to be safely powered from sources up to 75VDC.


----------



## AnotherHobby

O2surplus said:


> Ah! I follow your logic. I'm guessing 5V is "high" enough to trigger the optocoupler, which in turn triggers the relay's coil, so it ultimately doesn't matter whether we use 12V or 5V.
> Thanks for the clarification.:red_mouth
> 
> I'm going back to working on my shield now. Just added a Meanwell SCW05C-12 to the design. It's addition will allow the controller to be safely powered from sources up to 75VDC.


The relay's on the the board I got are 12v relays, and so the board does require 12v power. The arduino dishes out the 5v for the trigger.


----------



## O2surplus

AnotherHobby said:


> The relay's on the the board I got are 12v relays, and so the board does require 12v power. The arduino dishes out the 5v for the trigger.


That's what I meant to say. The relay coils operate at 12V, but the optocouplers that control them only need a 5V signal from the Arduino to work properly.


----------



## NatroN

Hi,

do you still have the JPG (or PNG) files before you converted them to .raw?

As I have different hardware and even some different needs I'll code the complete stuff by myself - but I love your creative work and if you don't mind I'd be using some of your graphics and designs.

This would be so much easier if I'd know which raw is which picture. The names are not always easy to understand. 

regards and thanks


----------



## AnotherHobby

NatroN said:


> Hi,
> 
> do you still have the JPG (or PNG) files before you converted them to .raw?
> 
> As I have different hardware and even some different needs I'll code the complete stuff by myself - but I love your creative work and if you don't mind I'd be using some of your graphics and designs.
> 
> This would be so much easier if I'd know which raw is which picture. The names are not always easy to understand.
> 
> regards and thanks


Ah, yeah, I suppose it'd be hard to figure out which files are which. I have saved all of them for the same reason, I just never thought to share them. The PNG files are named the same. I'll link these in the first post as well since I think it might be helpful to others who want to customize it more. Just remember when customizing that the file names cannot exceed 8.3 characters or they won't read.

All of the PNG files are posted in the first thread for download.


----------



## NatroN

thank you for the quick response! These files are very helpful! 

I like your project very much.. not only 'cause it's a cool idea with even better execution. I like it even more because you share it in that way that everybody can use and customize it .


----------



## Ultimbow

Hi would like to know if it would be possible to have the code for the c02 pressure that would work with a relay on an uno with an regular 1602lcd with schematic and list of material pls. I am just starting learning arduino but i had i major co2 dump on end of bottle not to long ago and almost lost all my fish. I would like to avoid that in the future until i can do my own programing and incorporate it with the rest of my setup 

Thanks


----------



## AnotherHobby

NatroN said:


> thank you for the quick response! These files are very helpful!
> 
> I like your project very much.. not only 'cause it's a cool idea with even better execution. I like it even more because you share it in that way that everybody can use and customize it .


Thanks! I tried to make it as easy as something as complicated as this can be. No point in sharing it if people can't use it.



Ultimbow said:


> Hi would like to know if it would be possible to have the code for the c02 pressure that would work with a relay on an uno with an regular 1602lcd with schematic and list of material pls. I am just starting learning arduino but i had i major co2 dump on end of bottle not to long ago and almost lost all my fish. I would like to avoid that in the future until i can do my own programing and incorporate it with the rest of my setup
> 
> Thanks


I highly recommend getting the MPX5700GP over the MPX5700AP if you haven't bought yet. The AP requires you to correct for atmospheric pressure, the GP does not. The code below works for both, as long as you take a baseline reading on the AP, the two sensors read identical. All this code does is give you a reading so you can play around with it. I have no other code for it thus far. If you want relays and thresholds, you'll need to write that yourself at this point. I won't dig further into this sensor for a while, as I have other projects I'm working on.



Code:


// sketch to read MPX5700AP or MPX5700GP pressure sensor
// written by Dan Cunningham
// released to public for free use

#include <Wire.h>

int pressureSensor = A0; // Set MAP sensor input on Analog port 0

// ATM is your average barometric pressure in HPA. We will need to subtract this later.
// To mesaure it, this is the value of the pressure variable below when nothing is attached to the sensor.

//float atm = 101.1174; // supposedly what ATM should be for where I live
//float atm = 156.5593; // this is what my sensor read ATM to be and the value I used when I had MPX5700AP
float atm = 0; // using 0 for this since I now have a MPX5700GP

void setup(){
  
  Serial.begin(9600); // Open serial port
}

void loop()
{
  // MEASUREMENT
  int pressureSensorRaw = analogRead(pressureSensor); //Reads the sensor raw value on analog port 0
  float pressureSensorVoltage = pressureSensorRaw * (5.0 / 1023.0);  // convert the raw reading to voltage
  
  // MATH
  // pressure raises linear from 0 to 700 kPa, over 0.2 to 4.7 volts, so we need to map those values correctly
  // first add 0.2 volts to raise the linear floor, then divide 700 kPa by the range of 4.5 volts (4.7 - .2)
  // multiply the two and we get how many kPa the sensor read
  float kPa = (pressureSensorVoltage + 0.2) * 700.0/4.5;
  
  // next we have to remove atmospheric pressure from the reading
  kPa = kPa - atm;
  
  // OUTPUT TO SERIAL
  
  Serial.print("RAW:\t");
  Serial.println(pressureSensorRaw); 

  Serial.print("Volt:\t");
  Serial.println(pressureSensorVoltage); 

  Serial.print("KPa:\t");
  Serial.println(kPa,  3); 
  Serial.print("PSI:\t");
  Serial.println(kPa*0.145037738, 3);   // convert to PSI
  
  delay(1000);
  
}


----------



## rottison

Hello everyone o2 invited me from a reef forum to come see this new controller. I have 3 big reef tanks but I also have 500gal of fresh planted discus and angels I need a controller for and this is looking good.

can't wait to see 02's new shield I use a lot of his stuff now and its always been good thing..


----------



## Ultimbow

Thanks i dint order anything yet but will get the one you suggest thanks for your help


----------



## O2surplus

rottison said:


> Hello everyone o2 invited me from a reef forum to come see this new controller. I have 3 big reef tanks but I also have 500gal of fresh planted discus and angels I need a controller for and this is looking good.
> 
> can't wait to see 02's new shield I use a lot of his stuff now and its always been good thing..



LOL- welcome aboard Dale! Thanks for the compliments.


----------



## O2surplus

AH- 


Question -according to all data sheets that I could find, the dosing pumps only pull 80ma during operation. Can you see any reason why I couldn't substitute some small SMD NPN transistors (rated for 600ma) in place of the larger FETs that you're using? 
On another note- could you provide a list of the arduino pins that you used to connect your SD card reader? I'm trying to design my shield to be directly compatible with your code, but I didn't notice any documentation that described the SD card reader portion of your build.

Thanks!


----------



## STReNT

O2surplus said:


> AH-
> 
> 
> Question -according to all data sheets that I could find, the dosing pumps only pull 80ma during operation. Can you see any reason why I couldn't substitute some small SMD NPN transistors (rated for 600ma) in place of the larger FETs that you're using?
> On another note- could you provide a list of the arduino pins that you used to connect your SD card reader? I'm trying to design my shield to be directly compatible with your code, but I didn't notice any documentation that described the SD card reader portion of your build.
> 
> Thanks!


NPN transistors should work fine, especially since the current is only for short periods of time - just don't forget about the diode

For the SD Card

MISO = 50
MISI = 51
SCK = 52
SS = 53

It'd be good if you could expose the SPI pins on your shield for expansion too (like wifi or wired Ethernet)



AnotherHobby - did you have any issues with touch not working when trying to use a ribbon cable for the screen?


----------



## mistergreen

A small npn transistor worked fine when I tested the pump.


----------



## AnotherHobby

O2surplus, looks like your answers are handled. I used the FET's because I was copying somebody else's dosing pump a while back. I just kept using them since they worked.



STReNT said:


> AnotherHobby - did you have any issues with touch not working when trying to use a ribbon cable for the screen?


No, my touch all worked just fine with the ribbon cable. My 40 pin cable was missing one of the pins in the middle because it was an IDE extension cable, so I had to tap that externally and bypass it, but it worked fine. I'd look for a real full 40 pin cable, and not just an IDE extension cable.


----------



## O2surplus

STReNT said:


> NPN transistors should work fine, especially since the current is only for short periods of time - just don't forget about the diode
> 
> For the SD Card
> 
> MISO = 50
> MISI = 51
> SCK = 52
> SS = 53
> 
> It'd be good if you could expose the SPI pins on your shield for expansion too (like wifi or wired Ethernet)


I'm a bit confused? I'm using a Sainsmart 3.2" touch LCD with an attached SD card reader. The pin designations for the SD card connections don't exactly follow the same name convention as the pins you listed. I have-

LCD 40 Pin connector
pin # 35 SD_OUT
pin # 36 SD_SCK
pin # 37 SD_DIN
pin # 38 SD_CS

Any idea where these pins get connected at the Arduino?



mistergreen said:


> A small npn transistor worked fine when I tested the pump.


Thanks Mistergreen- I had the feeling that they'd work fine. I've been using them to drive some 200ma 12V computer fans for about 6 months now. Space is at a premium on the shield that I'm designing, so I'm going to use the smallest component packages possible.


----------



## theknight

Said my message was too short, trying again


O2surplus said:


> I'm a bit confused? I'm using a Sainsmart 3.2" touch LCD with an attached SD card reader. The pin designations for the SD card connections don't exactly follow the same name convention as the pins you listed. I have-
> 
> LCD 40 Pin connector
> pin # 35 SD_OUT
> pin # 36 SD_SCK
> pin # 37 SD_DIN
> pin # 38 SD_CS
> 
> Any idea where these pins get connected at the Arduino?
> 
> Have you been able to test the screen and see if the touch work? The reason I am asking is because when I used a SainsMart 3.2 screen and shield my touch didn't function. After reading a reference about Sainsmart that AH provided it appeared that the touch library and SainsMart might not be compatible.
> 
> Thanks Mistergreen- I had the feeling that they'd work fine. I've been using them to drive some 200ma 12V computer fans for about 6 months now. Space is at a premium on the shield that I'm designing, so I'm going to use the smallest component packages possible.


----------



## O2surplus

theknight said:


> Said my message was too short, trying again


The touch functions & the SD card reader work fine for me, but I get some weird behavior from the controller when I try to access the heater settings screen. The screen attempts to load the heater screen and then the controller re boots to the home screen. This behavior has to be due to a pin assignment conflict between AH's code and the Sainsmart TFT adapter shield. I'm not terribly familiar with LCD/Touch/SD screens, so I'm in uncharted territory. Are the pin assignments at the LCD 40 pin header the same for all commercially produced 3.2" LCD screens? I'm trying to design a shield that will replace the Sainsmart adapter shield, contain all the peripheral components, & work with AH's code "right out of the box". This is no small task- and I want to get it right the first time. Thanks for whatever help you can provide.:thumbsup:


----------



## theknight

AnotherHobby said:


> O2surplus, looks like your answers are handled. I used the FET's because I was copying somebody else's dosing pump a while back. I just kept using them since they worked.
> 
> 
> 
> No, my touch all worked just fine with the ribbon cable. My 40 pin cable was missing one of the pins in the middle because it was an IDE extension cable, so I had to tap that externally and bypass it, but it worked fine. I'd look for a real full 40 pin cable, and not just an IDE extension cable.


Hey AH, maybe I can repay some of your help with this. I took apart the IDE cable that I was using, on the two ends, all the wire and connections are there, all you have to do is drill out the plastic on each end and you have a 40 wire cable ready to go.

Bump:


O2surplus said:


> The touch functions & the SD card reader work fine for me, but I get some weird behavior from the controller when I try to access the heater settings screen. The screen attempts to load the heater screen and then the controller re boots to the home screen. This behavior has to be due to a pin assignment conflict between AH's code and the Sainsmart TFT adapter shield. I'm not terribly familiar with LCD/Touch/SD screens, so I'm in uncharted territory. Are the pin assignments at the LCD 40 pin header the same for all commercially produced 3.2" LCD screens? I'm trying to design a shield that will replace the Sainsmart adapter shield, contain all the peripheral components, & work with AH's code "right out of the box". This is no small task- and I want to get it right the first time. Thanks for whatever help you can provide.:thumbsup:


All I got was the home screen and the top header showing date, time and temperature. Maybe I had something else wrong. I am waiting for a new screen and ElectricFreak shield and I will see how that goes. AH posted this in one of his many answers "Check out this thread: http://forum.arduino.cc/index.php?to...294#msg1462294

I stumbled across this when I was doing research for this project. The third post down from the author of the UTFT libraries: "The problems described here are specific to the crappy SainSmart products which ARE NOT, nor will they ever be, supported by any of my libraries!"


----------



## STReNT

O2surplus said:


> I'm a bit confused? I'm using a Sainsmart 3.2" touch LCD with an attached SD card reader. The pin designations for the SD card connections don't exactly follow the same name convention as the pins you listed. I have-
> 
> LCD 40 Pin connector
> pin # 35 SD_OUT
> pin # 36 SD_SCK
> pin # 37 SD_DIN
> pin # 38 SD_CS
> 
> Any idea where these pins get connected at the Arduino?
> 
> 
> 
> Thanks Mistergreen- I had the feeling that they'd work fine. I've been using them to drive some 200ma 12V computer fans for about 6 months now. Space is at a premium on the shield that I'm designing, so I'm going to use the smallest component packages possible.


The pins you listed are the ones for the TFT module itself, the ones I listed are the Arduino pins they plug in to

This might make it easier to understand


----------



## O2surplus

theknight said:


> Hey AH, maybe I can repay some of your help with this. I took apart the IDE cable that I was using, on the two ends, all the wire and connections are there, all you have to do is drill out the plastic on each end and you have a 40 wire cable ready to go.
> 
> Bump:
> 
> All I got was the home screen and the top header showing date, time and temperature. Maybe I had something else wrong. I am waiting for a new screen and ElectricFreak shield and I will see how that goes. AH posted this in one of his many answers "Check out this thread: http://forum.arduino.cc/index.php?to...294#msg1462294
> 
> I stumbled across this when I was doing research for this project. The third post down from the author of the UTFT libraries: "The problems described here are specific to the crappy SainSmart products which ARE NOT, nor will they ever be, supported by any of my libraries!"


Well I'm just gonna bite the bullet and buy the Itead version of the TFT LCD shield and be done with it. Itead's version is supported by the UTFT library, so that should make this project a bit easier.

Bump:


STReNT said:


> The pins you listed are the ones for the TFT module itself, the ones I listed are the Arduino pins they plug in to
> 
> This might make it easier to understand



Hey thanks for posting that! I'm used to the EAGLE software, so the image that you posted makes sense to me.


----------



## kman

I got a fat little package from DX today, yay! FINALLY! Time to get going. Sooooo.... Ummm....

Just to be sure: Step 1.0 is to download the IDE from Arduino.cc and install it, right? 1.0.5 r2 is the current version, and that will work with AH's code, right?

Sorry, I'm brand-spanking new to all this, so there may be a few more questions as I ramp up. Meanwhile, I'm starting to read tutorials on YouTube and around the net, so I don't have to bug you all overly much.


----------



## kman

Ok, I'm going over my rather imposing pile of parts, and all the posts in this thread to date, plus photos, schematics, etc., trying to come up with a truly complete list of parts needed for this project. I appear to have the vast majority of what is needed, but there are some parts that appear to be required and have not yet been identified with certainty by AH. So here goes: (see questions and unknowns set out in bold/italic)

*MAIN PARTS FOR ARDUINO:*


Arduino Mega 2560 R3 (or "Funduino Mega" 100% clone)

DS1307 I2C RTC DS1307 24C32 Real Time Clock Module (so Arduino can tell time)

Any small capacity SD card, 2 GB max (as low as 32mb ok). _Must be small enough to be formatted FAT16, NOT FAT32! May need utility to this under Win7/8_

*TOUCHSCREEN AND RELATED PARTS:*


3.2"inch TFT LCD Touch Screen: $17 (See evil-bay item 271201097446. _No SainSmart!_)

LCD TFT01 Mega Shield V2.0 Adapter Module

BC337 Transistor (for screen dimming): (evil-bay item 320622653696)

5mm Ambient Light Sensor

*DOSING PUMPS AND RELATED PARTS:*


Two: 12V DC DIY Dosing pump Peristaltic dosing Head with Connector (_I'd order a third in case one has an issue, or you decide to dose Glut, etc._)

SR260 60V 2A Schottky Diodes (_needed for dosing pumps_)

_*QUESTION: DO WE NEED MOSFETS? (2x IRFZ44N) AND 470 pF CAPACITOR?*

*QUESTION: Small NPN Transistor instead of Mosfets?*_​

*POWER-RELATED PARTS:*


8-Channel Relay Module Board w/ Optocoupler Isolation -Blue (to control AC powered outlets)

*QUESTION: Note that the above board recommended by AH appears different from the one in the photos. The linked one above has no big blue block of screw terminals! How is it connected? See photo here*​
24-Pin Screw Terminal Block Connector w/ Cover (connects AC power to the Optocoupler... I think?)

ALSO: Need master AC power switch and reset button

Need common "wall wart" 12v power supply *(AH: How many amps needed?)*

_Need 5v voltage regulator? (see post 81 but also post 181 and later revisions say none needed, until 233?): L7805CV 5V regulator and heat sink and capacitors?_ *[AH: Please clarify?]*

*SENSORS & COMM.:*


High-Output Infrared LED (to remote control Sat+ or E-Series lights)

DS18B20 Stainless Temperature Probe

_Optional for unfinalized co2 pressure feature:_
MPX5700GP pressure sensor by Freescale Semiconductor (see ebay, ~$12ea)
(or MPX5700AP as alternative but GP is better)

*MISC:*


Breadboards and jumper wires if you don't already have them.

DIY Common Resistors Kit (_need 6... which ones?_ also note I ordered this but product received does not match the photo, so I'll have to go to RadioShack or Amazon for mine)

Pre-wired quick-disconnect harnesses (very handy: Evilbay item 400653890690)

_Prototype board for between Arduino and display board? (post 74)_

_Need misc screw terminals for: Arduino sub-board, dosing pump sub-board, relay module board?_ *[AH: Can you clarify?]*

Phone jacks for temp sensor and co2 pressure sensor, if desired (_handy quick-disconnect if you're comfortable crimping them_)

*OPTIONAL CO2 ALTERNATIVE:*


Flow Sensor Mass Air ±5% 3-Pin Box (_again, details of co2 sensors not final, buy at your own risk!_)

I hope this is helpful for someone other than me. If not, oh well... AH, if you have a little time to spare, would you mind clarifying/answering some of the uncertainties I've noted above?

Blink Sketch works great on my Arduino. I guess I have some jumpering and wiring and soldering to do before I can get anything cool on the touchscreen, or is there a way to slap it together and see a picture?

Getting closer! :bounce:


----------



## AnotherHobby

Whew! That's a lot! Lets cruise through this...



kman said:


> QUESTION: DO WE NEED MOSFETS? (2x IRFZ44N) AND 470 pF CAPACITOR?[/B]
> 
> QUESTION: Small NPN Transistor instead of Mosfets?


I think you can use a small NPN transistor. I'd say take a crack at it... worst case it that it just doesn't work right. It should work though. As for the cap, I didn't use any capacitors on my motors. The 470 pF cap was used for the pressure sensor. It'll work without the cap, but it's recommended. Remember though, I haven't added any code for it yet.



kman said:


> QUESTION: Note that the above board recommended by AH appears different from the one in the photos. The linked one above has no big blue block of screw terminals! How is it connected? See photo here


You just connect to the pins instead. I think the red board has screw terminals and the blue board has pins. You could use a ribbon cable, or individual wires.



kman said:


> 24-Pin Screw Terminal Block Connector w/ Cover (connects AC power to the Optocoupler... I think?)


The AC comes into my project box, goes through a switch and a small breaker, then the hot wire goes to the distribution block to be split out 8 ways. From there it goes into the optocoupler relays, and from there out to the power outlets. The neutral goes straight to the first power outlet, then daisy chains to the other outlets from there. 



kman said:


> Need common "wall wart" 12v power supply *(AH: How many amps needed?)*


Mine is a 3A power supply. It's more than is needed, so I never bothered calculating how much the project requires. I'd feel pretty comfortable cutting that in half if that's what you have. It's not a high power project.



kman said:


> Need 5v voltage regulator? (see post 81 but also post 181 and later revisions say none needed, until 233?): L7805CV 5V regulator and heat sink and capacitors? *[AH: Please clarify?]*


Yes, I haven't updated my drawings with the regulator wiring. You will absolutely need a heat sink for the regulator since it's being fed by 12v. The difference in voltage between input and output is given off in heat. The more voltage, the more heat. It would run pretty cool if we fed it with 7v, but that would be inconvenient.

I have a 100uF capacitor on the (5v) output side and a 470uF capacitor on the (12v) input side. The cap just goes between ground and positive. So both of the capacitors have one connection to the middle post of the regulator, and then the the other connection on the 470uF goes to the 12V+ and the other connection the 100uF goes to the 5V+.

It has a bunch of parts you don't need, but I used evil bay item 121192337755. It has a heat sink, the caps, and the regulator, and it's only $3.45 shipped for 2. The downside is that it's from china and takes forever. If you want it quicker and don't mine paying a little more, evil bay item 161325489013 is the exact same thing, but in the US for $7.31 for one. You can probably put it together for the same price by going to radio shack and buying the components (reg, caps, heat sink). The caps don't need to be exact.



kman said:


> Need misc screw terminals for: Arduino sub-board, dosing pump sub-board, relay module board? *[AH: Can you clarify?]*


I got a 20 pack of "2-Pin 5mm Pitch PCB Mount Screw Terminal Block Connector" off evil bay from a US seller that shipped quick (item 221479023764). He's out now, but that's the size I got. I used the same ones on my prototype board.



kman said:


> Phone jacks for temp sensor and co2 pressure sensor, if desired (_handy quick-disconnect if you're comfortable crimping them_)


I didn't crimp mine. I bought a 7' phone line with both ends on it, cut it in half, and soldered/spliced it with my sensors wires.



kman said:


> Flow Sensor Mass Air ±5% 3-Pin Box (_again, details of co2 sensors not final, buy at your own risk!_)


I would not buy this. Due to the nature of how check valves work, the flow rate isn't consistent. It builds up until there is a 1 psi difference on each side of the check valve (or whatever your cracking pressure is), and then opens until the pressure equalizes, and then closes again. Even though the CO2 flow rate looks smooth to us, it jumps around. The only way this sensor is useful is if you have no check valves at all on you CO2 line. I won't be using this sensor other than for doing testing on another project I'm working on that's unrelated to this.

I hope that all helps you. Be patient and expect this to take you way longer than you are probably thinking, so just enjoy the project and don't be in a hurry. I'm not sure what you are going to use for a project box, but when you get there, spend a lot of time thinking through your layout and how everything will fit together.


----------



## kman

Thanks so much!

Yeah, this is clearly going to take some time and thought. It's tough with that big ol' pile of toys taunting me. 

I've given minimal thought to the project box, at this point. I figure I'll breadboard everything first to see it all working, so that'll take some time. Once I see everything laid out and connected, it'll be easier to visualize how I want everything to go. I'll likely go horizontal due to my space.

Two thoughts I had re the build: 

1) I might see if I can separate the screen from the rest of the project, and mount the screen somewhere more visible, while the wired bits stay more out of sight. It's a little hard to tell, but am I correct in that the only wires going from the LCD board to the LCD module itself are included in the one ribbon cable (assuming a full 40pin IDE cable is used that isn't missing a wire)? And perhaps a small pair for the light sensor?

2) Re power, I've been wondering if it would work to disassemble a power strip and use the guts of that (obviously the hot line would be cut from each and redirected) instead of just buying power outlets. That would give me the perfect power switch and circuit breaker, as well as all the physical outlets I need. Your better surge protectors have, in addition to the features above, something like 3 individual "zones" / groups of outlets that have surge protection. I would lose the surge protection normally granted each individual outlet, but three of the outlets might still keep their protection, for the more sensitive gear. And of course the whole thing will be plugged into another one anyway. Anyway, it's not an idea I'm married to, but it seemed like it could be a convenient way to get all the parts needed, plus extra surge protection (for a few outlets, at least), with one purchase. 

Btw, are you using standard building-grade electrical cord (like from some stripped out Romex) for your AC wiring?


----------



## AnotherHobby

kman said:


> 1) I might see if I can separate the screen from the rest of the project, and mount the screen somewhere more visible, while the wired bits stay more out of sight. It's a little hard to tell, but am I correct in that the only wires going from the LCD board to the LCD module itself are included in the one ribbon cable (assuming a full 40pin IDE cable is used that isn't missing a wire)? And perhaps a small pair for the light sensor?


If you have a full 40 pin cable, then every single wire you need goes through that cable, except for the 2 wires for the ambient light sensor, and 1 wire that needs to be hijacked for the backlight. The light sensor only matters if you modify the ElecFreaks TFT shield and hijack the backlight pin. If you are fine with just having a single brightness setting, then you don't need to bother with that stuff, and the 40 pin cable is all you need.



kman said:


> 2) Re power, I've been wondering if it would work to disassemble a power strip and use the guts of that (obviously the hot line would be cut from each and redirected) instead of just buying power outlets. That would give me the perfect power switch and circuit breaker, as well as all the physical outlets I need. Your better surge protectors have, in addition to the features above, something like 3 individual "zones" / groups of outlets that have surge protection. I would lose the surge protection normally granted each individual outlet, but three of the outlets might still keep their protection, for the more sensitive gear. And of course the whole thing will be plugged into another one anyway. Anyway, it's not an idea I'm married to, but it seemed like it could be a convenient way to get all the parts needed, plus extra surge protection (for a few outlets, at least), with one purchase.


A power strip might not work because they often don't use individual "outlets" inside. They are normally just plastic molds with wires running through them that aren't very easy to modify. You'll have to take on apart and inspect it first. You might find one that works though.



kman said:


> Btw, are you using standard building-grade electrical cord (like from some stripped out Romex) for your AC wiring?


Yes. Standard house solid core copper wiring between the outlets, the relays, and the distribution block.


----------



## O2surplus

My shield's getting closer to becoming a reality! Take a look and let me know if there's any thing else that I should work in? I'm going to add another I2C connection and breakout the ISP connector. Should I break out anything else?


----------



## r45t4m4n

^ awesome! I want one. Going to build a headless controller with a web UI I can access via a phone/tablet. This shield with an aduberry and a raspberry pi will be slick!


----------



## AnotherHobby

Holy crap O2surplus, that is impressive! Certainly looks spiffy compared to my soldered up boards.


----------



## O2surplus

AnotherHobby said:


> Holy crap O2surplus, that is impressive! Certainly looks spiffy compared to my soldered up boards.



Thanks for the compliments! I went back in and added a few more I2C connections and an extra ground connection (for linking led driver grounds ect..) I'm gonna stare at this board for a few days and make changes if suggested, before I order a batch of 10. Note- I left the LCD backlight connection floating on the PcB. It seems there are a few different variations of LCD touch shields on the market, so I left the provision for a simple jumper wire connection (hack) available for the end user.

Here's the latest iteration-


----------



## kman

Awesome! Just let me know where to send the check, if you want a beta tester.


----------



## gus6464

That is one slick looking board. O2, do you think it would be beneficial to add a slot for a meanwell SCW so that the shield and the Arduino could be powered off a single power supply? Don't know if that would fit though.


----------



## AnotherHobby

Just giving a quick heads up, I won't be able to answer any questions in here for the next two weeks. I'm off the the Boundary Waters Canoe Area for a week, and then a bluegrass music festival after that. I know... tough life. 

I'll be back from all that on the 29th. I just didn't want anybody to post a question and think I was ignoring them.


----------



## O2surplus

gus6464 said:


> That is one slick looking board. O2, do you think it would be beneficial to add a slot for a meanwell SCW so that the shield and the Arduino could be powered off a single power supply? Don't know if that would fit though.



I had a couple of SCW's worked in to the original design, but I removed them because their excessive mounting height added some limitations to mounting the completed controller with the LCD attached. I'll probably ad them back as long as there's an understanding that they bring a few caveats, mainly the need, in some installations, to remote mount the LCD. 
On another note- I realized last night that I need to add over current/ over voltage protection to the analog outputs that control the power outlets, and break out the rest of the unused digital PWM & Analog pins. I'll get that done before I order the first batch. I'm sure there will be problems with this first design, but I'm going to do what I can to provide "work arounds" that can be fixed using "green wiring" if needed. LOL


----------



## O2surplus

AnotherHobby said:


> Just giving a quick heads up, I won't be able to answer any questions in here for the next two weeks. I'm off the the Boundary Waters Canoe Area for a week, and then a bluegrass music festival after that. I know... tough life.
> 
> I'll be back from all that on the 29th. I just didn't want anybody to post a question and think I was ignoring them.



Poor guy. I hope the mosquitoes (State bird of Minnesota - LOL) don't carry you off. LOL- My parents used to live in International Falls, Mn, so I'm familiar with the "Boundary waters" you'll be visiting. Have a good time!


----------



## Muttley

AnotherHobby said:


> Cool beans! Well, roll up your sleeves and dig in. I started knowing it would take me a long time, and looked forward to having a fun long term project to work on. If you go in with that attitude, I think you'll really enjoy it.
> 
> All of the dimming in this project should work perfectly with PWM. I put all of the code in there for it. It defaults to IR, but when you get that far I'll let you know how to change it to use that part of the code.


Hi AH,

I hope that everything is ok with you. I was able to clean most of the things in order to get just the simple light control. Can you just help in the way to remove the IR ? I just need the 2 channels to go up and down based on time.
Thank you very much. I really appreciate.
Kind Regards,


----------



## kman

AnotherHobby said:


> Just giving a quick heads up, I won't be able to answer any questions in here for the next two weeks. I'm off the the Boundary Waters Canoe Area for a week, and then a bluegrass music festival after that. I know... tough life.
> 
> I'll be back from all that on the 29th. I just didn't want anybody to post a question and think I was ignoring them.


Have fun!


----------



## AnotherHobby

O2surplus said:


> Poor guy. I hope the mosquitoes (State bird of Minnesota - LOL) don't carry you off. LOL- My parents used to live in International Falls, Mn, so I'm familiar with the "Boundary waters" you'll be visiting. Have a good time!


Well it's been really cold up there this week, so I'm hoping the skeeters die down some!



Muttley said:


> Hi AH,
> 
> I hope that everything is ok with you. I was able to clean most of the things in order to get just the simple light control. Can you just help in the way to remove the IR ? I just need the 2 channels to go up and down based on time.
> Thank you very much. I really appreciate.
> Kind Regards,


I'm not sure exactly what you are asking. If you just need to switch from IR to PWM, you can change this line to false:

// if you have a Current Satellite Plus, this is true
// if you are controlling your lights directly with PWM, this is false
boolean lightCSP = true;

If you want to 100% gut all IR code, the quickest way would be to remove the IRremote.h library at the beginning, and then tell it to compile, and then chase down all of the errors from removing that library. All of the lighting commands are if/then statements with regards to if it's IR or PWM (based on the lightCSP value above). I wrote it so that if you don't use IR, you don't actually have to gut the code unless you really want to.

Also, if you are doing PWM, switch this to 256:

int maxRGBW = 42;

If you are just using 2 channels instead of 4, just leave the 2 unused channels at zero values when you set them up. 

Anything deeper than that, you'll have to dig in and be more specific. Also, I'm sure you saw my comment above, but I'll be offline for 2 weeks starting tomorrow (or the Tuesday if I finish packing early).

I should also mention, just to be fair, that I can help people navigate the code, I can tell them what stuff does or give them a place to start working, but in general I have shared this as a DIY project, and any actual customizing of the code you'll need to do yourself. As much as I love to be helpful, I just don't have the time to write one off pieces for people.



kman said:


> Have fun!


Thanks! I will! I just packed up and prepped all of the meals. I have a bit of work left to do, but I'm almost ready to go. I'm quite happy the iAqua controller will be taking care of the tank. All my wife has to do is hit the feed button and throw in some food every other day.


----------



## theknight

AnotherHobby said:


> Well it's been really cold up there this week, so I'm hoping the skeeters die down some!
> 
> 
> 
> I'm not sure exactly what you are asking. If you just need to switch from IR to PWM, you can change this line to false:
> 
> // if you have a Current Satellite Plus, this is true
> // if you are controlling your lights directly with PWM, this is false
> boolean lightCSP = true;
> 
> If you want to 100% gut all IR code, the quickest way would be to remove the IRremote.h library at the beginning, and then tell it to compile, and then chase down all of the errors from removing that library. All of the lighting commands are if/then statements with regards to if it's IR or PWM (based on the lightCSP value above). I wrote it so that if you don't use IR, you don't actually have to gut the code unless you really want to.
> 
> Also, if you are doing PWM, switch this to 256:
> 
> int maxRGBW = 42;
> 
> If you are just using 2 channels instead of 4, just leave the 2 unused channels at zero values when you set them up.
> 
> Anything deeper than that, you'll have to dig in and be more specific. Also, I'm sure you saw my comment above, but I'll be offline for 2 weeks starting tomorrow (or the Tuesday if I finish packing early).
> 
> I should also mention, just to be fair, that I can help people navigate the code, I can tell them what stuff does or give them a place to start working, but in general I have shared this as a DIY project, and any actual customizing of the code you'll need to do yourself. As much as I love to be helpful, I just don't have the time to write one off pieces for people.
> 
> 
> 
> Thanks! I will! I just packed up and prepped all of the meals. I have a bit of work left to do, but I'm almost ready to go. I'm quite happy the iAqua controller will be taking care of the tank. All my wife has to do is hit the feed button and throw in some food every other day.


Enjoy your time off, you sure earned it with all the help and guidance you've been giving.


----------



## AnotherHobby

theknight said:


> Enjoy your time off, you sure earned it with all the help and guidance you've been giving.


I seriously can't wait. The only battery powered devices in my possession will be a headlamp and a small flashlight. Map, compass, canoe and paddle, fishing rod, and isolation.

In one hobby I try to create a healthy and interesting environment to provide a happy home and the longest life possible for aquatic species. In another hobby I aim to catch them, kill them, and eat them. I'm okay with that.


----------



## Ultimbow

Have fun! I am the same a lot of catch and release but some dont make it and are yummy. ;-)


----------



## Muttley

Hi AH,

Yes, I saw your holiday message. I was just trying to get hold of you before you leave, and I was lucky  
I am a newbie to Arduino and I really need to fill a big amount of knowledge gaps. Your amazing project is helping me a lot on that.
Thank you very much for your help. I believe I can progress more now.
Have a great time. Last year I drove from Shoreview (where my employer is located) to Two Harbors. It's an amazing place - I hope someday I can go further North 
Kind Regards


----------



## Ultimbow

Ok so i know hobby gonne for a few week but i am sure other person can help me. Before it was mantion a orderd a sainsmart kit mega shield and lcd [emoji22]. So my quetion is. Is it the hole kit that the problem or the shield and lcd or just the shield. Can i order just a new shield and would be fine or do i have to reorder everything?


----------



## rottison

that board looks great can not wait to try it out. I will be happy not to have to move all the pins around 

my wife says my tank has lost its look and I should order some new plants to redo it and set it with a theme or some thing so this controller will be a great add on. for my 180


----------



## STReNT

Ultimbow said:


> Ok so i know hobby gonne for a few week but i am sure other person can help me. Before it was mantion a orderd a sainsmart kit mega shield and lcd [emoji22]. So my quetion is. Is it the hole kit that the problem or the shield and lcd or just the shield. Can i order just a new shield and would be fine or do i have to reorder everything?


If you're having issues, it's unlikely that the shield is the problem. It's just a few copper traces and some resistors. However, there are reports of an early version of the shield being wired incorrectly that causes the SD card not to function (there's a pretty easy fix for this though). Unfortunately SainSmart didn't change the version number printed on the PCB so it was easy to tell (both the faulty one and the fixed one have V1.0 printed on them)

I purchased both the TFT and the shield directly from SainSmart about 2 months ago and have not had an issue with the items I received.


----------



## gus6464

Ultimbow said:


> Ok so i know hobby gonne for a few week but i am sure other person can help me. Before it was mantion a orderd a sainsmart kit mega shield and lcd [emoji22]. So my quetion is. Is it the hole kit that the problem or the shield and lcd or just the shield. Can i order just a new shield and would be fine or do i have to reorder everything?


I think the shield is the problem and not the LCD.


----------



## Ultimbow

STReNT said:


> I purchased both the TFT and the shield directly from SainSmart about 2 months ago and have not had an issue with the items I received.


Yes it does work well together i was talking for the iaqua built. 



gus6464 said:


> I think the shield is the problem and not the LCD.


That is what i am thinking too Might just order the shield and try it than i will be set i guess :icon_smil


----------



## STReNT

Ultimbow said:


> Yes it does work well together i was talking for the iaqua built.


Yep - it's worked fine running iAqua for me


----------



## Ultimbow

STReNT said:


> Yep - it's worked fine running iAqua for me


Did you use the original code or you had to modified it?? that the kit i got
http://www.sainsmart.com/sainsmart-...arduino-atmel-atmega-avr-16au-atmega8u2.html/


----------



## NatroN

I was running the a sainsmart tft + mega + shield combination as well. Worked fine out of the box excpet the touch.

But i've to say that I have a 5 inch lcd - and didn't spend more then a minute to see if its working. all graphichs worked fine. Even the SD card (on the screen) worked fine. 

But as all graphics was too small for my 5" lcd i'm currently doin all code by my self with the help of AHs great ideas and great graphics.

I have absolutly NO issues with the sainsmart stuff.


----------



## STReNT

Ultimbow said:


> Did you use the original code or you had to modified it?? that the kit i got
> http://www.sainsmart.com/sainsmart-...arduino-atmel-atmega-avr-16au-atmega8u2.html/


With any shield, if you want to just plug it in without modification, you'll have to change the pin assignments in the code for the UTouch object. Pretty simple, just changing a few numbers.


----------



## steeltkb

Thanks for this thread! I love this stuff.


----------



## Brampje

First of all, this is the best looking GUI I've seen! And it took me some time to find it.
I was actually looking for a nice GUI for my aquarium controller and now I've found this... It's just perfect.

I'm currently building a controller which is connected to the internet and pushes all the statistics to a cloud server for graphs and an internet dashboard. Works with DHCP but I was going to add a small 2.4" Touchscreen for setting a static IP and some basic functionality for when I'm too lazy to use the webgui. But now that I see this, I might just get a 3.2" screen :-D
Small list of the things I'm currently implementing: Temp, Humidity, CO2, TL-Dimming, LED Moonlight, Auto feeder, PH / ORP / SALINITY, Waterlevel control, Dosing and also a Wave controller for a friend. All of this controlled by a webgui and by an android/iphone app.

I can provide you with the PH probe part if you want. Anyway, if I can help you with anything, just let me know ;-)


----------



## O2surplus

I got bored at work today, so I spent some time working on my shield design for the iAqua Controller. I added back in the 40 pin Lcd pin header and mapped it's pins to match AH's code. I'm sure there's some bugs in there somewhere, but I'm going to forge ahead and order a batch of these for testing. If there are any problems- at least I'll have something "physical" to trouble shoot. I've got TFT Lcd shields from both Itead and Sainsmart, so I'm hoping at least one works correctly. LOL


----------



## kman

Niiiiice! If you need a beta tester...


----------



## 75ona76

Or two testers. Lol


----------



## O2surplus

kman said:


> Niiiiice! If you need a beta tester...





75ona76 said:


> Or two testers. Lol


LOL- I've got 10 Pcb's coming, so there will be a few "spares". I went crazy with the options so they should at least make very pretty paper weights if they don't work.:hihi:

Ordered them in BLUE, 1.6mm thick, with 2oz copper and GOLD plating.


----------



## kman

Fingers crossed!

How long do they usually take to get to you?


----------



## r45t4m4n

I'll beta test as well


----------



## O2surplus

kman said:


> Fingers crossed!
> 
> How long do they usually take to get to you?



With any luck I should have them in about 8 - 10 days. I placed the Pcb order with Seeedstudio yesterday, but they're closing October 1 -6 for a Chinese Holiday. I'm hoping that they get my order out _before_ they close. It's not a deal breaker though, I can't build the shields until I get my order of 36 & 40 pin dual row female headers, and they're stuck on the slow boat. LOL


----------



## kman

O2surplus said:


> With any luck I should have them in about 8 - 10 days. I placed the Pcb order with Seeedstudio yesterday, but they're closing October 1 -6 for a Chinese Holiday. I'm hoping that they get my order out _before_ they close. It's not a deal breaker though, I can't build the shields until I get my order of 36 & 40 pin dual row female headers, and they're stuck on the slow boat. LOL


Ah, so we should pick up a few 36 and 40 pin female headers, while we're at it?


----------



## O2surplus

kman said:


> Ah, so we should pick up a few 36 and 40 pin female headers, while we're at it?



Nah- You don't need to. I've already got enough parts on hand to build out the first ten shields. The dual row female headers were the only parts that I didn't already have and needed to order.

I'm planning to build out one of the Pcb's and test it for any flaws. If it tests out OK, I'll post a parts list along with the build files for the Pcb. That way anyone will have enough information to build their own. Of course I will have a few left over PcB's that I'll be willing to part with, but that's best left to PM's.:biggrin:


----------



## rottison

if its not to late count me in for testing 1 also I should have any extra parts you run short on


----------



## O2surplus

rottison said:


> if its not to late count me in for testing 1 also I should have any extra parts you run short on


:wink: You are Beta tester #1. LOL You're on the list whether you like it or not.


----------



## rottison

LOL :hihi: Is it possible to be addicted to building these thing's ??


----------



## O2surplus

rottison said:


> LOL :hihi: Is it possible to be addicted to building these thing's ??


LOL- I think so! Maybe we need to seek professional help? Is there such a thing as Solderhaulic's Anonymous or other 12 step program? Even if there is- I'm gonna stay in "denial" for as long as I can. Somebody's gonna have to pull an "Intervention" on me to make me quit, and I won't go down without a fight.:icon_twis


----------



## Muttley

Dear All,
Has someone found an issue with the clock ? I have the DS1307 module connected like in the diagram but the screen clock is static... Sorry if it's a dumb question but it's driving me crazy. I have tried several DS1307 modules already....
Thank you.


----------



## theknight

Muttley said:


> Dear All,
> Has someone found a issue with the clock ? I have the DS1307 module connected like in the diagram but the screen clock is static... Sorry if it's a dumb question but it's driving me crazy. I have tried several DS1307 modules already....
> Thank you.


Don't have an answer, but I am having the same issue


----------



## AnotherHobby

Muttley said:


> Dear All,
> Has someone found an issue with the clock ? I have the DS1307 module connected like in the diagram but the screen clock is static... Sorry if it's a dumb question but it's driving me crazy. I have tried several DS1307 modules already....
> Thank you.


Do you mean that the font where the clock is at the top of the screen is static? It doesn't sound like the RTC because it should work without the RTC connected. Can you take a pic of it?


----------



## bigd603

The knight, are you using anotherhobby's code, or custom code? If custom, please post it.


----------



## Muttley

AnotherHobby said:


> Do you mean that the font where the clock is at the top of the screen is static? It doesn't sound like the RTC because it should work without the RTC connected. Can you take a pic of it?


Hi AH,

Welcome back ! I hope you had a great break.
What happens is that the clock on top of the screen does not update - it's always saying Tuesday 6 Feb 11:46pm. I go to settings and update the time and day but when returning to the home screen the time and date is again the same (Tuesday 6 Feb 11:46pm). I was busy looking at other things and didn't noticed this before.
I connected a Tiny DS1307 to GND/5V/SDA/SCL.

Do you still want a picture ?

Kind Regards,

Fernando

PS: I am using your code.


----------



## theknight

bigd603 said:


> The knight, are you using anotherhobby's code, or custom code? If custom, please post it.


I am using the original code with the exception of the touch, I did not modify the shield. I swapped clocks and it is working now, except that it insists today is a Monday, I had to change the year to 2013 to get the day of the week correct.

Also finding some issues with certain other screens. I am going to make sure I download the most current code and reload it and see if it cures my problems.


----------



## STReNT

For those with RTC issues, first make sure that you've wired it up right (SDA to SDA, SCL to SCL). Second, try the Arduino example RTC code - if that doesn't work correctly either, try using shorter wires for the SDA and SCL lines.


----------



## theknight

STReNT said:


> For those with RTC issues, first make sure that you've wired it up right (SDA to SDA, SCL to SCL). Second, try the Arduino example RTC code - if that doesn't work correctly either, try using shorter wires for the SDA and SCL lines.


Haven't tried the shorter wires because I am working on a breadboard, but when I run the RTC code it has the correct date and day of week, but on the iAqua it insists today is a Monday unless I change year to 2013


----------



## O2surplus

theknight said:


> Haven't tried the shorter wires because I am working on a breadboard, but when I run the RTC code it has the correct date and day of week, but on the iAqua it insists today is a Monday unless I change year to 2013


LOL- Mine does the same thing! I got lazy and set the time using the TIMESET sketch prior to loading the iAqua code. Sure enough- the date and time are correct but the Day of the Week is pushed one day forward. Maybe there's a time offset programmed into the iAqua code?


----------



## STReNT

That means you haven't set the day of week - easy fix 

The DS1307 needs a reference point for the day of the week

Here's some code that will let you set it via serial



Code:


///////////////////////////////////////////
// RTC data and time setter              //
//                                       //
// This sample program allows the user   //
// to set the date and time of an RTC    //
// using I2C.                            //
//                                       //
// Codes by:                             //
// eGizmo Mechatronix Central            //
// Taft, Manila, Philippines             //
// http://www.egizmo.com                 //
// April 15, 2013                        //
///////////////////////////////////////////

#include <Wire.h>
const int DS1307 = 0x68; // Address of DS1307 see data sheets
const char* days[] =
{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
const char* months[] =
{"January", "February", "March", "April", "May", "June", "July", "August","September", "October", "November", "December"};
 
// Initializes all values: 
byte second = 0;
byte minute = 0;
byte hour = 0;
byte weekday = 0;
byte monthday = 0;
byte month = 0;
byte year = 0;

void setup() {
  Wire.begin();
  Serial.begin(9600);
  delay(2000); // This delay allows the MCU to read the current date and time.
 
  Serial.print("The current date and time is: ");
  printTime();
  Serial.println("Please change to newline ending the settings on the lower right of the Serial Monitor");
  Serial.println("Would you like to set the date and time now? Y/N");
 
  while (!Serial.available()) delay(10);
  if (Serial.read() == 'y' || Serial.read() == 'Y')
 
  // This set of functions allows the user to change the date and time
  {
    Serial.read();
    setTime();
    Serial.print("The current date and time is now: ");
    printTime();
  }
 
 
  Serial.println("Thank you.");
}

// Continuous function for converting bytes to decimals and vice versa
void loop() {
}
byte decToBcd(byte val) {
  return ((val/10*16) + (val%10));
}
byte bcdToDec(byte val) {
  return ((val/16*10) + (val%16));
}


// This set of codes is allows input of data
void setTime() {
  Serial.print("Please enter the current year, 00-99. - ");
  year = readByte();
  Serial.println(year);
  Serial.print("Please enter the current month, 1-12. - ");
  month = readByte();
  Serial.println(months[month-1]);
  Serial.print("Please enter the current day of the month, 1-31. - ");
  monthday = readByte();
  Serial.println(monthday);
  Serial.println("Please enter the current day of the week, 1-7.");
  Serial.print("1 Sun | 2 Mon | 3 Tues | 4 Weds | 5 Thu | 6 Fri | 7 Sat - ");
  weekday = readByte();
  Serial.println(days[weekday-1]);
  Serial.print("Please enter the current hour in 24hr format, 0-23. - ");
  hour = readByte();
  Serial.println(hour);
  Serial.print("Please enter the current minute, 0-59. - ");
  minute = readByte();
  Serial.println(minute);
  second = 0;
  Serial.println("The data has been entered.");
 
  // The following codes transmits the data to the RTC
  Wire.beginTransmission(DS1307);
  Wire.write(byte(0));
  Wire.write(decToBcd(second));
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));
  Wire.write(decToBcd(weekday));
  Wire.write(decToBcd(monthday));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));
  Wire.write(byte(0));
  Wire.endTransmission();
  // Ends transmission of data
}


byte readByte() {
  while (!Serial.available()) delay(10);
  byte reading = 0;
  byte incomingByte = Serial.read();
  while (incomingByte != '\n') {
    if (incomingByte >= '0' && incomingByte <= '9')
      reading = reading * 10 + (incomingByte - '0');
    else;
    incomingByte = Serial.read();
  }
  Serial.flush();
  return reading;
}


void printTime() {
  char buffer[3];
  const char* AMPM = 0;
  readTime();
  Serial.print(days[weekday-1]);
  Serial.print(" ");
  Serial.print(months[month-1]);
  Serial.print(" ");
  Serial.print(monthday);
  Serial.print(", 20");
  Serial.print(year);
  Serial.print(" ");
  if (hour > 12) {
    hour -= 12;
    AMPM = " PM";
  }
  else AMPM = " AM";
  Serial.print(hour);
  Serial.print(":");
  sprintf(buffer, "%02d", minute);
  Serial.print(buffer);
  Serial.println(AMPM);
}


void readTime() {
  Wire.beginTransmission(DS1307);
  Wire.write(byte(0));
  Wire.endTransmission();
  Wire.requestFrom(DS1307, 7);
  second = bcdToDec(Wire.read());
  minute = bcdToDec(Wire.read());
  hour = bcdToDec(Wire.read());
  weekday = bcdToDec(Wire.read());
  monthday = bcdToDec(Wire.read());
  month = bcdToDec(Wire.read());
  year = bcdToDec(Wire.read());
}


----------



## Muttley

STReNT said:


> For those with RTC issues, first make sure that you've wired it up right (SDA to SDA, SCL to SCL). Second, try the Arduino example RTC code - if that doesn't work correctly either, try using shorter wires for the SDA and SCL lines.


Hi STReNT,

You were 100% correct !!! Yes, it was the cable length for the SDA and SCL. I reduced both to the minimum possible and Bingo, started to work.
The devil is really on the details - I reduced something like 4 cm of cable.

Cheers mate !


----------



## PhysicsDude55

Muttley said:


> Hi STReNT,
> 
> You were 100% correct !!! Yes, it was the cable length for the SDA and SCL. I reduced both to the minimum possible and Bingo, started to work.
> The devil is really on the details - I reduced something like 4 cm of cable.
> 
> Cheers mate !


That's the one frustrating thing about I2C, it was designed as a communication protocol between ICs on the same PCB, and thus is not designed to travel long distance like RS232 or RS485 will allow. Aquariums are also very electrically noisy environments, which doesn't help either.

On my last setup I had an arduino controlling my lights inside my stand, and had an I2C fed display in my hood (~6 ft. of cabling) and I almost couldn't get the I2C to work due to the distance. If you use shielded cable you can get better range, and if you use pull up resistors you get more range also, but 6 feet is about the absolute max I could get out of it. With normal cabling, I would keep the distance shorter than 1 meter.

This time around I'm mounting my screen directly on the arduino. All the cables controlling the hardware can be extended without issues.


----------



## Brampje

Normal I2C distance limits are a few meters but you can increase this by lowering the clock frequency and using twisted pair / shielded cables. With these changes you might be able to get it working even at 100meter (which is about 328ft). Also the simple pull-up resistor can be changed for increasing the distance at higher frequencies.

But yes, I2C isn't designed for these purposes.

I was actually wondering why PH probes don't have the chips (ADC) inside them to increase distance and precision. I'm struggling to get a PH probe working because of all the interference in and outside the water...


----------



## O2surplus

The PcB's for my iAqua shield arrive tomorrow! It's too bad that I won't have time to assemble any of them until Sunday night. Right now- I'm stuck in the Sierra's fishing for German Brown Trout. I know- life could be worse. LOL


----------



## rottison

sounds like a great time and tasty also


----------



## rottison

will iAqua load on a mega, tft, and 3.2 screen with out altering pins or any thing I tried today to and I got it to go but nothing on the screen and after the completed upload I got an error from <avr dude> type mis match code x100

this might not be exactly the error I left the arduino on my work bench at my work


----------



## STReNT

rottison said:


> will iAqua load on a mega, tft, and 3.2 screen with out altering pins or any thing I tried today to and I got it to go but nothing on the screen and after the completed upload I got an error from <avr dude> type mis match code x100
> 
> this might not be exactly the error I left the arduino on my work bench at my work


Which TFT exactly?

If it's the SainSmart TFT, the splash and home screen should load up fine but the touch won't work without altering the code or the shield.


----------



## rottison

I have the same tft as AH used in his build the white one from elec freaks I believe is the maker of it but I just put that on top of my arduino and plugged in a 3.2 screen I believe I got it from walmote or some thing like that off of flea bay all I get is a mostly dark screen I can see it flicker about every 5 seconds but no picture


----------



## STReNT

rottison said:


> I have the same tft as AH used in his build the white one from elec freaks I believe is the maker of it but I just put that on top of my arduino and plugged in a 3.2 screen I believe I got it from walmote or some thing like that off of flea bay all I get is a mostly dark screen I can see it flicker about every 5 seconds but no picture


That's the shield - what about the TFT?


----------



## robsworld78

WOW, you the man AnotherHobby, that's one sweet ass controller!

I'm ordering up the stuff now. 

How far away do you think one could have the screen from the Arduino? Is there a limit? I would like to put everything in a box under the tank and have just the screen showing so it would be about 6ft of cable possibly.

If that is possible do you or anyone know of any 42 conductor round cable?

Thanks for sharing! roud:


----------



## rottison

controller SSD1289 and TFT01_3.2

Bump: robsworld most people get about 12-18 inches before things go bad some people have gotten 24" but that is a longways


----------



## PhysicsDude55

robsworld78 said:


> WOW, you the man AnotherHobby, that's one sweet ass controller!
> 
> I'm ordering up the stuff now.
> 
> How far away do you think one could have the screen from the Arduino? Is there a limit? I would like to put everything in a box under the tank and have just the screen showing so it would be about 6ft of cable possibly.
> 
> If that is possible do you or anyone know of any 42 conductor round cable?
> 
> Thanks for sharing! roud:


You can adapt an IDE cable to use as a connector from the screen to the shield.

I haven't had good luck with extending cables to the screen. In my setup, I kept the arduino mounted directly to the screen, and extended the other wires down under the aquarium to the electronic stuffs. The electronics other than the screen aren't picky about wire length.

Like Rottison said, there's no way you'll get more than 2' of wire, which isn't enough to do what you want anyway.


----------



## robsworld78

Thanks, I was hoping to keep it as thin as possible. Guess its up to me to do a clean job. :icon_mrgr


----------



## O2surplus

My iAqua controller shield PcB's arrived! I soldered one up last night for testing. At least I know the screen boots up, touch controls function, and the time/date and temperature display correctly. So far, so good. I'll post some pictures later tonight! :smile:


----------



## AnotherHobby

O2surplus said:


> My iAqua controller shield PcB's arrived! I soldered one up last night for testing. At least I know the screen boots up, touch controls function, and the time/date and temperature display correctly. So far, so good. I'll post some pictures later tonight! :smile:


Awesome! Can't wait to see some pics!


----------



## r45t4m4n

exciting!


----------



## rottison

post some pictures its like Christmass


----------



## O2surplus

Christmas in October? LOL

It's gonna need further testing but here are a few photos of what I've got so far. I kinda went "top shelf" with the PcB options LOL, even though this is only a prototype. The board measures 100mm X 120mm, 2oz copper, Gold plating (ENIG) and "Blue".

The finished shield- designed to support every other component in an iAqua controller build. 













Finished shield- backside shot showing copper heat sinks for on board 12V and 5V regulators. (Mega thrown in for size comparison )













The "Money shot" LOL! Controller up and running.












I'm sending this one to "Beta Tester #1" for evaluation LOL. My daytime job is keeping me away from playing with this for now.


----------



## rottison

very cool


----------



## kman

I'm all tingly.


----------



## alpha1172

looking good! i just got all the stuff in the mail to put on of these together. so if you need any more testers let me know!


----------



## kman

Just noticed something... is there a RTC hiding somewhere in there?


----------



## O2surplus

kman said:


> Just noticed something... is there a RTC hiding somewhere in there?


Yep- It's that tiny SMD IC right smack dab in the middle of the Mega footprint. The 3V backup battery is mounted on the backside of the shield, right next to the copper heat sinks. The photo sensor (for LCD screen auto dimming), the IR output led (Current Satellite lighting fixture) and the Dosing Pump control circuits are all there too.:thumbsup:


----------



## kman

O2surplus said:


> Yep- It's that tiny SMD IC right smack dab in the middle of the Mega footprint. The 3V backup battery is mounted on the backside of the shield, right next to the copper heat sinks. The photo sensor (for LCD screen auto dimming), the IR output led (Current Satellite lighting fixture) and the Dosing Pump control circuits are all there too.:thumbsup:


:eek5:


:bounce:


roud:


----------



## O2surplus

AH-

I found a discrepancy between the latest version of the iAqua ino. code and the fritzing schematic. The PWM output pins for led driver control are listed in the code as digital pins 6,5,4,3 but in the schematic as 7,6,5,4. I adjusted my personal copy of the code to match the schematic and my shield design follows the same suit. Just wanted you to know. Maybe this info will help others with their builds?


----------



## AnotherHobby

O2surplus said:


> AH-
> 
> I found a discrepancy between the latest version of the iAqua ino. code and the fritzing schematic. The PWM output pins for led driver control are listed in the code as digital pins 6,5,4,3 but in the schematic as 7,6,5,4. I adjusted my personal copy of the code to match the schematic and my shield design follows the same suit. Just wanted you to know. Maybe this info will help others with their builds?


To be honest, I didn't pay a ton of attention to those pins since I don't use them. I put them in there for compatibility for others, and I had to move them a couple of times due to other constraints as the project moved along. I'm guessing that the code and fritzing document were aligned at some point until I had to move something.

It doesn't really matter which PWM pins you use, as long as long as they all match up. It's good for people to know that if they do use the PWM functionality for LED lights, they should double check pin/color assignments.


----------



## rottison

that would of mad me nuts wondering why the pins where not working. now I just have to make a new light to go with this build  need a new Tank for sure


----------



## piggo64

Looks sexy will get some boards when you finish troubleshooting!,,


Sent from my iPad using Tapatalk


----------



## robsworld78

O2surplus said:


>


I think I see an A missing in front of the 6, looks like you're gonna have to blow these out half price. :icon_mrgr

Seriously though nice work, could you take a picture from the side so we can see how thick it is? What are the final dimensions? What's that extra plug for under the display?


----------



## AnotherHobby

This board would have saved me hours upon hours of work. Granted it was fun work, so it's all good, but wow, it's just so much easier than what I did.


----------



## O2surplus

robsworld78 said:


> I think I see an A missing in front of the 6, looks like you're gonna have to blow these out half price. :icon_mrgr
> 
> Seriously though nice work, could you take a picture from the side so we can see how thick it is? What are the final dimensions? What's that extra plug for under the display?



The PcB measures 125mm X 95mm X 1.6mm thick. The extra 2.1mm power jack under the display is connected to 12V/1amp and 5V/1amp regulators that can accept 24 - 30 VDC. The regulators on the shield power the Mega underneath, sparing it's own regulators from any real load. I added an extra 40 pin header modeled after the Sainsmart TFT/LCD shield, but I'm afraid it doesn't work. That's OK though- the original Sainsmart TFT/LCD shield & my prefered ITead TFT/LCD still work correctly when connected to the conventional Mega pins.


----------



## alpha1172

Is this set up to use 12 or 5V relays?


----------



## rottison

looks like 12v top terminal on the relay side


----------



## rottison

will iAqua show me the temp of my heat sinks? I have 3 6x20 each with 4 50W LED's


----------



## AnotherHobby

rottison said:


> will iAqua show me the temp of my heat sinks? I have 3 6x20 each with 4 50W LED's


It's only programmed to read/display temperature from 1 sensor. That said, the library I'm using (One Wire) will support multiple temperature sensors on the same bus. If you are handy with coding, you could make it display multiple temps.


----------



## rottison

just surprised it doesn't all ready do some thing like tank temp, room temp, sump temp just thinking


----------



## AnotherHobby

rottison said:


> just surprised it doesn't all ready do some thing like tank temp, room temp, sump temp just thinking


It does tank temp. Don't be surprised — I didn't write it for the world. I wrote it for me and my tank, and then I shared it for free to anybody who wants to use it or customize it. :smile:


----------



## fietsenrex

hi AH,

registerd here specially for the controller 
I have 1 question remaining.. do I need a seperate LED driver to use the PWM for LED lighting?
if not, what is the maximum power wich I can use to power the LED's
if so, is it 1-10V or 1-12v?

but my compliments on building the controller  this is the first one that I understand and think I can build myself..


----------



## O2surplus

fietsenrex said:


> hi AH,
> 
> registerd here specially for the controller
> I have 1 question remaining.. do I need a seperate LED driver to use the PWM for LED lighting?
> if not, what is the maximum power wich I can use to power the LED's
> if so, is it 1-10V or 1-12v?
> 
> but my compliments on building the controller  this is the first one that I understand and think I can build myself..


You'll need a separate led driver. The controller only provides a 5V/40ma PWM signal. That's not enough current to drive high power leds.


----------



## fietsenrex

Is there an aftermarket driver? Or do i need to build one?


----------



## O2surplus

fietsenrex said:


> Is there an aftermarket driver? Or do i need to build one?


The MeanWell LDD-H driver will work with the iAqua controller. You'll just have to figure out how many drivers and their current ratings, based on your needs.


----------



## theknight

AnotherHobby said:


> It does tank temp. Don't be surprised — I didn't write it for the world. I wrote it for me and my tank, and then I shared it for free to anybody who wants to use it or customize it. :smile:


+1, the fun is in the DIY and learning new things


----------



## O2surplus

theknight said:


> +1, the fun is in the DIY and learning new things



LOL- Amen to that! DIY and the learning that comes from it is priceless. I just wish that I wasn't such a "visual learner". The hardware side of these projects come easy for me, but the software side has me baffled. You software guys have me in awe. "Object Oriented Programming"? Just the thought makes my head hurt!:hihi:


----------



## fietsenrex

O2surplus said:


> fietsenrex said:
> 
> 
> 
> Is there an aftermarket driver? Or do i need to build one?
> 
> 
> 
> The MeanWell LDD-H driver will work with the iAqua controller. You'll just have to figure out how many drivers and their current ratings, based on your needs.
Click to expand...

I was personally looking at the CAT4101 
Do you think it will work?

It is capable of driving a led strip for my 60cm tank


----------



## O2surplus

fietsenrex said:


> I was personally looking at the CAT4101
> Do you think it will work?
> 
> It is capable of driving a led strip for my 60cm tank


LOL- I'm very familiar with the OnSemi CAT4101. I've built hundreds of DIY led drivers using that chip. It's great little chip, provided that you closely match your Vin to the Vout load at the leds. I've got quite a few different PcB designs that use the CAT4101. Let me know what your needs are and I'll provide you with the PcB build files.:smile:


----------



## fietsenrex

well for now i want to drive A 12v RGB strip (0,6A) and maybe a 24V aquatlantis easyled but i think that is a way to high current for the CAT4101 because i want a 16W lamp...
so maybe i go for a simple 12v highpower white LED strip wich consumes only 7W (0,6A)


----------



## AnotherHobby

I discovered something disconcerting with my build last night. I'm pretty sure it has nothing to do with the info I've shared (schematics and code), and is just something with my own wiring job. Last night I was plugging something into 120v, and I had my hand on one of the metal outlet faceplates on the back. When I leaned behind it my forehead tapped the stainless steel flow pipes I felt a slight tingle on my skin. I moved my head a little and tried a few different spots to make sure it wasn't just a sensitive spot on my head (I have a shaved head), and sure enough I could feel a very subtle zapping anywhere I tested. If I took my hand off the grounded metal plate, there was no zapping.

I hooked up my multi meter, and depending on how I touch things (1 flow pipe or both, the water, and/or the metal plates), there appears to be anywhere from 2-16 volts of electricity running through things. This is not good, although I assume it's been running this way for a while, and the fish and plants all seem fine. 

My first guess is the 12v power supply I'm using (since it's not grounded), but I have no idea what it actually is. I unplugged the heater and observed no change, so I know it's not the heater shorting out. There's a lot of stuff to test, but dang... it's weird.


----------



## mistergreen

Unplug everything and feel around for excessive heat, maybe a short somewhere?


----------



## AnotherHobby

mistergreen said:


> Unplug everything and feel around for excessive heat, maybe a short somewhere?


I did check for heat last night and found nothing. Every relay acts completely normal and turns on and off through the GUI correctly. The only symptom I can find is the stray voltage. I didn't get to dig in very deep though, because I discovered it right before I went to bed. I'm at work now, so I'm making a list of things to try when I get home. Also, if I recall correctly, I was measuring stray AC voltage on my meter (which would make more sense than DC voltage).


----------



## AnotherHobby

The more I think about this, the more I think it can't be the iAqua controller. There is stray AC voltage in my water. The only conductive items that actually come in contact with the water are:

Flow Pipes (no electrical connection)
120v Heater (ruled out already)
120v Hydor Circulation Pump
120v Eheim Surface Skimmer
120v Fluval 306 External Canister Filter
Temperature Sensor
Other than that, nothing else conductive has a physical connection with the water. I can't imagine it's the temp sensor, especially since it's reporting temp correctly. When I get home I'll be unplugging and testing everything. I'm very curious to see what I find. I'm betting on the Hydro or Eheim.


----------



## robsworld78

Hi, I'm trying to compile the sketch but I'm getting an error on line 140 "IRsend irsend;"

This is what it says. 


This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
iAqua:140: error: 'IRsend' does not name a type
iAqua.ino: In function 'void setup()':
iAqua:420: error: 'file' was not declared in this scope
iAqua:421: error: 'SPISPEED_VERYHIGH' was not declared in this scope
iAqua.ino: In function 'void loop()':
iAqua:701: error: 'irsend' was not declared in this scope
iAqua:702: error: 'irsend' was not declared in this scope
iAqua:703: error: 'irsend' was not declared in this scope
iAqua:704: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void processMyTouch()':
iAqua:3031: error: 'irsend' was not declared in this scope
iAqua:3049: error: 'irsend' was not declared in this scope
iAqua:3066: error: 'irsend' was not declared in this scope
iAqua:3083: error: 'irsend' was not declared in this scope
iAqua:3187: error: 'irsend' was not declared in this scope
iAqua:3188: error: 'irsend' was not declared in this scope
iAqua:3196: error: 'irsend' was not declared in this scope
iAqua:3197: error: 'irsend' was not declared in this scope
iAqua:3205: error: 'irsend' was not declared in this scope
iAqua:3206: error: 'irsend' was not declared in this scope
iAqua:3214: error: 'irsend' was not declared in this scope
iAqua:3215: error: 'irsend' was not declared in this scope
iAqua:3225: error: 'irsend' was not declared in this scope
iAqua:3244: error: 'irsend' was not declared in this scope
iAqua:3245: error: 'irsend' was not declared in this scope
iAqua:3246: error: 'irsend' was not declared in this scope
iAqua:3247: error: 'irsend' was not declared in this scope
iAqua:3268: error: 'irsend' was not declared in this scope
iAqua:3273: error: 'irsend' was not declared in this scope
iAqua:3278: error: 'irsend' was not declared in this scope
iAqua:3283: error: 'irsend' was not declared in this scope
iAqua:3318: error: 'irsend' was not declared in this scope
iAqua:3340: error: 'irsend' was not declared in this scope
iAqua:3362: error: 'irsend' was not declared in this scope
iAqua:3384: error: 'irsend' was not declared in this scope
iAqua:3406: error: 'irsend' was not declared in this scope
iAqua:3428: error: 'irsend' was not declared in this scope
iAqua:3450: error: 'irsend' was not declared in this scope
iAqua:3472: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void resyncLights()':
iAqua:5793: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void smartStartup()':
iAqua:6375: error: 'irsend' was not declared in this scope
iAqua:6388: error: 'irsend' was not declared in this scope
iAqua:6393: error: 'irsend' was not declared in this scope
iAqua:6406: error: 'irsend' was not declared in this scope
iAqua:6419: error: 'irsend' was not declared in this scope
iAqua:6424: error: 'irsend' was not declared in this scope
iAqua:6436: error: 'irsend' was not declared in this scope
iAqua:6449: error: 'irsend' was not declared in this scope
iAqua:6454: error: 'irsend' was not declared in this scope
iAqua:6466: error: 'irsend' was not declared in this scope
iAqua:6479: error: 'irsend' was not declared in this scope
iAqua:6484: error: 'irsend' was not declared in this scope
iAqua:6496: error: 'irsend' was not declared in this scope
iAqua:6509: error: 'irsend' was not declared in this scope
iAqua:6514: error: 'irsend' was not declared in this scope
iAqua:6526: error: 'irsend' was not declared in this scope
iAqua:6539: error: 'irsend' was not declared in this scope
iAqua:6544: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void checkLightFade(int, int)':
iAqua:7091: error: 'irsend' was not declared in this scope
iAqua:7111: error: 'irsend' was not declared in this scope
iAqua:7142: error: 'irsend' was not declared in this scope
iAqua:7162: error: 'irsend' was not declared in this scope
iAqua:7193: error: 'irsend' was not declared in this scope
iAqua:7213: error: 'irsend' was not declared in this scope
iAqua:7244: error: 'irsend' was not declared in this scope
iAqua:7264: error: 'irsend' was not declared in this scope

I have all the libraries in the ardiuno folder and they all show up in the IDE.

Any ideas, I see others have no issues, I'm using IDE v1.0.6


----------



## AnotherHobby

It's the IRremote library. The IDE can't find it. I just removed mine now as a test, and got the identical compile errors. Double check that it's in the correct spot and it's named correctly and all that. If you move it or anything, you need to quit and relaunch.

I've made a few code changes that I haven't updated here yet, so the line numbers are different, but this is my compile error list when I remove that library:


iAqua:144: error: 'IRsend' does not name a type
iAqua.ino: In function 'void loop()':
iAqua:710: error: 'irsend' was not declared in this scope
iAqua:711: error: 'irsend' was not declared in this scope
iAqua:712: error: 'irsend' was not declared in this scope
iAqua:713: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void processMyTouch()':
iAqua:3040: error: 'irsend' was not declared in this scope
iAqua:3058: error: 'irsend' was not declared in this scope
iAqua:3075: error: 'irsend' was not declared in this scope
iAqua:3092: error: 'irsend' was not declared in this scope
iAqua:3196: error: 'irsend' was not declared in this scope
iAqua:3197: error: 'irsend' was not declared in this scope
iAqua:3205: error: 'irsend' was not declared in this scope
iAqua:3206: error: 'irsend' was not declared in this scope
iAqua:3214: error: 'irsend' was not declared in this scope
iAqua:3215: error: 'irsend' was not declared in this scope
iAqua:3223: error: 'irsend' was not declared in this scope
iAqua:3224: error: 'irsend' was not declared in this scope
iAqua:3234: error: 'irsend' was not declared in this scope
iAqua:3253: error: 'irsend' was not declared in this scope
iAqua:3254: error: 'irsend' was not declared in this scope
iAqua:3255: error: 'irsend' was not declared in this scope
iAqua:3256: error: 'irsend' was not declared in this scope
iAqua:3277: error: 'irsend' was not declared in this scope
iAqua:3282: error: 'irsend' was not declared in this scope
iAqua:3287: error: 'irsend' was not declared in this scope
iAqua:3292: error: 'irsend' was not declared in this scope
iAqua:3327: error: 'irsend' was not declared in this scope
iAqua:3349: error: 'irsend' was not declared in this scope
iAqua:3371: error: 'irsend' was not declared in this scope
iAqua:3393: error: 'irsend' was not declared in this scope
iAqua:3415: error: 'irsend' was not declared in this scope
iAqua:3437: error: 'irsend' was not declared in this scope
iAqua:3459: error: 'irsend' was not declared in this scope
iAqua:3481: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void resyncLights()':
iAqua:5806: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void smartStartup()':
iAqua:6388: error: 'irsend' was not declared in this scope
iAqua:6401: error: 'irsend' was not declared in this scope
iAqua:6406: error: 'irsend' was not declared in this scope
iAqua:6419: error: 'irsend' was not declared in this scope
iAqua:6432: error: 'irsend' was not declared in this scope
iAqua:6437: error: 'irsend' was not declared in this scope
iAqua:6449: error: 'irsend' was not declared in this scope
iAqua:6462: error: 'irsend' was not declared in this scope
iAqua:6467: error: 'irsend' was not declared in this scope
iAqua:6479: error: 'irsend' was not declared in this scope
iAqua:6492: error: 'irsend' was not declared in this scope
iAqua:6497: error: 'irsend' was not declared in this scope
iAqua:6509: error: 'irsend' was not declared in this scope
iAqua:6522: error: 'irsend' was not declared in this scope
iAqua:6527: error: 'irsend' was not declared in this scope
iAqua:6539: error: 'irsend' was not declared in this scope
iAqua:6552: error: 'irsend' was not declared in this scope
iAqua:6557: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void checkLightFade(int, int)':
iAqua:7104: error: 'irsend' was not declared in this scope
iAqua:7124: error: 'irsend' was not declared in this scope
iAqua:7155: error: 'irsend' was not declared in this scope
iAqua:7175: error: 'irsend' was not declared in this scope
iAqua:7206: error: 'irsend' was not declared in this scope
iAqua:7226: error: 'irsend' was not declared in this scope
iAqua:7257: error: 'irsend' was not declared in this scope
iAqua:7277: error: 'irsend' was not declared in this scope


----------



## robsworld78

Thank-you, that was it, I removed all the libraries and installed them as .zip files and it worked out. 

I've loaded the images from "SD Card Images" to the sd card however there are only 5 images and one other file in that folder. When it comes on your splash screen shows up so I know the card is working because that file is in the folder.

The folder for png files has all the images but not raw format, is there a way to convert them to .raw? I renamed the dock from .png to .raw and loaded it, now it does show on the screen but all small dots because wrong format as its not really a raw file. I noticed others had issues with card formatting but nothing mentioned about converting images.


----------



## AnotherHobby

The iAqua.zip file contains all of the .raw images, so you shouldn't have to make them. There are 156 images in the SD Card Images folder. I know it's correct because others have posted images of their screens booting up all the way. I'd double check your files.


----------



## robsworld78

Ah I found them, they are in the webshare folder, I was in the main directory. I also notice the iAqua.ino file is larger in that folder. I'm assuming that's the most updated one, there are a couple iAqua.ino files in different folders.


----------



## rottison

AnotherHobby did you figure out where the stray voltage was coming from ?


----------



## AnotherHobby

After testing all of my tank equipment, it appears to be something fishy with the ground on the wall outlet I'm using, so it turns out it's unrelated to everything my tank or gear. Good and bad. Might be trickier to hunt down.


----------



## mistergreen

Yeah, my aquarium outlet had issues too. There was too much load on it especially with the lights. According to the fuse box, it shares the whole living room with the tv etc... The load caused surges to other outlets. I know this because exactly when the lights turn on, a switch in my stove goes crazy (bad stove/manufacturer)..

I moved the lights to another fuse/junction and that helped.


----------



## kman

mistergreen said:


> Yeah, my aquarium outlet had issues too. There was too much load on it especially with the lights. According to the fuse box, it shares the whole living room with the tv etc... The load caused surges to other outlets. I know this because exactly when the lights turn on, a switch in my stove goes crazy (bad stove/manufacturer)..
> 
> I moved the lights to another fuse/junction and that helped.


How much wattage are your lights pulling?


----------



## mistergreen

It think it's a culmination of devices but the lights are 54 x3 watts.

Other devices are 2 canister filters, a heater, a solenoid, timer device, another heater (another small aquarium), small filter, TV, computer, router, house lights etc... These potential are all on at the same time.

Sent from my iPad using Tapatalk HD


----------



## O2surplus

AH-

I noticed today while playing with the iAqua controller that a few of the screen icons(.raw files) don't appear when they're supposed to. I checked the screen image folder, and they're not there? Pump image (10test.raw) is missing and a few others associated with coloring the PWM channel buttons are missing too. Any ideas where they went?


----------



## mistergreen

-O2Surplus,
I was playing around with the TLC5940 to control the LDD-H. It turned out to be a PWM current sink instead of a current source. I can convert the signal to source with a pnp transistor but it's a hassle for multiple channels.

Do you know of a 12bit pwm current source chip?


----------



## AnotherHobby

O2surplus said:


> AH-
> 
> I noticed today while playing with the iAqua controller that a few of the screen icons(.raw files) don't appear when they're supposed to. I checked the screen image folder, and they're not there? Pump image (10test.raw) is missing and a few others associated with coloring the PWM channel buttons are missing too. Any ideas where they went?


That's odd. I looked at my zip file and it was definitely missing them. I've updated the file that's posted.


----------



## O2surplus

mistergreen said:


> -O2Surplus,
> I was playing around with the TLC5940 to control the LDD-H. It turned out to be a PWM current sink instead of a current source. I can convert the signal to source with a pnp transistor but it's a hassle for multiple channels.
> 
> Do you know of a 12bit pwm current source chip?



I think you're looking for this?http://www.adafruit.com/products/815

From the ADAfruit website-


It's an i2c-controlled PWM driver with a built in clock. That means that, unlike the TLC5940 family, you do not need to continuously send it signal tying up your microcontroller, its completely free running!
It is 5V compliant, which means you can control it from a 3.3V microcontroller and still safely drive up to 6V outputs (this is good for when you want to control white or blue LEDs with 3.4+ forward voltages)
6 address select pins so you can wire up to 62 of these on a single i2c bus, a total of 992 outputs - that's a lot of servos or LEDs
Adjustable frequency PWM up to about 1.6 KHz
12-bit resolution for each output - for servos, that means about 4us resolution at 60Hz update rate
Configurable push-pull or open-drain output
Output enable pin to quickly disable all the outputs
The data sheet is attached.


----------



## O2surplus

AnotherHobby said:


> That's odd. I looked at my zip file and it was definitely missing them. I've updated the file that's posted. Here's the link: iAqua.zip



Thanks- I'll update my files . I tested the dosing pump functionality of a few shields last night. The pumps work great, but the 12V/1A regulator gets taxed too much if it's powering the 8 power relay board at the same time. I'm going to move the relays to their own dedicated 12V supply for now, and then add an another 12V/1A regulator to the shield. 

On another note- Is there anyway that you could hard code some "example" or "placeholder" settings into the EEPROM section of the software ? The controller acts very "buggy" from the initial software flash, due to "old relic" info that may be contained in the EEPROM. 

LOL- I ran a EEPROM "clear" sketch on mine to prior to loading the iAqua code. Big mistake! The Mega accepted the iAqua code re-flash but the TFT/LCD would no longer function. I opened the serial monitor and found the code to be running normally. I figured that I'd "bricked" my LCD somehow, so I switched to another LCD but the problem persisted. Somehow that "EEPROM clear" sketch had jacked up my Mega, but I had no idea why?

I'm no computer expert, so I took a "stab in the dark" to undo the damage and found myself pleasantly surprised with the results!
Instead of "Clearing" the EEPROM, I decided to "FILL" it. I then re-flashed the Mega with the iAqua software and the TFT/LCD resumed working + all the "buggyness" was eliminated. All the initial settings appeared as numbers you'd expect from the get go and adjusting the settings to my liking was now straight forward. I hope this helps?


----------



## mistergreen

O2surplus said:


> I think you're looking for this?http://www.adafruit.com/products/815
> 
> From the ADAfruit website-


thanks.


----------



## scapegoat

this thing has taken off! ever since getting mine hooked up and running I've been super lazy on working on it. I've a short term freelance contract coming to an end this week, I think I need to spend a week on my controller and get another one started. It also seems I need to go back and read a bunch about the iAqua! holy moly


----------



## sua-88

amazing job mate !

can i use it here in europe, where the electric current is 220v ? 

or there is something to adapt in the software and hardware ?

when you'll finish the iAqua shield, will you sell it ?


----------



## kman

sua-88 said:


> amazing job mate !
> 
> can i use it here in europe, where the electric current is 220v ?
> 
> or there is something to adapt in the software and hardware ?
> 
> when you'll finish the iAqua shield, will you sell it ?


The iAqua itself runs on DC (12v, I believe) so your AC/DC adapters would handle most of the differences, no problems there. 12v DC is 12v DC no matter which side of the pond you're on. 

As long as the relay board can handle 220v, and you hook up Euro-style AC power outlets to be switched, I can't imagine there would be any problem.


----------



## AnotherHobby

O2surplus asked me how the screen dimming is supposed to work how it's wired, and in looking at my schematic it's a good question, because it won't work the way I documented it. I've updated the iAqua.fzz document to reflect the correct wiring. 

In the incorrect version I had one side going to the analog input and one side going to ground. That won't do anything. One side has to go to +5v with the other side going to analog input with a resistor tied to ground on the input side. I feel silly for documenting that wrong. Not sure what I was thinking.


----------



## rottison

I only had a short time to work on AH IAqua tonight before I left my lab but it is working and the touch screen is working for the few minutes I was going threw the menus it really did look sharp.

the feed button was acting up I think when I push it looks like it is going to a new page but then it goes back to the home page. Maybe because I don't have the rest of it setup or some thing not sure of the operation of it yet

and the clock after setting 24 hour time on the clock and setting the date then clicking on the SET button went back to the home screen and it still says the same old date and time some thing like January 1 2000 or some thing I will work on it more tomorrow. but that is where I am at for now just starting out but so far it looks like a very nice setup just wish it was on a bigger screen


----------



## O2surplus

Made some progress with my iAqua controller today. I purchased a cheap 8 outlet "DJ" style power strip and set about to modify it to accept the 8 opto-isolated relay assembly, and a modified 12V "walwart" style power supply to feed 12V to the relays. The smaller power supply pulls A/C directly from the mains feed, and negates the need to tap the 12V regulator on the iAqua shield for any more current. I'm planning to install DB9 connectors at the power strip and controller to provide a clean connection between the two. I'll post some pictures tomorrow.


----------



## rottison

what name brand/kind did you get all the ones I have seen are rack mount for sale under $35 usd


----------



## STReNT

If you're in the states, have a look at the Chauvet SR8

I bought one hoping to swap out the outlets to AU style ones, but unfortunately the outlets are too close together to fit the fat standard AU plugs


----------



## O2surplus

Here's some photos of my nearly completed iAqua controlled power distribution center. The Relays are set up to control each power outlet _if_ the power switch is in the "ON" position.


It's a tight fit in there- LOL
The relay pcb has 1/4" steel standoffs installed at each corner to prevent the PcB from shorting against the power box's metal housing.










Here's a close up view-
The switched "hot" lead to each outlet has been replaced and routed through the NO contacts of each relay.










Here's a close up showing the 12V walwart power supply that's installed to provide power to the 12V relay board. The 12V supply is wired in to the Mains feed and will power up anytime the power center is plugged in. I added a dedicated ground wire to the 8 wire signal bundle to provide a signal return connection back to the iAqua controller.










I just finished testing everything and other than discovering that the AUX1 relay doesn't function (power indicator lights "on", but no "click" from the relay) I'm really happy with it.


----------



## AnotherHobby

That is tight, but dang, nice work!


----------



## theknight

Nice job, I need to get back on mine!


----------



## O2surplus

AnotherHobby said:


> That is tight, but dang, nice work!





theknight said:


> Nice job, I need to get back on mine!


Thanks Guys!

I went to Fry's Electronics today looking for the materials needed to build DB9 cable connections between the Outlet Power/Relay Box and the iAqua controller. Stood there in the isle for what seemed an eternity, suffering from "Sensory Overload" while staring at all of the various cables and connectors. I had an idea of what is was looking for, but couldn't, for the life of me, find any of it. I left the store empty handed, after deciding that I needed to learn a bit more about DB9 cables and such. Went home, fired up the old laptop, and within a few minutes on FleaBay, had everything that I needed being delivered for $20!
I found and ordered one Male and one Female DB9 Connector "Breakout board" and a 10' male/female DB9 Cable. Just gotta wait a few days for the mail man, then more forward motion on this project. :hihi:


----------



## rottison

looking good.. just want to know where under the tank is that going to go.:hihi: that is what I was just asked when I showed it to the wife


----------



## O2surplus

rottison said:


> looking good.. just want to know where under the tank is that going to go.:hihi: that is what I was just asked when I showed it to the wife


LOL- My 225 has plenty of room under the stand. My wife commented once - "It's so big, you could hide a body under there". Heck- when my kids where still little, on certain occasions (mainly when they were in trouble) I could find them hiding in there. :hihi:


----------



## kman

That's really nice work on the power distribution block, there.  That would even fit in the tight space under my tank! Just mount it to the underside of the shelf, for a nice, clean installation. If you have lots of room in a dedicated tank stand with sidewalls, it could mount there, easily, too. (inside or out)


----------



## rottison

when I was looking that unit up on are favorite auction site there was one cheap with db9 male and female plug plus some kind of head unit that controls it like a relay pack that was going cheap


----------



## robsworld78

I've been playing with the code for iAqua which I have to say is very well documented, thanks for that! I'm actually planning on redoing it on a 5" display and adding a few things to it. The thing I really don't like is the speed of the mega2560 and going with larger graphics will only make it worse, so I ordered a DUE and was going to redo it on there however my board just locked up on me for no reason so I think it's toast. To be honest don't know if I could do it anyways, I was having lots of issues with that DUE and libraries. It would have taken a very long time.

So I fired up the mega2560 with 5" screen again and it was a disappointment after playing with the due. I remembered reading that the UTFT library isn't very well optimized because it works for so many displays and others were somehow modifying it for there displays to speed it up. I saw some with bitmap loading speeds quicker than the DUE. :icon_eek: Of course that library didn't work on my display. So I kept trying libraries and actually found one much quicker. 

*Before speeds:*
209960 us : clrScr
180 us : DrawPixel
1784 us : DrawPixel x 10
8 us : SetColor
8 us : SetBackColor
11776 us : FillRoundRect 40x40
1868 us : DrawRoundRect 40x40
3676 us : drawLine 40x40
380 us : draw Vertical Line 40
388 us : draw Horizontal Line 40
1724 us : FillRect 40x40
8 us : SetSmallFont
6996 us : Print 001
6732 us : Print Abc
6984 us : printNumI(123)
8 us : SetBigFont
12920 us : Print 001
13040 us : printNumI(123)
10672 us : draw bitmap 32x32
28 us : Touch Screen DataAvailable
960 us : Touch Screen Read
116 us : Touch Screen getX, getY
finish in 304336 us.

*After speeds:*
209896 us : clrScr
20 us : DrawPixel
196 us : DrawPixel x 10
12 us : SetColor
8 us : SetBackColor
5844 us : FillRoundRect 40x40
628 us : DrawRoundRect 40x40
800 us : drawLine 40x40
144 us : draw Vertical Line 40
144 us : draw Horizontal Line 40
1648 us : FillRect 40x40
8 us : SetSmallFont
2376 us : Print 001
2380 us : Print Abc
2648 us : printNumI(123)
8 us : SetBigFont
4548 us : Print 001
4648 us : printNumI(123)
2372 us : draw bitmap 32x32
20 us : Touch Screen DataAvailable
956 us : Touch Screen Read
120 us : Touch Screen getX, getY
finish in 257812 us.

It's really easy to change too, all you have to do is replace the files in the UTFT library folder and upload the sketch to the mega again. When it loads up you should see an improvement.

You can download it here


----------



## AnotherHobby

From looking at the timing you posted, that like a nice speed bump! I'll have to try this out as soon as I have some time. Thanks!


----------



## robsworld78

I got those numbers from a bench sketch in the download. Ran it with both versions and that's what it says. I loaded a 800x480 image and with the old it took about 5.8s with the optimized it took about 3.5s and that's using your sketch.

I don't have a 3.2" screen yet, still waiting on China mail so its hard for me to compare on the actual program but I think I see an improvement, for sure it is quicker based on a full size image. Also the draw bitmap time is only using the UTFT, its not measuring an image from the SD card so you won't see the 4x increase the numbers show. I've been trying different methods to access the SD card, they work but haven't seen any improvements on speed.

Either way you'll know if there's an improvement, let me know.


----------



## PhysicsDude55

robsworld78 said:


> I've been playing with the code for iAqua which I have to say is very well documented, thanks for that! I'm actually planning on redoing it on a 5" display and adding a few things to it. The thing I really don't like is the speed of the mega2560 and going with larger graphics will only make it worse, so I ordered a DUE and was going to redo it on there however my board just locked up on me for no reason so I think it's toast. To be honest don't know if I could do it anyways, I was having lots of issues with that DUE and libraries. It would have taken a very long time.
> 
> So I fired up the mega2560 with 5" screen again and it was a disappointment after playing with the due. I remembered reading that the UTFT library isn't very well optimized because it works for so many displays and others were somehow modifying it for there displays to speed it up. I saw some with bitmap loading speeds quicker than the DUE. :icon_eek: Of course that library didn't work on my display. So I kept trying libraries and actually found one much quicker.
> 
> It's really easy to change too, all you have to do is replace the files in the UTFT library folder and upload the sketch to the mega again. When it loads up you should see an improvement.
> 
> You can download it here


How are you loading the SD card bitmaps with the Due? I'm running a 4.3" screen (480x277) using the Due, and I could not get the UTFT SD card libraries to work, and they are listed as not being compatible with the Due.

I did find a workaround, but like you said, it was very slow.

What I ended up doing is just loading all the icon bitmaps into the sketch itself. The Due has 512k of sketch space, which is good for about 100 ~60x60 icons, plenty of room for all the icons in iAqua. I have a pretty involved GUI made, with about 80 icons, ~25 display pages, and 4500 lines of code, and I'm still only at 75% storage capacity on my Due.

I found that you can't really put any bitmaps that are really big, like the size of the entire screen, but there's not much of a reason to do that, all the GUI interface that I designed, and what I've seen of iAqua, is just a combination of icons and text on a black background.

My display loads REALLY quickly. On raw drawing/computing power (no bitmaps or SD cards involved), the Due is at least twice as fast as the Mega at drawing, and even with a screen using lots of shapes and icons, my Due draws every screen with virtually no noticeable delay. Its mostly limited by my ability to efficiently write code for the display (making sure things aren't redrawn all the time, polygons not overlapping, etc).

I originally bought a 7" LCD screen, but realized that 480X800 pixels was just too much for an arduino to handle to my liking, and found the 4.3" a good compromise, as the screen is about the size of a large android phone.


----------



## O2surplus

robsworld78 said:


> I've been playing with the code for iAqua which I have to say is very well documented, thanks for that! I'm actually planning on redoing it on a 5" display and adding a few things to it. The thing I really don't like is the speed of the mega2560 and going with larger graphics will only make it worse, so I ordered a DUE and was going to redo it on there however my board just locked up on me for no reason so I think it's toast. To be honest don't know if I could do it anyways, I was having lots of issues with that DUE and libraries. It would have taken a very long time.
> 
> So I fired up the mega2560 with 5" screen again and it was a disappointment after playing with the due. I remembered reading that the UTFT library isn't very well optimized because it works for so many displays and others were somehow modifying it for there displays to speed it up. I saw some with bitmap loading speeds quicker than the DUE. :icon_eek: Of course that library didn't work on my display. So I kept trying libraries and actually found one much quicker.
> 
> https://onedrive.live.com/redir?resid=CA0B90EFF71CE1E0!230&authkey=!AD0yBT6OfvveIcA&ithint=file,zip


I just finished swapping in the that new UTFT library and the screen icons now load noticeably faster. Nice work!


----------



## robsworld78

Glad to hear its faster.

PhysicsDude55, it was difficult to get the DUE to load .raw from the SD card. I ended up using the a modded UTFT and UTFT_tiny library and the SDFat library. With that setup I was able to load a full screen image in about 1s. The library I added above may work with the DUE, if it complies it should be ok.

Here's a link to the libraries you need.

We probably shouldn't use this thread to discuss getting it working on the DUE.

I plan to add a few features if I can and would like the extra space so I went with the 5", it has 800x480 and the mega2560 has the juice to power it with USB. I have a blackberry with a 3.2" and I hate that thing. 

The DUE has no eeprom so you need to write to flash using a specific library. I was playing with that when my due mysteriously quit working. There was a couple other libraries this controller uses but I wasn't able to find them yet for the due.

I'm happier with the speed, hopefully I can increase it more, so I'm gonna stick with the mega2560, it will be much easier as I can use more of AH's code and when its done it will be fully compatible with everyone elses so if they wish they can upgrade to a 5" screen easily.


----------



## ua hua

I have been following this thread and while I have to admit 90% of it's over my head I admire all of you guys ingenuity and skill. I would burn the house down if I attempted anything like this so I will just sit back and admire all your handy work and hope someday that maybe one of you will start to produce these to sell. 


:iamwithst


----------



## AnotherHobby

ua hua said:


> I have been following this thread and while I have to admit 90% of it's over my head I admire all of you guys ingenuity and skill. I would burn the house down if I attempted anything like this so I will just sit back and admire all your handy work and hope someday that maybe one of you will start to produce these to sell.


Well, I don't see myself ever producing these. That's a lot of work and I don't need the income. This is a big project though, and it's a lot to take on, so I get why people would love to just buy it.

I think you should build a simple project to try the whole DIY electronics thing out. It's super cheap to play around, and you can make your Ecoxotic light do beautiful fades (youtube video coming). It should cost you less than $30. All you need is an Uno (the knockoffs are cheaper) and a few parts. He's one for $11 from China that'll take 3 weeks, or one from Amazon for $14 that will come quick. Then just get an IR led, a 150Ω resistor, a 5v power supply, and a DS1307 RTC. Put it together following the Current Sat+ Arduino controller thread. From there I have all of the code for a stand-alone uno project to fade an Ecoxotic light.


----------



## AnotherHobby

First I'll apologize for cross-posting this video in a few threads, but it fits in 3 places (this thread, my tank journal, and the e-series club). The video below is a time-lapse of the fading and ramping that the iAqua controller does with the Ecoxotic E-series light every night. The morning fade is the same, but in the reverse direction.

It's a 3 hour time lapse, with the first 1/3 being the fade from high sun to mid sun, and the middle 1/3 is from mid sun to low sun, and then the last third is from low sun to moonlight. One photo was taken every 12 seconds, so there are a few lighting "jumps" in the video where more than 1 lighting step was taken in a 12 second period between frames. 

The exposure is manual since it's a time lapse, or else you get jitter. The downside is that it's a little over exposed in the beginning, and a little under exposed at the end, but that's how it works. Also, I had to choose a fixed white balance. As such, the white balance is pretty spot on in the beginning, but slightly exaggerates the warmth and reds as the fade progresses. It's not a huge exaggeration, but it's definitely redder and warmer than how it looks in person.

I also recommend going full screen (the moonlight is hard to see if you aren't in full screen) and selecting 1080p in the the little frame below.


----------



## kman

AnotherHobby said:


> Well, I don't see myself ever producing these. That's a lot of work and I don't need the income. This is a big project though, and it's a lot to take on, so I get why people would love to just buy it.
> 
> I think you should build a simple project to try the whole DIY electronics thing out. It's super cheap to play around, and you can make your Ecoxotic light do beautiful fades (youtube video coming). It should cost you less than $30. All you need is an Uno (the knockoffs are cheaper) and a few parts. He's one for $11 from China that'll take 3 weeks, or one from Amazon for $14 that will come quick. Then just get an IR led, a 150Ω resistor, a 5v power supply, and a DS1307 RTC. Put it together following the Current Sat+ Arduino controller thread. From there I have all of the code for a stand-alone uno project to fade an Ecoxotic light.


I'm in the process of throwing together an "Arduino Sat Plus Controller for Dummies" tutorial, with detailed step-by-step instructions and photos. It'll be in the Arduino controller thread. I'm nearly done, and should be ready to post it in the next day or two.

I agree with you, if someone gets through that simpler, cheaper controller without any major issues, they'll either be good to with the iAqua, or at least have a better idea of what'll be involved. Plus, it's inexpensive and handy to have. 

Oh, and great video!


----------



## AnotherHobby

kman said:


> I'm in the process of throwing together an "Arduino Sat Plus Controller for Dummies" tutorial, with detailed step-by-step instructions and photos. It'll be in the Arduino controller thread. I'm nearly done, and should be ready to post it in the next day or two.


Funny! I'm working on something similar for the e-series, but won't be done for a while. I'm waiting on some parts to show up.


----------



## kman

AnotherHobby said:


> Funny! I'm working on something similar for the e-series, but won't be done for a while. I'm waiting on some parts to show up.


Should we coordinate our efforts?


----------



## AnotherHobby

kman said:


> Should we coordinate our efforts?


I don't know... that's up to you if you want to wait. Mine is specifically for the e-series. Due to it's superior IR and digital readout telling you the RGB values, I'm able to do more with it, more easily, and more reliably. Much of what I'm doing directly relates to the Sat+, but there is a lot that doesn't. Hardware is identical though. Best not to clutter up this thread with that project though. Shoot me a PM if you want more details.


----------



## sua-88

Very interresting guys, I am impatient about this project !

but I didn't find any informations in this thread about the action from the ph reading ?
Can the iAqua code turns on/off the co2 solenoid valve from the Ph reading ?
can we set a desired ph level, and the iAqua system does the rest ?

or maybe I am dreaming ? but please let me know.

but anyway, I love what you are doing guys, this what I was dreaming about since a long time


----------



## AnotherHobby

No support for PH in this project. You could add it yourself if you know your way around code and the arduino.


----------



## rottison

guess I have extra ph stamp


----------



## O2surplus

I just finished building my version of the iAqua Controller. I'll post some pictures of the Controller and all the peripheral components tomorrow. Everything's been tested and is functioning perfectly! I would have finished it earlier, but I had to diagnose and repair the Optocoupled Relay board first. Relays #6 & 7 weren't switching "on", when triggered by the controller. I found that the 10K ohm "pull down" resistors, associated with the affected optocouplers, were pulling just enough current from the circuit to keep the relay coils from energizing enough to pull the contacts. I swapped the 10K resistors for a couple of 22K resistors and the relays now work correctly.
I can't hardly wait to install this thing on my tank! Even my wife digs it! LOL:smile:


----------



## AnotherHobby

O2surplus said:


> I just finished building my version of the iAqua Controller. I'll post some pictures of the Controller and all the peripheral components tomorrow. Everything's been tested and is functioning perfectly! I would have finished it earlier, but I had to diagnose and repair the Optocoupled Relay board first. Relays #6 & 7 weren't switching "on", when triggered by the controller. I found that the 10K ohm "pull down" resistors, associated with the affected optocouplers, were pulling just enough current from the circuit to keep the relay coils from energizing enough to pull the contacts. I swapped the 10K resistors for a couple of 22K resistors and the relays now work correctly.
> I can't hardly wait to install this thing on my tank! Even my wife digs it! LOL:smile:


Awesome!! Can't wait to see it!


----------



## ZooKeepersMenagerie

Holy Moly, I want one!


----------



## Ultimbow

Where are those picture O2??? [emoji12]


----------



## lowrez

Hi guys! I've got a iAqua shield off O2surplus and I'm starting to assemble all the parts for my build. I'm trying to roll my own lighting using a Beamswork light and some SMD 5050 RGB Led strips for color. I've found the IR codes for the LED strips, and I think I could modify the sketch to fire off commands to it, how hard would it be to modify the code to also do PWM dimming for the whites on the Beamsworks?

Thanks so much for sharing your work, following along has been a lot of fun and I'm learning a bunch. 

O2 post the build pics! If it's got the *Wife Acceptance Factor* it has to be good!


----------



## O2surplus

You guys are killing me! This is a work in progress LOL. I haven't finalized the install, so all the components are merely placed and connected to see how/if it all works. I'm starting to wish I had a smaller tank though, as "cable management" is a real pita on a large tank.

To start off- Here's a photo of the finished controller, dosing pump, and relay controlled power strip. I housed the controller in an aluminum project box and finished the display with a nice plastic bezel that I found at Sparkfun. The controller connects to it's power supply using a 2.1mm barrel connector, and to the dosing pump, relay controlled power strip, and to the led drivers using custom built DB9 cables and connectors.












Here's a shot of the cables. I built the cables to only connect between specific components, that way they're "idiot proofed". Cable #1 has Male/Female ends. Cable #2 has Male/Male ends. Cable #3 has Female/Flying leads.











Here's a shot of the controller mounted next to my Ph controller. I'm not set on this being it's permanent home....but it will do for now.










Here's a shot of the dosing pumps. They're mounted to the underside of the tank using high strength Velcro. I've got the Macro ferts connected now. Gotta get another container for the Micros to finish it up.











Finally- here's a few shots of my tank. LOL I've been meaning to do a full re-scape using new plants, but no matter how many times I rip the existing plants out, THEY KEEP COMING BACK! 

































That's it for now.


----------



## lowrez

Awesome!!! Great job man!


----------



## Ultimbow

Realy like the screen box and how clean it look. Nice job!


----------



## O2surplus

Thanks guys. Here's a link to the screen bezel that I used-https://www.sparkfun.com/products/12717

I just finished connecting the iAqua controller to my leds. Gotta get AH to do something to speed up the adjustment process LOL. It takes damn near forever to adjust 4 channels of lighting to step 255, with only 1 step per second. Thought my arm was going to fall off- LOL:hihi:


----------



## theknight

Your bezel and screen next to the PH controller make the PH controller look like the amateur project, great job:icon_excl


----------



## rottison

looks good 02 got to tell you looks great. I am going to put mine in a card board box and just put it away now.


----------



## O2surplus

rottison said:


> looks good 02 got to tell you looks great. I am going to put mine in a card board box and just put it away now.



LOL- Card board box? You're Beta tester #1. Get busy!:biggrin:


----------



## robsworld78

O2surplus said:


> I just finished connecting the iAqua controller to my leds. Gotta get AH to do something to speed up the adjustment process LOL. It takes damn near forever to adjust 4 channels of lighting to step 255, with only 1 step per second. Thought my arm was going to fall off- LOL:hihi:


Nice clean look, good job! I'm redoing the iAqua for the 5" screen and trying to improve it with a few extra features I want. I'm about 60% done re-sizing it and yeah I didn't like the buttons for the value changes either. One thing you can do is lower the value on the following line, its around line 667 near the top of the void() loop.



Code:


if (currentMillis - prevMillisTouch > 500) // make sure it's been .5 sec between touches

Change it to 100 or 200, that will make a big difference.

On this version I've added sliders and 2 extra channels. The original 4 should still work with the Satellite+.


----------



## O2surplus

robsworld78 said:


> Nice clean look, good job! I'm redoing the iAqua for the 5" screen and trying to improve it with a few extra features I want. I'm about 60% done re-sizing it and yeah I didn't like the buttons for the value changes either. One thing you can do is lower the value on the following line, its around line 667 near the top of the void() loop.
> 
> 
> 
> Code:
> 
> 
> if (currentMillis - prevMillisTouch > 500) // make sure it's been .5 sec between touches
> 
> Change it to 100 or 200, that will make a big difference.
> 
> On this version I've added sliders and 2 extra channels. The original 4 should still work with the Satellite+.



Holy Cow! A 5" screen, 6 led channels, & sliders instead of buttons. This is gonna be good. I can't wait to see it when you're finished.:icon_smil


----------



## rottison

I will soon,. just need a box to put it in and some free time


----------



## robsworld78

I can't wait to finish it but it will probably be a month. I'm very happy with the sliders, it seems nobody uses them. It took longer to make those then add the 2 extra channels. I'm also adding the code so a person can use up to 4 dosing pumps and the dose amount can be different for each pump. Also hoping to add lightning, clouds and lunar. Thanks AH for giving me a project.


----------



## kman

Looking great, O2! How did your custom shields work out? I'd love to see an inside shot in that case. 

I can't wait to get mine up and running, too! Although my Arduino-based Sat+ controller has taken the worst of the urgency away, I still really want to get my dosing pumps up and running, so the only thing I'll need to do daily is feed the fish...


----------



## O2surplus

kman said:


> Looking great, O2! How did your custom shields work out? I'd love to see an inside shot in that case.
> 
> I can't wait to get mine up and running, too! Although my Arduino-based Sat+ controller has taken the worst of the urgency away, I still really want to get my dosing pumps up and running, so the only thing I'll need to do daily is feed the fish...


The shield was a definite help. The only real defect in the design was the mis-routed ambient light sensor. A little green wiring could fix that issue though. I'll pop the case open in a day or two an give you some shots of the interior. It's mainly a few short wiring harnesses, the Mega, the TFT LCD, the iAqua shield and not much else. LOL


----------



## AnotherHobby

There are some seriously awesome updates here. O2surplus, it's very cool to see the controller in somebody else's invented and engineered physical design. It's looks great, and that bezel really polishes it off. The connectors are slick too.

robsworld78 — holy crap man! That blows me away! You did a fantastic job of extending the look and feel of the GUI to a larger format, and with different controls. That looks awesome, and I love the sliders! It'd be cool to see a vid when you are done.

Regarding lowering the touch timer, I had set that prevMillisTouch gap there because I was getting double touch events, but I chose an arbitrarily high number during testing. That would really cripple a slider, and I'm sure also slows down the interface quite a bit on any edit screen when holding down a button. You should be able to speed it up quite a bit without registering double touch events. I set that value early on and never tried to fine tune it. I'll have to play around with that now. 

EDIT: I just realized why it's set that high. It was to keep from sending IR commands to a Current Sat+ light too quickly. If you hold down one channel (white, red, green, or blue), and it repeats too fast and sends IR to the light to lower those values, it'll lock up the light, or it the light will miss commands. The light can't handle IR very quickly (unlike the ecoxotic E-Series). Unlike direct PWM access, the communication with the light over IR is quite slow and not perfectly precise.


----------



## PhysicsDude55

I like setting a different delay for each button I program. You do have to remember to insert a button delay into every piece of code that a button activates, but that way you can have little or no delay on a slider, and longer delays on navigation and toggle buttons, etc.




Code:


if (currentMillis - prevMillisTouch > buttondelay)
{

if(button1pressed == TRUE) buttondelay = 100;

if(button2pressed == TRUE) buttondelay = 200;

}


----------



## robsworld78

I'll definitely post a video when I'm finished, still quite a bit to go, I can really appreciate all the hard work you put into this. Just doing the GUI is a lot, I've had to redo all the images because they go blurry when making them bigger. Thankfully I can use most of your code with some tweaking. With the 800x480 pixels there's a lot of room to make improvements and not to much where the screen is empty.

Now that I know you need the delay for the Satellite+ I might have to strip that out of the code as its impossible for me to test it.



PhysicsDude55 said:


> I like setting a different delay for each button I program. You do have to remember to insert a button delay into every piece of code that a button activates, but that way you can have little or no delay on a slider, and longer delays on navigation and toggle buttons, etc.[/code]


I plan to do exactly that so the sliders have no delay and buttons still have something. I would like to do that to the Satellite+ code but I wouldn't be able to split it from the PWM code without proper testing.


----------



## AnotherHobby

PhysicsDude55 said:


> I like setting a different delay for each button I program. You do have to remember to insert a button delay into every piece of code that a button activates, but that way you can have little or no delay on a slider, and longer delays on navigation and toggle buttons, etc.


That is an excellent idea.


----------



## O2surplus

Thanks for the help guys!  I dropped the touch delay from 500ms to 100ms and couldn't be happier with the result. Adjustments are now easily made in just a few seconds rather than minutes LOL.

Here's a little iAquaPorn for "Kman"


----------



## kman

O2surplus said:


> Thanks for the help guys!  I dropped the touch delay from 500ms to 100ms and couldn't be happier with the result. Adjustments are now easily made in just a few seconds rather than minutes LOL.
> 
> Here's a little iAquaPorn for "Kman"












:bounce:

roud:

I can't wait!

One question: How do you actually have your IR LED emitters and receivers positioned?


----------



## O2surplus

kman said:


> :bounce:
> 
> roud:
> 
> I can't wait!
> 
> One question: How do you actually have your IR LED emitters and receivers positioned?



LOL- I didn't have a need for the ambient light sensor or the IR transmitter in my build. I'm using the iAqua controller to control my custom built 5 channel led drivers that accept PWM not infrared.


----------



## kman

O2surplus said:


> LOL- I didn't have a need for the ambient light sensor or the IR transmitter in my build. I'm using the iAqua controller to control my custom built 5 channel led drivers that accept PWM not infrared.


Ah, gotcha.

Shoot, I'm hunting for more examples of successful installs so I can figure out the most effective (and attractive) mounting methods for IR...


----------



## jmh474

i love this project, iv got all the bits in my ebay basket all ready, one thing i am thinking of is i might change one of the dosing pump into an aquarium feeder just for more automation im just trying to think of a way thanks again for my new project, also im not shore how the led part works? as with the connections for the led's there is no ground or am i missing something are the WBGR just control for brightness if so how would this be set up thanks, also i dont know if you would really want to right all this up again but this would make a grate instructables - http://www.instructables.com/about/submit.jsp - even enter a CONTEST and see how you get on


----------



## O2surplus

jmh474 said:


> im not shore how the led part works? as with the connections for the led's there is no ground or am i missing something are the WBGR just control for brightness if so how would this be set up?


The WBGR connections only provide the +5V PWM signal to your led drivers. It's not shown in the wiring diagram, but you'll need to provide a Negative or ground connection from the drivers to the Mega to make the circuit function correctly.


----------



## Bruce6000

Cool little project. It blows my mind some of the things people are doing with Arduino. Very kind of you to share your code and great write-up:thumbsup:


----------



## jmh474

O2surplus said:


> The WBGR connections only provide the +5V PWM signal to your led drivers. It's not shown in the wiring diagram, but you'll need to provide a Negative or ground connection from the drivers to the Mega to make the circuit function correctly.


is there a drawing some where to help me along please










would this work?


----------



## kman

Will iAqua run on an Uno, or does it require a Mega? (I ask only because of jmh474's post above; I have a Mega and Mega has been discussed since the start, I believe)

Also, jmh474: Should your RGB lights be connecting to the Hot power line, as depicted in your wiring diagram there? I'm not looking that closely, but I would think the black line would connect to the ground, and the PWM lines would supply the + power.


----------



## O2surplus

jmh474 said:


> is there a drawing some where to help me along please
> 
> 
> 
> would this work?


If you intend to drive WRGB strips, then the photo/diagram you posted should work. Just remember that this project is using a MEGA, not an UNO. If you intend to control actual led drivers, i.e. Meanwell LDD's ect.., then all that additional circuitry is not needed. The PWM signals from the MEGA and proper ground side connections will be all that's needed.


----------



## AnotherHobby

kman said:


> Will iAqua run on an Uno, or does it require a Mega? (I ask only because of jmh474's post above; I have a Mega and Mega has been discussed since the start, I believe)


Not a chance. The code is 117K I think, and an Uno only holds 32K. There is no way there is enough SRAM either (2K in the Uno vs 8K in the Mega). Creating any form of user interface uses a lot of memory. Furthermore, this project requires a ton of IO pins. The price difference is only $4 anyway (when purchasing the chinese brands).


----------



## jmh474

ok so i come across this little number what do people think to this then


----------



## PhysicsDude55

jmh474 said:


> is there a drawing some where to help me along please
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> would this work?


Close, you have a few wires in the wrong spots, but I think your mind is in the right place.

Here's a really good tutorial on how to power RGB LEDs from an arduino:

https://learn.adafruit.com/rgb-led-strips

And the relevant diagram:












kman said:


> Also, jmh474: Should your RGB lights be connecting to the Hot power line, as depicted in your wiring diagram there? I'm not looking that closely, but I would think the black line would connect to the ground, and the PWM lines would supply the + power.


The commonly used N Channel MOSFETs for high power switching (fading LEDs) controls the ground leg, not the hot leg. An arduino can only supply ~30 mA of 5V power, which is plenty for a single LED for an indicator or some such, but for something more beefy, you're basically using the PWM as a control circuit to control the current flow through the ground leg of the LED via a transistor.

I recommend putting a 1K resistor inline with the PWM output.










This guy will certainly work, and will make it a lot easier to do the RGB hookup. These things used to be a lot more expensive, but for how cheap they are now, its a good idea to use them just for the sake of saving time and making the wiring cleaner.

Only downside is you have to wait a month for them to ship from overseas.


----------



## jmh474

thanks PhysicsDude55 ill be ordering the parts very soon ill be going with the RGB amp


----------



## kman

PhysicsDude55 said:


> The commonly used N Channel MOSFETs for high power switching (fading LEDs) controls the ground leg, not the hot leg. An arduino can only supply ~30 mA of 5V power, which is plenty for a single LED for an indicator or some such, but for something more beefy, you're basically using the PWM as a control circuit to control the current flow through the ground leg of the LED via a transistor.
> 
> I recommend putting a 1K resistor inline with the PWM output.


You're totally right, I was looking at it more as an LED circuit. 

Good info, thanks so much! Although hopefully I won't need to figure out any PWM + mosfet circuits anytime soon, because I have a long way to go before I really understand mosfets and transistors...


----------



## rottison

02 I have a question? I am putting mine in just a simple black plastic project box from RadioShack the large size. I have the iAqua sideways on one end and the relays on the other I know tight fit. My plan is using small pieces of wire from iAqua about 3 inches to go to the relay control side and I will power the 12v from external power not from arduino next on the com N/c-N/O side of the relay I am going to use head phone plugin jack 1/8" (3.5mm) mono mini jack put 8 of them going down the end with the relays so I can wire the males to plug in using heavier wire same thing I am going to do from the relay to the plugs all this sound good?? I was thinking Molex to but then case mount one's wiggle a lot and I don't want some one to push it threw plugging in a cable.


----------



## O2surplus

rottison said:


> 02 I have a question? I am putting mine in just a simple black plastic project box from RadioShack the large size. I have the iAqua sideways on one end and the relays on the other I know tight fit. My plan is using small pieces of wire from iAqua about 3 inches to go to the relay control side and I will power the 12v from external power not from arduino next on the com N/c-N/O side of the relay I am going to use head phone plugin jack 1/8" (3.5mm) mono mini jack put 8 of them going down the end with the relays so I can wire the males to plug in using heavier wire same thing I am going to do from the relay to the plugs all this sound good?? I was thinking Molex to but then case mount one's wiggle a lot and I don't want some one to push it threw plugging in a cable.



Sounds good to me- just remember to tie the ground side of your external 12V power source back to the ground plane of the iAqua PcB, and you should be all set. ( :hihi: Another "missing ground connection" averted -LOL )


----------



## jmh474

So has any one looked into adding a ph probe, iv not really got a clue on programming but im good with the electrical side of things like fowling instructions lol i have also been thing of turning one of the dosing pumps into a aquarium feeder instead but iv not got a clue where to start any one got any advice for me also this will be my first arduino project so talk to me like im a newbie thanks


----------



## rottison

Isn't there all ready a feeder in this sketch? I thought there was ?? if not easy fix just use one of the AUX pins and use the Ehiem feeder, it takes 3.3V to run it so you will either need to power it from an old low what phone charger or get one from a junk store if you don't have one and just hook it to the battery pos and neg then pop the case and take the circuit board out nd turn it over you will have to look at it a bit but you will find the motor control solder pads. Solder a wire to each of them and when you touch them together the drum should rotate one time. if you need I can dig up a pic of it for you. but I don't have the code for it.

Credit for this goes to TheDOdblG good guy.


----------



## jmh474

oh has it ill have another read through


----------



## O2surplus

rottison said:


> Isn't there all ready a feeder in this sketch? I thought there was ?? if not easy fix just use one of the AUX pins and use the Ehiem feeder, it takes 3.3V to run it so you will either need to power it from an old low what phone charger or get one from a junk store if you don't have one and just hook it to the battery pos and neg then pop the case and take the circuit board out nd turn it over you will have to look at it a bit but you will find the motor control solder pads. Solder a wire to each of them and when you touch them together the drum should rotate one time. if you need I can dig up a pic of it for you. but I don't have the code for it.
> 
> Credit for this goes to TheDOdblG good guy.


The "fish feeder" function in the iAqua Controller isn't for controlling an automatic fish feeder. It only provides a user defined time frame that the main pump, power heads or whatever other devices you desire will be turned "OFF" while the fish feed. I'm sure with a few additions to the code, you could add automatic feeding to the controller's repertoire. You've got one of my shields. The extra digital or analog pins that you'll need are already broken out for your use, so it shouldn't be too difficult to add the additional feature.


----------



## AnotherHobby

The feeding function I wrote is not to run a feeder, but it would be very easy for you to add that. What it does is turn off any power outputs you don't want on when you feed (filter, CO2, heater, circulation pump, surface skimmer, etc), and then keeps them off for however long you configure it for. 

All you'd have to do is add a trigger for your feeder (however you would trigger that) in the feeding code.

Edit: I see O2 beat me to the punch.


----------



## HunterX

I'm doing that exact operation in my code. Too easy!!! Took apart a old auto feeder and wired it to the arduino through a transistor. Works like a charm. All my pumps stop 30 seconds before it feeds letting everything settle. The pumps stay off for 4 mins while the fish feed and then everything resumes as normal.


----------



## robsworld78

I'm adding the UTC timezone offset to the GUI so a person doesn't need to change it in the code.

It's clearly needed in the smartStartup() procedure however I don't see that it makes any difference what its set to. The timestamp to the serial monitor changes but my schedules all still fire up the same.

The smartStartup() procedure does what it should for the most part but I'm not able to find out why changing the UTC offset doesn't affect the schedules like it should according to the code.

For example if its 9pm and I have a schedule due to shut off at 10pm I can set the UTC offset to anytime and it still won't shut off until the clock says 10pm with a reboot. I thought if I changed UTC from -7 to -5 it should be 11pm according to the smartStartup() procedure (even though clock still shows 9pm) and the lights shouldn't turn on during that set schedule anymore when the mega is fired up, unless I'm misunderstanding something? I understand the smartStartup() procedure is only for powering up the unit.


----------



## AnotherHobby

robsworld78 said:


> I'm adding the UTC timezone offset to the GUI so a person doesn't need to change it in the code.
> 
> It's clearly needed in the smartStartup() procedure however I don't see that it makes any difference what its set to. The timestamp to the serial monitor changes but my schedules all still fire up the same.
> 
> The smartStartup() procedure does what it should for the most part but I'm not able to find out why changing the UTC offset doesn't affect the schedules like it should according to the code.
> 
> For example if its 9pm and I have a schedule due to shut off at 10pm I can set the UTC offset to anytime and it still won't shut off until the clock says 10pm with a reboot. I thought if I changed UTC from -7 to -5 it should be 11pm according to the smartStartup() procedure (even though clock still shows 9pm) and the lights shouldn't turn on during that set schedule anymore when the mega is fired up, unless I'm misunderstanding something? I understand the smartStartup() procedure is only for powering up the unit.


Funny you bring this up...

I don't know if the UTC timezone thing is actually related to UTC. I thought it was at first, because I can't explain why else the unix time code conversion done by the time library is off by 5 hours. It makes no sense to me. At the time I thought it might be UTC related because I was 5 hours offset from UTC, so I made it a variable and named the variable that. But I don't see how on earth the RTC knows that I'm off by 5 hours. So, I have no explanation, and I bet that it's 5 hours no matter what time zone you are in, and I don't think it needs to go in the GUI. We should have some other people test it, after fixing what I'm about to explain.

I discovered a bug over the weekend while reusing that code block in another project. The smartStartup() feature will not work for some hours because I calculated the time stamp on the offset hour() _first_, and then do the unix conversation. That's why you are seeing inconsistent results with that routine. The fix is to do the unix time conversion first, and then subtract 5 hours worth of seconds from that. 

EDIT: For some reason my browser or the forum is showing some oddly placed spaces in the little code blocks below, such as putting "s econd()" where it is "second()" and stuff like that. I don't know why, but the code snippit at the end is correct.

So this method of getting the current time stamp:

onHour=hour()-UTC_Offset;
time_t currentStamp = tmConvert_t(year(),month(),day(),onHour,minute(),second());

Needs to be this method of getting the current timestamp:

time_t currentStamp = tmConvert_t(year(),month(),day(),hour(),minute(),second());
currentStamp=currentStamp-(UTC_Offset*60*60); // add 60 min x 60 sec x the offset

And within that fix, you could probably just change (UTC_Offset*60*60) to 18000, because I don't think it's UTC related, although some testing would be good. As I said above, I have no idea why converting to unix time is 5 hours off. Either way, that change needs to be made to every single UTC_Offset call in the routine, for each power output, and for each ramp. 

Here is what the old code looked like for the lights 1 power output:

onHour=schedLights1.onHour-UTC_Offset; // adjust for time zone
offHour=schedLights1.offHour-UTC_Offset; // adjust for time zone
time_t powerOn = tmConvert_t(year(),month(),day(),onHour,schedLights1.onMinute,0); // get a unix time stamp for the power on
time_t powerOff = tmConvert_t(year(),month(),day(),offHour,schedLights1.offMinute,0); // get a unix time stamp for the power off 

Here is what the fixed code looks like:

time_t powerOn = tmConvert_t(year(),month(),day(),schedLights1.onHour,schedLights1.onMinute,0);
time_t powerOff = tmConvert_t(year(),month(),day(),schedLights1.offHour,schedLights1.offMinute,0);
powerOn=powerOn-(UTC_Offset*60*60);
powerOff=powerOff-(UTC_Offset*60*60);

The code is similarly changed for the ramps. For example, ramp 1 before the bug fix:

onHour=ramp1.onHour-UTC_Offset; // adjust for time zone
time_t rampStart = tmConvert_t(year(),month(),day(),onHour,ramp1.onMinute,0); // get a unix time stamp for the ramp start

And ramp 1 after the bug fix:

time_t rampStart = tmConvert_t(year(),month(),day(),ramp1.onHour,ramp1.onMinute,0); // get a unix time stamp for the ramp start
rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset

I have fixed it in my iAqua code, but I'm in the middle of something else, so I can't post it all now. However, below is the fixed smartStartup() code. Note that I have not uploaded this to my controller yet, so it's not fully bug tested, but it should do the job until I upload the latest version (with a few other small bug fixes).



Code:


void smartStartup()
{

  RTC.now();

  // get the current time in UNIX time, which is FAR easier for time calculations and comparisons
  // also must set UTC offset for mktime to calcuate stuff correct

  time_t currentStamp = tmConvert_t(year(),month(),day(),hour(),minute(),second());
  currentStamp=currentStamp-(UTC_Offset*60*60); // remove the UTC offset

  //// POWER STARTUP:  LIGHTS 1
  // read in the power schedule and see if we are at a time when it should be on
  time_t powerOn = tmConvert_t(year(),month(),day(),schedLights1.onHour,schedLights1.onMinute,0); // get a unix time stamp for the power on
  time_t powerOff = tmConvert_t(year(),month(),day(),schedLights1.offHour,schedLights1.offMinute,0); // get a unix time stamp for the power off  
  powerOn=powerOn-(UTC_Offset*60*60); // remove the UTC offset
  powerOff=powerOff-(UTC_Offset*60*60); // remove the UTC offset

  if (powerOff<powerOn) // if something turns off after midnight, then we only consider power on time
  {
    if (powerOn<=currentStamp) AlarmPwrLight1_On(); // turn on power if it's past power on time
  }
  else if ((powerOn<=currentStamp)&&(powerOff>currentStamp)) // turn on power if it's within the window
  {
    AlarmPwrLight1_On(); // turn on power if it's within the window
  }

  //// POWER STARTUP:  LIGHTS 2
  // read in the power schedule and see if we are at a time when it should be on
  powerOn = tmConvert_t(year(),month(),day(),schedLights2.onHour,schedLights2.onMinute,0); // get a unix time stamp for the power on
  powerOff = tmConvert_t(year(),month(),day(),schedLights2.offHour,schedLights2.offMinute,0); // get a unix time stamp for the power off  
  powerOn=powerOn-(UTC_Offset*60*60); // remove the UTC offset
  powerOff=powerOff-(UTC_Offset*60*60); // remove the UTC offset

  if (powerOff<powerOn) // if something turns off after midnight, then we only consider power on time
  {
    if (powerOn<=currentStamp) AlarmPwrLight2_On(); // turn on power if it's past power on time
  }
  else if ((powerOn<=currentStamp)&&(powerOff>currentStamp)) // turn on power if it's within the window
  {
    AlarmPwrLight2_On(); // turn on power if it's within the window
  }

  //// POWER STARTUP:  FILTER  
  AlarmPwrFilter_On(); // the filter is ALWAYS ON

  //// POWER STARTUP:  CIRCULATION PUMP
  // read in the power schedule and see if we are at a time when it should be on
  powerOn = tmConvert_t(year(),month(),day(),schedCirc.onHour,schedCirc.onMinute,0); // get a unix time stamp for the power on
  powerOff = tmConvert_t(year(),month(),day(),schedCirc.offHour,schedCirc.offMinute,0); // get a unix time stamp for the power off  
  powerOn=powerOn-(UTC_Offset*60*60); // remove the UTC offset
  powerOff=powerOff-(UTC_Offset*60*60); // remove the UTC offset


  if (powerOff<powerOn) // if something turns off after midnight, then we only consider power on time
  {
    if (powerOn<=currentStamp) AlarmPwrCirc_On(); // turn on power if it's past power on time
  }
  else if ((powerOn<=currentStamp)&&(powerOff>currentStamp)) // turn on power if it's within the window
  {
    AlarmPwrCirc_On(); // turn on power if it's within the window
  }

  //// POWER STARTUP:  HEATER  
  AlarmPwrHeat_On(); // the heater is ALWAYS ON

  //// POWER STARTUP:  CO2
  // read in the power schedule and see if we are at a time when it should be on
  powerOn = tmConvert_t(year(),month(),day(),schedCo2.onHour,schedCo2.onMinute,0); // get a unix time stamp for the power on
  powerOff = tmConvert_t(year(),month(),day(),schedCo2.offHour,schedCo2.offMinute,0); // get a unix time stamp for the power off  
  powerOn=powerOn-(UTC_Offset*60*60); // remove the UTC offset
  powerOff=powerOff-(UTC_Offset*60*60); // remove the UTC offset

  if (powerOff<powerOn) // if something turns off after midnight, then we only consider power on time
  {
    if (powerOn<=currentStamp) AlarmPwrCO2_On(); // turn on power if it's past power on time
  }
  else if ((powerOn<=currentStamp)&&(powerOff>currentStamp)) // turn on power if it's within the window
  {
    AlarmPwrCO2_On(); // turn on power if it's within the window
  }

  //// POWER STARTUP:  AUX 1
  // read in the power schedule and see if we are at a time when it should be on
  powerOn = tmConvert_t(year(),month(),day(),schedAux1.onHour,schedAux1.onMinute,0); // get a unix time stamp for the power on
  powerOff = tmConvert_t(year(),month(),day(),schedAux1.offHour,schedAux1.offMinute,0); // get a unix time stamp for the power off  
  powerOn=powerOn-(UTC_Offset*60*60); // remove the UTC offset
  powerOff=powerOff-(UTC_Offset*60*60); // remove the UTC offset

  if (powerOff<powerOn) // if something turns off after midnight, then we only consider power on time
  {
    if (powerOn<=currentStamp) AlarmPwrAux1_On(); // turn on power if it's past power on time
  }
  else if ((powerOn<=currentStamp)&&(powerOff>currentStamp)) // turn on power if it's within the window
  {
    AlarmPwrAux1_On(); // turn on power if it's within the window
  }

  //// POWER STARTUP:  AUX 2
  // read in the power schedule and see if we are at a time when it should be on
  powerOn = tmConvert_t(year(),month(),day(),schedAux2.onHour,schedAux2.onMinute,0); // get a unix time stamp for the power on
  powerOff = tmConvert_t(year(),month(),day(),schedAux2.offHour,schedAux2.offMinute,0); // get a unix time stamp for the power off  
  powerOn=powerOn-(UTC_Offset*60*60); // remove the UTC offset
  powerOff=powerOff-(UTC_Offset*60*60); // remove the UTC offset

  if (powerOff<powerOn) // if something turns off after midnight, then we only consider power on time
  {
    if (powerOn<=currentStamp) AlarmPwrAux2_On(); // turn on power if it's past power on time
  }
  else if ((powerOn<=currentStamp)&&(powerOff>currentStamp)) // turn on power if it's within the window
  {
    AlarmPwrAux2_On(); // turn on power if it's within the window
  }

  // if the light power is on, we can set the correct lighting mode
  // rather than try to start half way into a ramp, we see if we are closer to the end or begining
  // then we go to the closest mode, which is good enough for a reboot recovery

  if (globalPower.pwrLight1==1) // only bother if the lights are on
  {  
    // first check to see if we are in ramp 1
    time_t rampStart = tmConvert_t(year(),month(),day(),ramp1.onHour,ramp1.onMinute,0); // get a unix time stamp for the ramp start
    rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset

    // first we need to check if we are before ramp 1
    if (rampStart>currentStamp) // if we are before ramp 1
    {
      irsend.sendNEC(M4,32); // flip to moon
      currentLightMode=3;
    }
    else if (rampStart>=currentStamp) // if we are past the start of  ramp 1
    {
      int rampEnd=((ramp1.offHour*60)+(ramp1.offMinute))*60; // calculate how many seconds long the ramp is
      rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
      if (currentStamp<rampEnd) // if we are before the end of the ramp
      {
        int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
        int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
        if (secondsBackToStart>secondsToEnd) 
        {
          irsend.sendNEC(M4,32); // flip to moonlight
          currentLightMode=3;
        }
        else 
        {
          irsend.sendNEC(M3,32); // flip to low sun
          currentLightMode=2;
        }
      }
    }
    else // move on to ramp 2
    {
      rampStart = tmConvert_t(year(),month(),day(),ramp2.onHour,ramp2.onMinute,0); // get a unix time stamp for the ramp start
      rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset

      // first we need to check if we are between the previous ramp and this ramp
      if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
      {
        irsend.sendNEC(M3,32); // flip to low sun
        currentLightMode=2;
      }
      else if (rampStart>=currentStamp) // if we are past the start of  ramp 2
      {
        int rampEnd=((ramp2.offHour*60)+(ramp2.offMinute))*60; // calculate how many seconds long the ramp is
        rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
        if (currentStamp<rampEnd) // if we are before the end of the ramp
        {
          int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
          int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
          if (secondsBackToStart>secondsToEnd) 
          {
            irsend.sendNEC(M3,32); // flip to low sun
            currentLightMode=2;
          }
          else 
          {
            irsend.sendNEC(M2,32); // flip to mid sun
            currentLightMode=1;
          }
        }
      }
      else // move on to ramp 3
      {
        rampStart = tmConvert_t(year(),month(),day(),ramp3.onHour,ramp3.onMinute,0); // get a unix time stamp for the ramp start
        rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset

        // first we need to check if we are between the previous ramp and this ramp
        if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
        {
          irsend.sendNEC(M2,32); // flip to mid sun
          currentLightMode=1;
        }
        else if (rampStart>=currentStamp) // if we are past the start of  ramp 3
        {
          int rampEnd=((ramp3.offHour*60)+(ramp3.offMinute))*60; // calculate how many seconds long the ramp is
          rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
          if (currentStamp<rampEnd) // if we are before the end of the ramp
          {
            int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
            int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
            if (secondsBackToStart>secondsToEnd) 
            {
              irsend.sendNEC(M2,32); // flip to mid sun
              currentLightMode=1;
            }
            else 
            {
              irsend.sendNEC(M1,32); // flip to high sun
              currentLightMode=0;
            }
          }
        }
        else // move on to ramp 4
        {
          rampStart = tmConvert_t(year(),month(),day(),ramp4.onHour,ramp4.onMinute,0); // get a unix time stamp for the ramp start
          rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset]

          // first we need to check if we are between the previous ramp and this ramp
          if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
          {
            irsend.sendNEC(M1,32); // flip to high sun
            currentLightMode=0;
          }
          else if (rampStart>=currentStamp) // if we are past the start of  ramp 4
          {
            int rampEnd=((ramp4.offHour*60)+(ramp4.offMinute))*60; // calculate how many seconds long the ramp is
            rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
            if (currentStamp<rampEnd) // if we are before the end of the ramp
            {
              int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
              int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
              if (secondsBackToStart>secondsToEnd) 
              {
                irsend.sendNEC(M1,32); // flip to high sun
                currentLightMode=0;
              }
              else 
              {
                irsend.sendNEC(M2,32); // flip to mid sun
                currentLightMode=1;
              }
            }
          }
          else // move on to ramp 5
          {    
            rampStart = tmConvert_t(year(),month(),day(),ramp5.onHour,ramp5.onMinute,0); // get a unix time stamp for the ramp start
            rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset]

            // first we need to check if we are between the previous ramp and this ramp
            if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
            {
              irsend.sendNEC(M2,32); // flip to mid sun
              currentLightMode=1;
            }
            else if (rampStart>=currentStamp) // if we are past the start of  ramp 5
            {
              int rampEnd=((ramp5.offHour*60)+(ramp5.offMinute))*60; // calculate how many seconds long the ramp is
              rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
              if (currentStamp<rampEnd) // if we are before the end of the ramp
              {
                int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
                int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
                if (secondsBackToStart>secondsToEnd) 
                {
                  irsend.sendNEC(M2,32); // flip to mid sun
                  currentLightMode=1;
                }
                else 
                {
                  irsend.sendNEC(M3,32); // flip to low sun
                  currentLightMode=2;
                }
              }
            }
            else // move on to ramp 6
            {
              rampStart = tmConvert_t(year(),month(),day(),ramp6.onHour,ramp6.onMinute,0); // get a unix time stamp for the ramp start
              rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset]

              // first we need to check if we are between the previous ramp and this ramp
              if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
              {
                irsend.sendNEC(M3,32); // flip to low sun
                currentLightMode=2;
              }
              else if (rampStart>=currentStamp) // if we are past the start of  ramp 6
              {
                int rampEnd=((ramp6.offHour*60)+(ramp6.offMinute))*60; // calculate how many seconds long the ramp is
                rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
                if (currentStamp<rampEnd) // if we are before the end of the ramp
                {
                  int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
                  int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
                  if (secondsBackToStart>secondsToEnd) 
                  {
                    irsend.sendNEC(M3,32); // flip to low sun
                    currentLightMode=2;
                  }
                  else 
                  {
                    irsend.sendNEC(M4,32); // flip to moonlight
                    currentLightMode=3;
                  }
                }
              }
            }
          }
        }
      }    
    }
  }
  checkLighting();
}


----------



## kman

[accidental post, not clear on why I can't delete it]


----------



## O2surplus

Gonna build just 3 more-LOL


----------



## bigd603

Also an accidental post


----------



## jmh474

posted same thing twice sorry


----------



## jmh474

So all my parts are on the way but got a 2 to 3 week wait, even tho this controller is the best im ever going to find out there, there are two things i would like to add A out put for an auto feeder and a buzzer for if the heater fails (temp full's down to much) but as iv said befor my codding is non excited so iv not got a clue where to star and what to do at all so any advice would be grate thanks

All so i would like to congratulate O2surplus on such an awesome shield are there any plans out there for us to look at or are these top secret lol


----------



## O2surplus

jmh474 said:


> All so i would like to congratulate O2surplus on such an awesome shield are there any plans out there for us to look at or are these top secret lol



Thanks for the compliments! With all the work going on with this project,( much of it behind the scenes) I'm waiting patiently for it to evolve a bit more... i.e. I want to see what "Robsworld78" comes up with, before I release the PcB build files. I'm sure there will be some goodies added, that I'll want to incorporate into the next shield design.


----------



## jmh474

O2surplus said:


> Thanks for the compliments! With all the work going on with this project,( much of it behind the scenes) I'm waiting patiently for it to evolve a bit more... i.e. I want to see what "Robsworld78" comes up with, before I release the PcB build files. I'm sure there will be some goodies added, that I'll want to incorporate into the next shield design.


Well iv got to say i look ford to seeing them shame there int more people like you and another hobby out there the world would be a friendlily place


----------



## kman

O2surplus said:


> Thanks for the compliments! With all the work going on with this project,( much of it behind the scenes) I'm waiting patiently for it to evolve a bit more... i.e. I want to see what "Robsworld78" comes up with, before I release the PcB build files. I'm sure there will be some goodies added, that I'll want to incorporate into the next shield design.


Oh, goodie, so I'll have a 2.0 rev to look forward to.  Probably be done about the time I fire up the 1.0 board, LOL!

Drilling works, but perhaps add mounting holes to 2.0 if it's not an expensive option. :tongue:

Curious what people are using for an autofeeder that works with a simple power on/off timer system like iAqua? I've only found one that does a semi-reasonable job with flake food for small tanks, and it wouldn't work with a timer without tearing the whole thing down and getting way crazy with it.


----------



## O2surplus

kman said:


> Oh, goodie, so I'll have a 2.0 rev to look forward to.  Probably be done about the time I fire up the 1.0 board, LOL!
> 
> Drilling works, but perhaps add mounting holes to 2.0 if it's not an expensive option. :tongue:



LOL- 2.0 will definitely have mounting holes in it! 

Just like the real Apple product line- sell a million units , then make a few "improvements" & sell a million more. With many of those "improved" units going to the same people that bought the first.


----------



## robsworld78

Thanks for the updated code AH! I did come across that bug, I found it to be that if my schedule started during the day and ended in the am it would startup with the currentLightMode==5, I added some code to change it to currentLightMode==3 and startup in night mode if that was to happen. I'm sure this will sort everything out.

So you don't think the UTC offset variable even needs to be changed? Locked at -5 should be good for all. I have a feeling this RTC chip has no idea where its located, lol.

O2surplus glad to hear you are willing to update the shield, I was hoping I could get some help on that, I like what you did with it.

Additions will be *nice *lightning, cloud cover, air temp, light temp, auto feeder with option to use or not use, 2 cooling fan outputs and possibly 2 more doing pump outputs even though I don't plan on using one. :hihi: I thought about ph but personally I could careless about it, I'm in the city and its always the same. However I'll probably add it as I want this thing to be complete and I found a PH probe with BNC connector for under $10. My thought is if I add it using that probe any probe with a BNC connector should work, is that thinking correct? If so people who do care about PH can use a good probe if they wish.

http://www.banggood.com/PH-Electrode-Probe-BNC-Connector-For-Aquarium-PH-Control-Meter-Sensor-p-912723.html

I'm working hard on it and having fun doing it, I just need to start adding the new features really, the new GUI layout is basically complete and working. My problem now is I still haven't received all the parts I ordered. Everything arrived from DX (3 shipments) but the temp probes, relays and other things I ordered on ebay which was shipped the same time hasn't arrived and tracking says its not even close. I'm probably putting in another order tonight for the rest of the stuff. :icon_neut


----------



## STReNT

> My thought is if I add it using that probe any probe with a BNC connector should work, is that thinking correct? If so people who do care about PH can use a good probe if they wish.


It's a little bit more complicated than just having a BNC connector to some pins 

Easiest solution would be to have a BNC connector and allow pins for one of the atlas scientific stamps. That way people could use a PH, ORP, DO, or any other stamp that AS has available.


----------



## robsworld78

So I can't just add code and a probe, figures.  Would the probe I linked to work with an atlas scientific stamp or does it have to be an atlas probe?


----------



## theknight

I don't remember the exact wording, but I know I read on the Atlas webpage that you could use any quality probe with their stamp.



robsworld78 said:


> So I can't just add code and a probe, figures.  Would the probe I linked to work with an atlas scientific stamp or does it have to be an atlas probe?


----------



## STReNT

Yep - any ph probe will work with the atlas stamp. Obviously results will vary depending on the quality of the probe.


----------



## kman

AH: I'm trying to upload the iAqua code (1.0.1) for testing, and I'm not getting a clean compilation.

I've copied all of the libraries into the "libraries" folder (except those I already had for the other Sat+ Controller project) (screen shot attached)

I dropped everything else in the iAqua.zip file onto the SD Card (formatted FAT16) which is slotted into the LCD.

The code is 100% clean from your zip file, no changes made. Here is the string of errors I get when trying to verify the code:



Code:


  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.
Arduino: 1.0.6 (Mac OS X), Board: "Arduino Uno"
iAqua:105: error: 'A8' was not declared in this scope
iAqua.ino: In function 'void setup()':
iAqua:372: error: 'file' was not declared in this scope
iAqua:373: error: 'SPISPEED_VERYHIGH' was not declared in this scope

Note: For testing, I'm using the iAqua shield and an unmodified ElecFreaks board (I don't expect the touch features, dimming, etc. to work until the jumper wires are in place). That shouldn't matter for the compile verification that I'm trying to do at this point, though.


----------



## robsworld78

On the 4th line it says

Arduino: 1.0.6 (Mac OS X), Board: "Arduino Uno"

You'll need to change the board to the mega 2560 in the arduino software.


----------



## kman

robsworld78 said:


> On the 4th line it says
> 
> Arduino: 1.0.6 (Mac OS X), Board: "Arduino Uno"
> 
> You'll need to change the board to the mega 2560 in the arduino software.


*facepalm*

I hate switching back and forth between projects. Thanks!

EDIT:

Except that didn't do it.

If the code would verify, that would indeed have been the issue. But here, I'm just trying to get the code to verify clean. That did get rid of the A8 error, though. 



Code:


  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.
Arduino: 1.0.6 (Mac OS X), Board: "Arduino Mega 2560 or Mega ADK"
iAqua.ino: In function 'void setup()':
iAqua:372: error: 'file' was not declared in this scope
iAqua:373: error: 'SPISPEED_VERYHIGH' was not declared in this scope

It appears to be in void setup right after the global variables finish up:

// init SD card
file.setSSpin(53);
file.initFAT(SPISPEED_VERYHIGH);


----------



## robsworld78

The A8 error was there because the UNO doesn't have an A8, I guess the other errors are because the tinyfat library is missing which is used the access the SD card. AH didn't include that library in the package because it was to large. Its easy to find online though.


----------



## robsworld78

Well I've tried the new smartStartup() procedure and its able to determine the correct light mode when restarted however the UTC_Offset still seems to make no difference. :confused1:

That makes no sense at all as I see it in the math. I can change that variable to any number and when restarted it will always be in the correct light mode and power modes. Its as if its getting that correction from something else. Its not a big deal but its driving me crazy because it should change those times.

EDIT: 

Upon further testing I've determined the UTC_offset variable isn't required. I removed all instances of it and the startup procedure worked as it should with one exception which has nothing to do with that. Maybe you needed the offset in there when you were using the other RTC library? I really don't think its needed.

The only problem with the startup procedure is it doesn't know the difference in days and gets confused if the schedule overlaps a day.

If the schedule starts at 11am and ends at 1am it will always come on saying its night once the clock passes 12am when it should be low sun. I can see that happening because its only calculating time. Its getting stuck on the first if statement for the ramps because it passes the criteria required in that statement as its not 11am for sunrise. 

So in the end your updated code is really making no difference just so you know. I think most people haven't noticed this because who turns on and off their unit and keeps their fish up all night.


----------



## O2surplus

kman said:


> AH: I'm trying to upload the iAqua code (1.0.1) for testing, and I'm not getting a clean compilation.
> 
> I've copied all of the libraries into the "libraries" folder (except those I already had for the other Sat+ Controller project) (screen shot attached)
> 
> I dropped everything else in the iAqua.zip file onto the SD Card (formatted FAT16) which is slotted into the LCD.
> 
> The code is 100% clean from your zip file, no changes made. Here is the string of errors I get when trying to verify the code:
> 
> 
> 
> Code:
> 
> 
> This report would have more information with
> "Show verbose output during compilation"
> enabled in File > Preferences.
> Arduino: 1.0.6 (Mac OS X), Board: "Arduino Uno"
> iAqua:105: error: 'A8' was not declared in this scope
> iAqua.ino: In function 'void setup()':
> iAqua:372: error: 'file' was not declared in this scope
> iAqua:373: error: 'SPISPEED_VERYHIGH' was not declared in this scope
> 
> Note: For testing, I'm using the iAqua shield and an unmodified ElecFreaks board (I don't expect the touch features, dimming, etc. to work until the jumper wires are in place). That shouldn't matter for the compile verification that I'm trying to do at this point, though.



After you get the tinyFat library installed, you'll need to copy the 50 or so RAW files from the SD Image folder directly to the SD card. The iAqua software won't be able to find them, if they're still inside a file folder.


----------



## kman

robsworld78 said:


> The A8 error was there because the UNO doesn't have an A8, I guess the other errors are because the tinyfat library is missing which is used the access the SD card. AH didn't include that library in the package because it was to large. Its easy to find online though.


Excellent! I saw the post saying "here is a zip with all the libraries" but I guess I missed that it doesn't include tinyfat. I'll track it down, thanks! Fingers crossed for success tonight...

Bump:


O2surplus said:


> After you get the tinyFat library installed, you'll need to copy the 50 or so RAW files from the SD Image folder directly to the SD card. The iAqua software won't be able to find them, if they're still inside a file folder.


They are on the SD card. Do you mean all the RAW files need to be at the root level of the SD card?


----------



## O2surplus

kman said:


> They are on the SD card. Do you mean all the RAW files need to be at the root level of the SD card?


Yep!


----------



## AnotherHobby

robsworld78 said:


> Well I've tried the new smartStartup() procedure and its able to determine the correct light mode when restarted however the UTC_Offset still seems to make no difference. :confused1:
> 
> That makes no sense at all as I see it in the math. I can change that variable to any number and when restarted it will always be in the correct light mode and power modes. Its as if its getting that correction from something else. Its not a big deal but its driving me crazy because it should change those times.
> 
> EDIT:
> 
> Upon further testing I've determined the UTC_offset variable isn't required. I removed all instances of it and the startup procedure worked as it should with one exception which has nothing to do with that. Maybe you needed the offset in there when you were using the other RTC library? I really don't think its needed.


Regarding the UTC_Offset, I can see where it's likely unnecessary with the new code I wrote. I was doing it with hour calculations before, and that's where I was seeing the 5 hour discrepancy. Now I'm doing straight unix time comparisons. I'll have to test it myself to confirm, but I bet you are right that it's not needed anymore since the way I'm doing the math would appear to make it irrelevant.



robsworld78 said:


> The only problem with the startup procedure is it doesn't know the difference in days and gets confused if the schedule overlaps a day.
> 
> If the schedule starts at 11am and ends at 1am it will always come on saying its night once the clock passes 12am when it should be low sun. I can see that happening because its only calculating time. Its getting stuck on the first if statement for the ramps because it passes the criteria required in that statement as its not 11am for sunrise.
> 
> So in the end your updated code is really making no difference just so you know. I think most people haven't noticed this because who turns on and off their unit and keeps their fish up all night.


Regarding the midnight overlap, I don't really understand how you are using it. If you are scheduling beyond what I intended it to do, it might do unexpected things. It's meant to work so that ramp 1 is the first ramp, and no ramp should _start_ before this ramp in the day. If you start ramp 6 after midnight, it probably will not work right. It wasn't meant to work that way. It's okay for ramp6 to end after midnight though. Mine does.

So the first block for the ramping portion of the smart startup is:

if (rampStart>currentStamp) // if we are before ramp 1
{
irsend.sendNEC(M4,32); // flip to moon
currentLightMode=3;
}

Basically, if it's after midnight, and it's before the first ramp, then it should be moon. This is because ramp 6, from low sun to moon, is the last ramp that should have ran before the first ramp starts. As such, any time from midnight until the first ramp starts should be moonlight, or close to it. That's why that's the first block. Are you starting ramp 6 after midnight? Or maybe I am misunderstanding what's happening?

I should also note that I just noticed that I completely forgot to put the PWM lighting code in the smart startup. Only the IR code is in there. Not sure how I spaced that out, other than I don't use PWM for lighting, so it wasn't on my mind. I'll have to add that in.


----------



## jmh474

So as i said im planning on adding a buzzer for temp fail and auto feeder but not a clue how to do it and i have no arduino to test with ye so is there a way of testing what i change on something like a virtual arduino?? guess i sound silly thanks


----------



## robsworld78

I almost don't think its needed in the first code you wrote either, it made no difference on my end.

The ramps work fine at any hour, its only on the startup it has issues. Yes on my testing I was starting the 6th ramp after 12am.

I did notice the lights didn't power up after turning back on, so I added the code for that. I made a procedure called setStartupLighting().



Code:


void setStartupLighting()
{
  if (currentLightMode==0)
  {
    analogWrite(ledRedPin, lightHighSun.Red);
    analogWrite(ledGreenPin, lightHighSun.Green);
    analogWrite(ledBluePin, lightHighSun.Blue);
    analogWrite(ledWhitePin, lightHighSun.White);
//    analogWrite(ledVioletPin, lightHighSun.Violet);
//    analogWrite(ledMoonPin, lightHighSun.Moon);
  }
  else if (currentLightMode==1)
  {
    analogWrite(ledRedPin, lightMidSun.Red);
    analogWrite(ledGreenPin, lightMidSun.Green);
    analogWrite(ledBluePin, lightMidSun.Blue);
    analogWrite(ledWhitePin, lightMidSun.White);
//    analogWrite(ledVioletPin, lightMidSun.Violet);
//    analogWrite(ledMoonPin, lightMidSun.Moon);
  }
  else if (currentLightMode==2)
  {
    analogWrite(ledRedPin, lightLowSun.Red);
    analogWrite(ledGreenPin, lightLowSun.Green);
    analogWrite(ledBluePin, lightLowSun.Blue);
    analogWrite(ledWhitePin, lightLowSun.White);
//    analogWrite(ledVioletPin, lightLowSun.Violet);
//    analogWrite(ledMoonPin, lightLowSun.Moon);
  }
  else if (currentLightMode==3)
  {
    analogWrite(ledRedPin, lightMoon.Red);
    analogWrite(ledGreenPin, lightMoon.Green);
    analogWrite(ledBluePin, lightMoon.Blue);
    analogWrite(ledWhitePin, lightMoon.White);
//    analogWrite(ledVioletPin, lightMoon.Violet);
//    analogWrite(ledMoonPin, lightMoon.Moon);
  }
  else 
  {
    analogWrite(ledRedPin, lightLowSun.Red);
    analogWrite(ledGreenPin, lightLowSun.Green);
    analogWrite(ledBluePin, lightLowSun.Blue);
    analogWrite(ledWhitePin, lightLowSun.White);
//    analogWrite(ledVioletPin, lightLowSun.Violet);
//    analogWrite(ledMoonPin, lightLowSun.Moon);
  }  
}

I then called setStartupLighting() at the end of the smartStartup().



Code:


      }    
    }
  }
  setStartupLighting();
  checkLighting();
}


----------



## PhysicsDude55

kman said:


> Curious what people are using for an autofeeder that works with a simple power on/off timer system like iAqua? I've only found one that does a semi-reasonable job with flake food for small tanks, and it wouldn't work with a timer without tearing the whole thing down and getting way crazy with it.


I'm finishing up an autofeeder system controlled by my arduino based aquarium controller (not running iAqua).

I didn't want to threadjack this awesome thead, so here's a thread I just made, and will add on to when I have completed this autofeeder project:

http://www.plantedtank.net/forums/showthread.php?p=6962938#post6962938

I wouldn't mind trying to add this feature to AnotherHobby's code, but it would be pretty hard for me to write any sort of graphical interface, since I don't have a 3.2" screen, and I'm not sure which pin(s) would be best to use.


----------



## kman

robsworld78 said:


> The A8 error was there because the UNO doesn't have an A8, I guess the other errors are because the tinyfat library is missing which is used the access the SD card. AH didn't include that library in the package because it was to large. Its easy to find online though.


Unfortunately, adding the TinyFAT library did not make any difference. 



Code:


  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.
Arduino: 1.0.6 (Mac OS X), Board: "Arduino Mega 2560 or Mega ADK"
iAqua.ino: In function 'void setup()':
iAqua:372: error: 'file' was not declared in this scope
iAqua:373: error: 'SPISPEED_VERYHIGH' was not declared in this scope

I now have the ~166 .raw files at the root level of the SD card, but I get the same error whether I actually have the Arduino connected or not.


----------



## AnotherHobby

robsworld78 said:


> I almost don't think its needed in the first code you wrote either, it made no difference on my end.
> 
> The ramps work fine at any hour, its only on the startup it has issues. Yes on my testing I was starting the 6th ramp after 12am.
> 
> I did notice the lights didn't power up after turning back on, so I added the code for that. I made a procedure called setStartupLighting().


Well who knows with the whole offset thing. I'll just strip it from the code. 

As for the 6th ramp thing, I don't know if I'm going to put the effort into trying to figure out how to deal with ramps that don't go in order. Starting the 6th ramp after midnight technically makes it the first ramp of the day. It could get confusing and you'd I'd have to check for a lot of things. If you want to do something, feel free to dig in. 

That PWM code looks great. I'll add that in, and it'll save me some time!



kman said:


> Unfortunately, adding the TinyFAT library did not make any difference.
> 
> 
> 
> Code:
> 
> 
> This report would have more information with
> "Show verbose output during compilation"
> enabled in File > Preferences.
> Arduino: 1.0.6 (Mac OS X), Board: "Arduino Mega 2560 or Mega ADK"
> iAqua.ino: In function 'void setup()':
> iAqua:372: error: 'file' was not declared in this scope
> iAqua:373: error: 'SPISPEED_VERYHIGH' was not declared in this scope
> 
> I now have the ~166 .raw files at the root level of the SD card, but I get the same error whether I actually have the Arduino connected or not.


The physical SD card, and the images on it, have absolutely nothing to do with compiling. An issue with that would show up when the device boots, after you've uploaded code. You don't even need the Arduino plugged in for it to compile.

Did you quit and relaunch the Arduino program after you added tinyFAT? If you copied it to that folder in the Finder (rather than importing via the Arduino application), you need to quit and relaunch for it to see the library.


----------



## robsworld78

Kman try what AH suggested, if that doesn't work I attached the tinyfat library I use. One thing I noticed about this arduino stuff is there are different versions of libraries floating around and that maybe it.

https://onedrive.live.com/redir?resid=CA0B90EFF71CE1E0!232&authkey=!ANWf5PiJD6sk0yo&ithint=file%2czip

Yeah that offset was funny from the get go. I think it was in the beginning you needed it and then you changed it without knowing. 

Don't worry about fixing the other issue I was just letting you know, I'm sure I'll end up solving at some point and will post the results, I'm not to worried about it right now as its something very rarely used.

One thing you might want to keep in mind for future projects. Keep image count to a minimum as long as you are using the libraries you are. 

I've always noticed a long delay between loading images so on my version I've been clumping icons together into one image even if it meant lots of black screen because overall it would load faster. That modified UTFT library I posted made a definite improvement in image loading time but there was still that delay. I always had a feeling it was because of the SD card and was planning on changing the library at some point to see if it would improve.

Well turns out it is the SD card slowing it down big time. I've been adding images to my card that I've created and had all yours on there as well and it came up telling me with the format16 I'm only allowed so many files on the card and I reached that point. So I deleted everything off the card and loaded only the images I needed and the delay between loading images almost disappeared. Screens are loading *much *faster now.

I have a feeling a better SD library is the answer.


----------



## kman

AnotherHobby said:


> The physical SD card, and the images on it, have absolutely nothing to do with compiling. An issue with that would show up when the device boots, after you've uploaded code. You don't even need the Arduino plugged in for it to compile.
> 
> Did you quit and relaunch the Arduino program after you added tinyFAT? If you copied it to that folder in the Finder (rather than importing via the Arduino application), you need to quit and relaunch for it to see the library.


Yeah, I knew it couldn't be a hardware issue since it happened even when the Arduino was not connected, merely verifying the code.

You were dead on about restarting the Arduino program after moving the TinyFAT library in, however. *sigh* I knew that at one point...

On the bright side, it's now compiling, and uploading, and working!  To an extent. I don't have a modified LCD shield yet, so no touchy yet. And no temps until I connect the probe.

I'm powering off a 12v 1amp power supply from an old Linksys router (plugged into the iAqua shield's power jack).

IT'S ALIVE!!!! (kinda... see below)










The more concerning issue, now, is the bottom edge of any graphics seems to be distorted. Approx 1/4" of the screen distorts when the iAqua splash screen comes online, and once the main home screen is up, again, the bottom 1/4" of the screen is distorted, as you can see above. It was harder to get a shot of the distorted splash screen, where the distortion is mid-screen, because it only shows for a second... but I got one:










Another odd issue is restarting. Unplugging it to move to a new location, and having it power back up, the GUI does not fully reload. No distortion anymore, but incomplete graphics. I tried over and over, and waited 15 minutes once before powering up again. Once it's been powered down (by unplugging), the ONLY way (so far) to get the full GUI fully back up (distorted or not) is to reconnect the laptop and re-upload the software to the Arduino from scratch. Then everything is great again. (except the distortion) (and only until I unplug it again)

After restarting:










:iamwithst


----------



## PhysicsDude55

robsworld78 said:


> Well turns out it is the SD card slowing it down big time. I've been adding images to my card that I've created and had all yours on there as well and it came up telling me with the format16 I'm only allowed so many files on the card and I reached that point. So I deleted everything off the card and loaded only the images I needed and the delay between loading images almost disappeared. Screens are loading *much *faster now.
> 
> I have a feeling a better SD library is the answer.


You can also load commonly used (small) images directly in the arduino code. iAqua uses less than half of the Mega's available memory. 120K of memory can hold ~30 48x48 icons. I think about half of the images used in iAqua could be stored directly on the arduino (or all of them could be stored on a Due, just saying...) which would also free up space on the SD card.

I emailed Henning Karlson, the creator of UTFT, about the UTFAT libraries about 6 months ago and he said they're outdated and not very good, but that he doesn't have any current plans to update them due to the extensive research it would take to let them utilize the common FAT32 or NTFS file formats.


----------



## robsworld78

I was thinking of putting some of the images in memory like you suggest, the commonly used ones. If you search around there are fat32 libraries that work with utft, I'm sure I saw one for the mega but maybe it was for the due.


----------



## AnotherHobby

The images do use up quite a bit of space in the Arduino's flash memory, but you could definitely put a few key ones in there, and they will load much faster.

If there is a way of speeding up the SD card, I'm all ears. I will say that the speed vs. GUI was a very deliberate decision I made.

When I started testing it in the very beginning, long before starting this thread, I ran into far worse speed issues. I coded different versions of the GUI that were flat and drew buttons with custom made fonts for icons using the geometry libraries instead of actual images. It worked, and it was very fast. However, it was flat looking (there is no anti-aliasing), and I wanted smoother looking eye candy. I finally got it running as fast as it is now, which is not that fast, but it's way faster than when I started. 

That was when I was only working with the home screen and the power screen, so I hadn't designed it too far. Once I managed to get it up to the speed it is now, I decided I would accept a slower interface for more attractive graphics. I had managed to speed it up to _acceptable_. I'd love it if it was faster. I'm sure many would give up the smoother looking anti-aliased graphics for a snapper interface, but I don't mind the trade off.


----------



## O2surplus

kman said:


> Yeah, I knew it couldn't be a hardware issue since it happened even when the Arduino was not connected, merely verifying the code.
> 
> You were dead on about restarting the Arduino program after moving the TinyFAT library in, however. *sigh* I knew that at one point...
> 
> On the bright side, it's now compiling, and uploading, and working!  To an extent. I don't have a modified LCD shield yet, so no touchy yet. And no temps until I connect the probe.
> 
> I'm powering off a 12v 1amp power supply from an old Linksys router (plugged into the iAqua shield's power jack).
> 
> IT'S ALIVE!!!! (kinda... see below)
> 
> 
> 
> The more concerning issue, now, is the bottom edge of any graphics seems to be distorted. Approx 1/4" of the screen distorts when the iAqua splash screen comes online, and once the main home screen is up, again, the bottom 1/4" of the screen is distorted, as you can see above. It was harder to get a shot of the distorted splash screen, where the distortion is mid-screen, because it only shows for a second... but I got one:
> 
> 
> 
> Another odd issue is restarting. Unplugging it to move to a new location, and having it power back up, the GUI does not fully reload. No distortion anymore, but incomplete graphics. I tried over and over, and waited 15 minutes once before powering up again. Once it's been powered down (by unplugging), the ONLY way (so far) to get the full GUI fully back up (distorted or not) is to reconnect the laptop and re-upload the software to the Arduino from scratch. Then everything is great again. (except the distortion) (and only until I unplug it again)
> 
> After restarting:
> 
> 
> 
> :iamwithst


Try re-seating the connection between the Mega and the iAqua shield. The male pins at the iAqua shield's 36 pin header don't make the best electrical connection to the Mega unless you tweak them a bit. I recommend using a thin straight edged tool to bend the two columns of male pins slightly away from each other and then use care to reinstall the shield on the Mega.
I had the same screen problems with mine at first, but noticed that the problem was slightly different or non existent, depending on which iAqua shield I was using. Being that they're all slightly different, I knew the problem with the screen had to be a hardware problem and not software. Tweaking the pins solved the problem.


----------



## kman

O2surplus said:


> Try re-seating the connection between the Mega and the iAqua shield. The male pins at the iAqua shield's 36 pin header don't make the best electrical connection to the Mega unless you tweak them a bit. I recommend using a thin straight edged tool to bend the two columns of male pins slightly away from each other and then use care to reinstall the shield on the Mega.
> I had the same screen problems with mine at first, but noticed that the problem was slightly different or non existent, depending on which iAqua shield I was using. Being that they're all slightly different, I knew the problem with the screen had to be a hardware problem and not software. Tweaking the pins solved the problem.


Ok, thanks. I'm relieved it's not a completely unknown issue, and has a simple solution! I'll mess with it tonight. 

Visible progress is finally happening! I can't tell you how exciting it was to finally see the graphics coming up on screen.


----------



## O2surplus

Rev2.0 is coming along nicely. I added two more dosing pumps, for a total of 4. Two more led PWM channels for a total of 6. I also added 3 Atlas Scientific stamps for Ph, ORP, TDS measurements ect... I set the Atlas stamps up to send their data using either UART or I2C. A simple jumper swap is made to select between the two different communication protocols. 
Hopefully "Robsworld78"'s changes to the software will be able to take advantage of the new hardware.:hihi:


----------



## theknight

Looking good



O2surplus said:


> Rev2.0 is coming along nicely. I added two more dosing pumps, for a total of 4. Two more led PWM channels for a total of 6. I also added 3 Atlas Scientific stamps for Ph, ORP, TDS measurements ect... I set the Atlas stamps up to send their data using either UART or I2C. A simple jumper swap is made to select between the two different communication protocols.
> Hopefully "Robsworld78"'s changes to the software will be able to take advantage of the new hardware.:hihi:


----------



## kman

O2surplus said:


> Try re-seating the connection between the Mega and the iAqua shield. The male pins at the iAqua shield's 36 pin header don't make the best electrical connection to the Mega unless you tweak them a bit. I recommend using a thin straight edged tool to bend the two columns of male pins slightly away from each other and then use care to reinstall the shield on the Mega.
> I had the same screen problems with mine at first, but noticed that the problem was slightly different or non existent, depending on which iAqua shield I was using. Being that they're all slightly different, I knew the problem with the screen had to be a hardware problem and not software. Tweaking the pins solved the problem.


Hrm. I've seated and reseated the iAqua and the Arduino a bunch of times. I spread the wires various ways to try to improve the connection. 

I swapped in a different Arduino, too, just for kicks, since I have a second Mega on hand. Once I uploaded the sketch, no difference.

I've seated and reseated the TFT Shield. I reseated the LCD, plugged in directly to the TFT shield, and swapped in a 40 pin wire. No difference with any of these. Still the same distortion issue along the bottom.  And still won't restart properly, either, if I remove power and re-power it up. Same incomplete GUI loading. (until I reconnect USB and upload the sketch again, then it works fine)

Not sure what's wrong. 

I have a new TFT Shield on it's way, should be here early next week, so I can test swapping that out, and get the wiring modifications done so the touch screen will be functional.

On the bright side, I got the temp sensor all wired up and it's working, and shows onscreen what seems to be the correct temp (in my living room, at least). I soldered up the quick connections to the dosing pumps, too, so that's all wired and ready to rock. 










Oh, one other odd thing: The iAqua software seems to report the wrong day of the week? I use a simple sample RTC sketch to set the clock on the board, and I verified it with a different sketch that just displays the time. But when I load up the iAqua software, the GUI shows the correct date and time but seems to advance the day of the week by one day? I thought I had just entered it wrong at first, but now I've tried it a number of times and it always shows the same with iAqua only. Not a big deal, I suppose, but is that just a software glitch that will resolve once I can access the GUI via the touchscreen, or something I should worry about? (Edit: I just noticed the UTC offset was set for -5, not California's -8, but after changing that, it does not appear to have made any difference)

Well, at least I have plenty of work to do on the enclosure box, while I wait for the new TFT shield to arrive. :/


----------



## AnotherHobby

kman said:


> Hrm. I've seated and reseated the iAqua and the Arduino a bunch of times. I spread the wires various ways to try to improve the connection.
> 
> I swapped in a different Arduino, too, just for kicks, since I have a second Mega on hand. Once I uploaded the sketch, no difference.
> 
> I've seated and reseated the TFT Shield. I reseated the LCD, plugged in directly to the TFT shield, and swapped in a 40 pin wire. No difference with any of these. Still the same distortion issue along the bottom.  And still won't restart properly, either, if I remove power and re-power it up. Same incomplete GUI loading. (until I reconnect USB and upload the sketch again, then it works fine)
> 
> Not sure what's wrong.
> 
> I have a new TFT Shield on it's way, should be here early next week, so I can test swapping that out, and get the wiring modifications done so the touch screen will be functional.


It could be your SD card. The first SD card I used didn't work consistently at the fastest speed of the library, and I had to throttle it back. I got my hands on a different one, and it worked with the library at it's fastest speed. 

You can test it by changing this line: file.initFAT(SPISPEED_VERYHIGH);

to this: file.initFAT(SPISPEED_HIGH);

Other options include SPISPEED_MEDIUM or SPISPEED_LOW. If one of those lower speeds work, it's probably the SD card. I can tell you first hand, you won't want to use anything other than VERYHIGH or the interface slows down.



kman said:


> On the bright side, I got the temp sensor all wired up and it's working, and shows onscreen what seems to be the correct temp (in my living room, at least). I soldered up the quick connections to the dosing pumps, too, so that's all wired and ready to rock.


Very cool!



kman said:


> Oh, one other odd thing: The iAqua software seems to report the wrong day of the week? I use a simple sample RTC sketch to set the clock on the board, and I verified it with a different sketch that just displays the time. But when I load up the iAqua software, the GUI shows the correct date and time but seems to advance the day of the week by one day? I thought I had just entered it wrong at first, but now I've tried it a number of times and it always shows the same with iAqua only. Not a big deal, I suppose, but is that just a software glitch that will resolve once I can access the GUI via the touchscreen, or something I should worry about? (Edit: I just noticed the UTC offset was set for -5, not California's -8, but after changing that, it does not appear to have made any difference)


The names for the days of the week are stored in here:

char *Day[] = {"","Sun","Mon","Tue","Wed","Thu","Fri","Sat "};

It is called in the printDate routine as Day[weekday()]. In the Time library, weekday() will return 1-7, with Sunday being 1, which is why the 0 slot of the char list is empty. The weekday is calculated by the Time library based on the date in the RTC. I can see in your pic that month and day are correct, but did you verify that the year is also accurate? If that's correct, I have absolutely no idea why it's off by a day.


----------



## O2surplus

I'm using version 1.0.2 of the code that was released prior to 10/12/14. The day of the week and time are displayed correctly. If I upload the later code that was posted 10/12/2014, the day of the week is off by one day again. Version 1.0 suffered from the same "wrong day of the week" bug. In Version 1.0.2 that bug is gone. How did it get back into the latest version?


----------



## AnotherHobby

O2surplus said:


> I'm using version 1.0.2 of the code that was released prior to 10/12/14. The day of the week and time are displayed correctly. If I upload the later code that was posted 10/12/2014, the day of the week is off by one day again. Version 1.0 suffered from the same "wrong day of the week" bug. In Version 1.0.2 that bug is gone. How did it get back into the latest version?


That's funny, I searched back through the thread and realized there was a discussion about this. I was out of town, so I missed it and must have skimmed past it when I got back. I'll have to take a peek at it and see if I can figure out why it's doing that. I know it's correct on my unit, but I'm not running the exact same code that's posted. I'll be messing with it this weekend, so I'll let you know what I find.


----------



## kman

O2surplus said:


> I'm using version 1.0.2 of the code that was released prior to 10/12/14. The day of the week and time are displayed correctly. If I upload the later code that was posted 10/12/2014, the day of the week is off by one day again. Version 1.0 suffered from the same "wrong day of the week" bug. In Version 1.0.2 that bug is gone. How did it get back into the latest version?


Oh, there is a newer version than I'm running? I grabbed the code off the post on the first page, which is 1.0.1. Maybe the day of the week bug is fixed in the newer code.

Bump:


AnotherHobby said:


> It could be your SD card. The first SD card I used didn't work consistently at the fastest speed of the library, and I had to throttle it back. I got my hands on a different one, and it worked with the library at it's fastest speed.
> 
> You can test it by changing this line: file.initFAT(SPISPEED_VERYHIGH);
> 
> to this: file.initFAT(SPISPEED_HIGH);
> 
> Other options include SPISPEED_MEDIUM or SPISPEED_LOW. If one of those lower speeds work, it's probably the SD card. I can tell you first hand, you won't want to use anything other than VERYHIGH or the interface slows down.


Thanks! I'll give that a shot when I get home. And if that doesn't work, I'll try out a couple of different SD cards. (I just have to format them to FAT16) I have a couple of these 32mb (yes, that's right) cards from old Canon digital cameras (Canon was really stingy with their included card capacity, even for the time!) but I can probably spare one of the several 2gb cards I have with my camera, since the ones I use regularly now are all 8gb or more.


----------



## jmh474

So im abit lost now i thought we just had to up load code to the arduino and format SD to Fat 16 and up load images to SD card now people are on about other bit could someone put me on the right road as silly as it sound talk to me like im a 10 year old as im not very good with the software side of things thanks

Sent from my GT-S5360 using Tapatalk 2


----------



## kman

jmh474 said:


> So im abit lost now i thought we just had to up load code to the arduino and format SD to Fat 16 and up load images to SD card now people are on about other bit could someone put me on the right road as silly as it sound talk to me like im a 10 year old as im not very good with the software side of things thanks


As long as the hardware side is all good, that should be all you need to do.

I'm having hardware issues. Although apparently I'm running the wrong version of the software, too, but that should be easily solvable.


----------



## AnotherHobby

jmh474 said:


> So im abit lost now i thought we just had to up load code to the arduino and format SD to Fat 16 and up load images to SD card now people are on about other bit could someone put me on the right road as silly as it sound talk to me like im a 10 year old as im not very good with the software side of things thanks


From a hardware perspective, this is a massive DIY project (although O2's board eliminates a TON of the work if you use that). It's much more than just loading up images and copying files to an SD card.

From a software perspective, the amount of DIY is up to you. Assuming you don't want to customize anything yourself, you can do what you just said and load the images on the FAT16 formatted SD card and upload the software to the Arduino Mega. The only hiccup in the way of that so far is that I forgot to include the tinyFAT library in my upload. I'll be adding that to the next upload.

If you want to change anything about the GUI or functionality (add a probe, add more dosing pumps, add more temperature sensors, etc), you'll need to roll up your sleeves and dig in on the code side of things, or hope somebody else does it and posts it. I posted the project basically "as is" how I'm using it, with free license to repurpose and modify it as you wish. 

During testing, a few people have bumped into some bugs, which get sorted out through a little more testing, coding, and discussion. As bugs get discovered and fixed, new code gets (or will get) uploaded.

So I'm not sure where you are lost. If you are referring to the SD card code I just posted for kman, that was to test if there is a speed issue with the library and the specific SD card he is using. We don't know if that's it or not yet, but with any DIY you have to expect that you are going to run into things.


----------



## robsworld78

Nice looking board o2! Is it simple to use the existing pwm pins? There will be more needed for a fish feeder and fans I'm hoping.

kman, I hope you get the graphics looking proper. As far as the day not showing correct I had that too. Change the line for variable day to the following. You can type the days how you want them to display on the screen.



Code:


char *Day[] = {"","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};


----------



## O2surplus

robsworld78 said:


> Nice looking board o2! Is it simple to use the existing pwm pins? There will be more needed for a fish feeder and fans I'm hoping.


Rev2.0 only exists on my computer, so I can make changes to it if needed. By adding two additional dosing pumps and two more led channels, I've used up all the remaining digital PWM pins except for pins 0 & 1. Does the Fish feeder necessarily need a PWM signal? Or could it be activated by one of the remaining 6 analog pins? As far as needing a PWM signal for a cooling fan, I normally just derive that signal from one of the LED channels. Let me know what you think? I'll make whatever changes are needed to the hardware in order to make it compatible with your software. I'm really looking forward to your "sliders" LOL


----------



## robsworld78

I can handle the code but the hardware really has me confused. I have no idea what kind of pin is required for the feeder, I thought it was pwm. Hopefully someone can clarify, it would be nice to use analog if possible. If a fan can also be hooked up to an LED channel along with the lights then that works for me, I assumed it needed to be separated. I don't really care about the fans that much, just thought if there were extra pins why not. I plan to have a fan go on/off with the temperature of the water so I can cool the tank with evaporation in the summer months but that will need a relay I believe. I'll definitely get the ph going, as the atlas looks simple enough and cost isn't to high.

For testing I have a single LED on a meanwell LDD-700 driver which is hooked directly to the arduino and it works great. How many of those drivers can safely be hooked up to a single pwm pin before doing damage to the mega? How many fans could be hooked up? Any idea?

The sliders are super cool and work great. I also added one for the brightness level of the display which I can't test because my shipment got lost in the mail.  There's going to be a screen accessible from the main menu which will allow you to make any changes to the lights at any given time and there will be a resume button on the main menu which will put it back into the mode it should be. This is to separate it from the light mode screen so its clearer and more accessible. There's also lots of other small changes throughout. I'm getting closer everyday but unfortunately still lots to go.

On that shield is it possible to move the bnc connectors to the other side of the board with the power plug and have the screen 40pin connector near the end on the right side. Currently a 5" screen would hang over the edge of the board and would take more space. It looks like your board is about the size of a 5" screen so it would be nice to have them fit a little better to keep size down. Just a thought. I have an idea on packaging this thing together to make it look nice, I won't post it here, soon I'll start a thread and figure it out. I don't want to jack this thread completely.


----------



## AnotherHobby

robsworld78, I'm going to cherry pick your post for a few of the things I think I can help with.



robsworld78 said:


> I can handle the code but the hardware really has me confused. I have no idea what kind of pin is required for the feeder, I thought it was pwm. Hopefully someone can clarify, it would be nice to use analog if possible.


With regard to analog vs. digital pwm, think of it this way — analog sends out a straight 5v signal, and PWM varies the "pulse" of that signal. Analog is like hooking up a 5v power supply, albeit very low amperage — it's either on or off. PWM is similar in that it's a straight 5v, except that it varies the on/off of the 5v signal. This lets you control the speed or intensity of things like motors or LED lights. They seem to act like you are feeding them less voltage, but you aren't. The PWM allows things like motors not loose torque (since they get the same power), but they still slow down. 

I don't know if that makes sense or not, or if I even explained it that well, but if the feeder just needs 5v for a specific amount of time, analog will do the trick. If you need to control the actual speed of the motor in the feeder, and you are directly connected to it, then PWM is likely what you want. 



robsworld78 said:


> How many of those drivers can safely be hooked up to a single pwm pin before doing damage to the mega? How many fans could be hooked up? Any idea?


A single PWM pin on a Mega can handle 40 mA. It's as simple as that. There is no limit in the count, only in the current draw.



robsworld78 said:


> The sliders are super cool and work great. I also added one for the brightness level of the display which I can't test because my shipment got lost in the mail.  There's going to be a screen accessible from the main menu which will allow you to make any changes to the lights at any given time and there will be a resume button on the main menu which will put it back into the mode it should be. This is to separate it from the light mode screen so its clearer and more accessible. There's also lots of other small changes throughout. I'm getting closer everyday but unfortunately still lots to go.


This sounds pretty awesome. Is it all being built for the larger screen, or do you think it'd be easy to repurpose? These sound like improvements that people with PWM lighting would love. Maybe it's in the thread, but do you have link to the screen you bought? 



robsworld78 said:


> I don't want to jack this thread completely.


Don't worry about hijacking the thread. Seriously. Everybody in here would love to see and hear what you are up to, and nobody is in here who doesn't want to learn something new.


----------



## O2surplus

robsworld78 said:


> I can handle the code but the hardware really has me confused. I have no idea what kind of pin is required for the feeder, I thought it was pwm. Hopefully someone can clarify, it would be nice to use analog if possible.


 If the fish feeder comes with a "feed button" or just a simple timer, a simple 5V analog "on/off" signal should suffice. You'll need to post what model feeder that you intend to use and we'll figure out how to best hack the controls.



robsworld78 said:


> If a fan can also be hooked up to an LED channel along with the lights then that works for me, I assumed it needed to be separated. I don't really care about the fans that much, just thought if there were extra pins why not. I plan to have a fan go on/off with the temperature of the water so I can cool the tank with evaporation in the summer months but that will need a relay I believe. I'll definitely get the ph going, as the atlas looks simple enough and cost isn't to high.


This depends on what type of fan you intend to use? Will it be a A/C powered room fan or a smaller D/C computer fan? The A/C type could be controlled via a relay, just like everything else we have now. It would only cost us one analog pin. The D/C type could be triggered the same way, but instead of a relay, we'd use a transistor to switch the 12V power "on/off". I've already added an additional 12V reg to the new shield, so additional 12V devices will have enough power.




robsworld78 said:


> For testing I have a single LED on a meanwell LDD-700 driver which is hooked directly to the arduino and it works great. How many of those drivers can safely be hooked up to a single pwm pin before doing damage to the mega? How many fans could be hooked up? Any idea?


 The Meanwell LDD-H only pulls 5 micro amps on it's PWM input pin. I've got resistors installed on the shield to limit the Mega's outputs to 30 milli amps. You could control a truck load of LDD's from a single pin and still never overload the output. 






robsworld78 said:


> On that shield is it possible to move the bnc connectors to the other side of the board with the power plug and have the screen 40pin connector near the end on the right side. Currently a 5" screen would hang over the edge of the board and would take more space. It looks like your board is about the size of a 5" screen so it would be nice to have them fit a little better to keep size down. Just a thought. I have an idea on packaging this thing together to make it look nice, I won't post it here, soon I'll start a thread and figure it out. I don't want to jack this thread completely.


I could move it, but most of the TFT/LCD adapter shields on the market today (ElecFreaks,Sainsmart, ect..) already move the LCD's 40 pin header to the opposite side of the board. Take a look at the screen and adapter shield that you intend to use and you'll see what I mean. Better yet, post a link to it, cuz I could be way off base- LOL.


----------



## O2surplus

"Rob'sworld78"-

If running out of pins is a concern, I could always integrate this chip into the shield. It's the I2C controlled PCA9685 IC. It features 16 channels of 12 bit PWM . Imagine 16 channels of buttery smooth 12 bit dimming- https://www.adafruit.com/products/815 
All you'd need to do is modify the code to run it.:hihi:
https://www.adafruit.com/products/815


----------



## kman

robsworld78 said:


> kman, I hope you get the graphics looking proper. As far as the day not showing correct I had that too. Change the line for variable day to the following. You can type the days how you want them to display on the screen.
> 
> 
> 
> Code:
> 
> 
> char *Day[] = {"","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};


That fixed it perfectly. Thanks!

The 1.0.1 code has, instead of the (working) code above, this:



Code:


char *Day[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

That missing "", seems to be the difference.


----------



## robsworld78

AnotherHobby said:


> robsworld78, I'm going to cherry pick your post for a few of the things I think I can help with.


That would be appreciated! You explanation on different pins makes perfect sense, I'll remember that.



AnotherHobby said:


> Is it all being built for the larger screen, or do you think it'd be easy to repurpose


Not really sure what you mean, if you're talking about the sliders they can be used for anything and are actually pretty simple to make. The way they are wouldn't really work on a 3.2" screen but if math is split in half you could shrink them down. For you the sliders would be more of a pointer. 

Everything has been resized, I had to create all the images again as enlarging doesn't work. Luckily they were all on google images.  I'm only changing a few as I really like the ones you choose. I also changed times being displayed to am/pm, still need to set in 24hr. I noticed on yours the power icons on home page don't update automatically so I've added that. Since the unit needs restarting after setting the clock I added this line to your save button and that's what got me going on the smartStartup(), lol.



Code:


asm volatile ("  jmp 0");

I noticed during dosing the unit locks up because you're using delay(), does it have to be like that? I was going to change it over to millis() so the processor is freed up. I'm thinking if its doing a dosing and a schedule happens at that time it will skip it because the processor can't look at the alarm code till its complete and by that time its to late. I'm sure it would be very rare but could happen. For now I have the dosing tube turn red and the screen says feeding so a person doesn't think there unit froze, like I did. 

Not sure what feeder I'll use but it'll be one that can work on analog. It'll probably be that $20 PhysicsDude55 posted. I only plan to use it if I go away, there will be an option to use it with or without the feed button and a schedule. I do want to have it work with the 99% of feeders out there.

The water cooling fans will be 2 large 12v DC computer fans.

5 micro amps, thats crazy low, you knew next I would ask how much this draws.  Is that 40ma current the pwm current and not what the actual piece of equipment draws? For instance those fans will draw much more than 40ma but the pwm might only draw 5ma?

I like the resistors so a person can't overload the board, smart! 

Now I think I understand the board. Your board is sandwiched between the mega and the shield? If so then yeah it should be good as is, I was thinking I didn't need the shield anymore.

Bump: I saw that board and I want it! :hihi: I have the Storm LED controller and wish I had the StormX, the dimming isn't perfect and I'm picky, lol. I don't care about the extra pins but I like buttery smooth. I'll see what it take for me to update to 4096 dimming, I'm guessing its not hard and even if it is... buttery smooth, mmmmmmm. 

kman, glad to hear, did you get the screen displaying correctly?


----------



## kman

AnotherHobby said:


> It could be your SD card. The first SD card I used didn't work consistently at the fastest speed of the library, and I had to throttle it back. I got my hands on a different one, and it worked with the library at it's fastest speed.
> 
> You can test it by changing this line: file.initFAT(SPISPEED_VERYHIGH);
> 
> to this: file.initFAT(SPISPEED_HIGH);
> 
> Other options include SPISPEED_MEDIUM or SPISPEED_LOW. If one of those lower speeds work, it's probably the SD card. I can tell you first hand, you won't want to use anything other than VERYHIGH or the interface slows down.


The HIGH speed setting definitely slows down the display!

It didn't fix the issue, though. :/

Trying another card did, though.  One of my lower end 2gb cards (still FAT16) worked perfectly!

Now all I need to do is wait for the new LCD shield to arrive so I can mod the wiring for the touch interface.

Meanwhile, time to get friendly with my drill and the enclosure...

Thanks again!



robsworld78 said:


> kman, glad to hear, did you get the screen displaying correctly?


Yup.  Super pleased right about now...


----------



## jmh474

Well i give up trying to add the auto feeder and buzzer for heater fail iv got to say hats off to you anotherhobby for putting this together.

Anotherhobby - when i did my build im thinking of doing a guide on a website called inscrutables if that's ok with you think iv still got another 2 weeks till my parts get here sob sob sob

Sent from my GT-S5360 using Tapatalk 2


----------



## AnotherHobby

jmh474 said:


> Anotherhobby - when i did my build im thinking of doing a guide on a website called inscrutables if that's ok with you think iv still got another 2 weeks till my parts get here


I'm quite familiar with instructables. To be honest, I'd prefer somebody doesn't just take my project and post their own intractable or something like that from it. I might end up doing that eventually, or I might not, but I'd prefer that be left up to me if I decide I want it done.


----------



## jmh474

I under stand that my friend ill be looking out for your post if you go ahead with it

And iv got to say it again grate controller 

Sent from my GT-S5360 using Tapatalk 2


----------



## AnotherHobby

*UPDATE:* I have posted version 1.0.3 of iAqua in the first post. Here is a link: iAqua.zip

I also updated the libraries zip file on the first page to include the missing tinyFAT library.

Upon uploading, I noticed that I never uploaded version 1.0.2! I don't know how I missed that, but it has better math for dosing calculations, it updates the power outputs on the screen immediately (something robsworld78 mentioned and I thought to myself, "yes it does" — but didn't realize that was version 1.0.2 that I never posted), and it fixed the day being off bug that was mentioned. I apologize for not posting this several weeks ago. 

Version 1.0.3 brings the updated smart startup that I posted earlier, as well as another smart startup bug I found where even if you disabled a power schedule, it might still turn the output on. I also added robsworld78's smart startup routine for the PWM lighting. Furthermore, there was a bug if you didn't "fill" your reservoirs and let them go empty in the system, they would draw vertical bars outside of the actual dosing reservoir icons. That should be fixed now. The last bug I fixed involved the temperature, where if the temp icon went red on the home screen, it would turn the text for the feeding info on the home screen red as well.

This still has the Current Satellite Plus IR codes in it. I'm using an Ecoxotic E-Series now, but other than that, this is the exact code I'm running. If anybody else is using an E-series, let me know an I can post all of the IR codes. It's an easy change.


----------



## kman

Ah-ha! That's why O2 was referring to 1.0.2 and I could only find 1.0.1.

I look forward to loading this up, in just a minute. 

Did anything in the Zip file change other than the iAqua.ino file?

Project box is coming along, I've got the outlets in, finally. Going to start figuring out how to wire the relay AC wiring next.


----------



## AnotherHobby

kman said:


> Ah-ha! That's why O2 was referring to 1.0.2 and I could only find 1.0.1.


Yeah... sorry. :icon_redf



kman said:


> Did anything in the Zip file change other than the iAqua.ino file?


Nope. I think it's just the iAqua file.



kman said:


> Project box is coming along, I've got the outlets in, finally. Going to start figuring out how to wire the relay AC wiring next.


The first time you plug it in and let it start running your tank is a gratifying moment. You aren't _that_ far away.


----------



## O2surplus

AnotherHobby said:


> The first time you plug it in and let it start running your tank is a gratifying moment. You aren't _that_ far away.


I have to agree. It's very gratifying. Just the auto dosing feature alone has already made a dramatic difference in the growth of my plants. Now if I could just find enough time to trim them. LOL:hihi:


----------



## kman

Heya, AH (or O2):

Quick question about wiring the relays to AC. Do I have this correct?










(I know traditionally hot would be black, and neutral would be white, but it wouldn't have shown up well against a white (or black!) background so I went with a DC color scheme for this)

Just thought I'd confirm this before I burn down the house. :iamwithst


----------



## O2surplus

kman said:


> Heya, AH (or O2):
> 
> Quick question about wiring the relays to AC. Do I have this correct?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> (I know traditionally hot would be black, and neutral would be white, but it wouldn't have shown up well against a white (or black!) background so I went with a DC color scheme for this)
> 
> Just thought I'd confirm this before I burn down the house. :iamwithst



That looks correct. Just make sure to use the COMM & NO terminals, when you make the connections at the relay block. LOL- I always wear safety glasses and keep a fire extinguisher nearby when I play with A/C. I hate the stuff.


----------



## kman

O2surplus said:


> That looks correct. Just make sure to use the COMM & NO terminals, when you make the connections at the relay block. LOL- I always wear safety glasses and keep a fire extinguisher nearby when I play with A/C. I hate the stuff.


Well, I'm using your board, so 12v (on your board) goes to VCC on the relay, and GND goes to GND, and 1 to 8 goes to 1 to 8. 

(or rather, 1 - 8 goes to the individual labeled device slots)


----------



## theknight

It will work the way you have it wired, just make sure you break the bridge between the two terminals on the hot side, and you can simplify your neutral by keeping the bridge intact and daisy chaining or wiring the neutrals in series. 



kman said:


> Heya, AH (or O2):
> 
> Quick question about wiring the relays to AC. Do I have this correct?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> (I know traditionally hot would be black, and neutral would be white, but it wouldn't have shown up well against a white (or black!) background so I went with a DC color scheme for this)
> 
> Just thought I'd confirm this before I burn down the house. :iamwithst


----------



## AnotherHobby

theknight said:


> It will work the way you have it wired, just make sure you break the bridge between the two terminals on the hot side, and you can simplify your neutral by keeping the bridge intact and daisy chaining or wiring the neutrals in series.


Excellent advice. I'll pull up this pic from way earlier in the thread, see how my neutral wires are wired as theknight suggests, daisy chaining from one to the next. As he says, only cut the bridge on the hot side to make it easier. I couldn't have done this easy of wiring on the neutral if I had cut the bridge on that side.


----------



## kman

Yeah. I wish I had noticed that BEFORE I cut the bridge on the neutral side. I realized this late last night when I finally started laying out how I wanted to run the wiring.  Big facepalm moment!

I should still be able to replicate it by putting a short 1" jumper on the screw terminals to re-link the neutrals, however, so could be worse.

Wiring in mine won't be quite as simple as AH's, though, since my AC outlets aren't in as straight of a line (two columns of horizontal plugs). Also, I decided to put in one GFCI outlet as the first in the chain, just as a safety measure. I also have the two columns flipped to accommodate bulky DC transformers more easily.



















(Obviously I have a ways to go yet. I might even paint the whole box before everything is final. Master power switch will likely be in the open space by the plugs, although I may rotate it to the side instead. I'll also probably, eventually, migrate to a better enclosure, but since I found this box in a closeout rack for $5 I decided it would do as an interim solution)


----------



## rottison

02 what is the icon to the right of the fish feeding icon looks like a sun? I have a ? there did I miss some thing


----------



## alpha1172

kman is the gfi you running always going to be hot? 

How are you wiring it up? it would have to be always hot , ie not relay controlled, passthrough feeding the relay board in order to protect the outlets.


----------



## AnotherHobby

rottison said:


> 02 what is the icon to the right of the fish feeding icon looks like a sun? I have a ? there did I miss some thing


That icon is for lighting modes. If you haven't configured the lights and schedules, you'll get a question mark. I put that in there if the code doesn't know what mode you are in. That question mark is an actual graphic file I made that's supposed to be there.


----------



## rottison

ok now I get it


----------



## kman

alpha1172 said:


> kman is the gfi you running always going to be hot?
> 
> How are you wiring it up? it would have to be always hot , ie not relay controlled, passthrough feeding the relay board in order to protect the outlets.


Good point. I was intially thinking it would interrupt the neutral as well as the hot, but they don't. It should still protect two devices plugged directly into that outlet, however, so I'll choose carefully the ones I want protected most.

When I eventually move the project to a new enclosure, if I'm still using full size outlets, I might add a 5th outlet that's always on at the start of the chain (before the power line goes to the relays). Then it would protect them all.


----------



## alpha1172

kman said:


> Good point. I was intially thinking it would interrupt the neutral as well as the hot, but they don't. It should still protect two devices plugged directly into that outlet, however, so I'll choose carefully the ones I want protected most.
> 
> When I eventually move the project to a new enclosure, if I'm still using full size outlets, I might add a 5th outlet that's always on at the start of the chain (before the power line goes to the relays). Then it would protect them all.



sounds like a plan. It seems like you have enough room to put the gfi vertical next to the horizontal plugs, then you could be protected and still have 8 controlled outlets.

cant wait to see the finished project


----------



## robsworld78

There are still bugs in the smartStartup(), the main ones are when setting the power settings. If you have a schedule finishing the next day it doesn't work properly. 

I've re-done it, now it will always turn on properly.



Code:


void smartStartup()
{  
  RTC.now();

  // get the current time in UNIX time, which is FAR easier for time calculations and comparisons
  // also must set UTC offset for mktime to calcuate stuff correct
  time_t currentStamp = tmConvert_t(year(),month(),day(),hour(),minute(),second());
  time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm
  time_t powerOn;
  time_t powerOff;
  time_t powerOffNextDay;
  
  //// POWER STARTUP:  LIGHTS 1
  // read in the power schedule and see if we are at a time when it should be on
  if (schedLights1.active == 1) 
  {  
    time_t powerOn = tmConvert_t(year(),month(),day(),schedLights1.onHour,schedLights1.onMinute,0); // get a unix time stamp for the power on
    time_t powerOff = tmConvert_t(year(),month(),day(),schedLights1.offHour,schedLights1.offMinute,0); // get a unix time stamp for the power off  
    time_t powerOffNextDay = tmConvert_t(year(),month(),day(),schedLights1.offHour,schedLights1.offMinute,0);   
    powerOffNextDay = powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrLight1_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrLight1_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrLight1_On();
      else AlarmPwrLight1_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrLight1_On();
    else  AlarmPwrLight1_Off();
  }
    
  //// POWER STARTUP:  LIGHTS 2
  // read in the power schedule and see if we are at a time when it should be on
  if (schedLights2.active == 1) 
  {  
    powerOn = tmConvert_t(year(),month(),day(),schedLights2.onHour,schedLights2.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedLights2.offHour,schedLights2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedLights2.offHour,schedLights2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrLight2_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrLight2_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrLight2_On();
      else AlarmPwrLight2_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrLight2_On();
    else AlarmPwrLight2_Off();
  }

  //// POWER STARTUP:  FILTER  
  AlarmPwrFilter_On(); // the filter is ALWAYS ON

  //// POWER STARTUP:  CIRCULATION PUMP
  // read in the power schedule and see if we are at a time when it should be on
  if (schedCirc.active == 1) 
  {
    powerOn = tmConvert_t(year(),month(),day(),schedCirc.onHour,schedCirc.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedCirc.offHour,schedCirc.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedCirc.offHour,schedCirc.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay=powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrCirc_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrCirc_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrCirc_On();
      else AlarmPwrCirc_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrCirc_On();
    else AlarmPwrCirc_Off();
  }    

  //// POWER STARTUP:  HEATER  
  AlarmPwrHeat_On(); // the heater is ALWAYS ON

  //// POWER STARTUP:  CO2
  // read in the power schedule and see if we are at a time when it should be on
  if (schedCo2.active == 1) 
  {
    powerOn = tmConvert_t(year(),month(),day(),schedCo2.onHour,schedCo2.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedCo2.offHour,schedCo2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedCo2.offHour,schedCo2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay=powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrCO2_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrCO2_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrCO2_On();
      else AlarmPwrCO2_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrCO2_On();
    else AlarmPwrCO2_Off();
  }

  //// POWER STARTUP:  AUX 1
  // read in the power schedule and see if we are at a time when it should be on
  if (schedAux1.active == 1)
  {
    powerOn = tmConvert_t(year(),month(),day(),schedAux1.onHour,schedAux1.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedAux1.offHour,schedAux1.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedAux1.offHour,schedAux1.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay=powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrAux1_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrAux1_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrAux1_On();
      else AlarmPwrAux1_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrAux1_On();
    else AlarmPwrAux1_Off();
  }

  //// POWER STARTUP:  AUX 2
  // read in the power schedule and see if we are at a time when it should be on
  if (schedAux2.active == 1)
  {
    powerOn = tmConvert_t(year(),month(),day(),schedAux2.onHour,schedAux2.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedAux2.offHour,schedAux2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedAux2.offHour,schedAux2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay=powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrAux2_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrAux2_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrAux2_On();
      else AlarmPwrAux2_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrAux2_On();
    else AlarmPwrAux2_Off();
  }

  // if the light power is on, we can set the correct lighting mode
  // rather than try to start half way into a ramp, we see if we are closer to the end or begining
  // then we go to the closest mode, which is good enough for a reboot recovery
  if (globalPower.pwrLight1==1) // only bother if the lights are on
  {  
    // first check to see if we are in ramp 1
    time_t rampStart = tmConvert_t(year(),month(),day(),ramp1.onHour,ramp1.onMinute,0); // get a unix time stamp for the ramp start
    //rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset

    // first we need to check if we are before ramp 1
    if (rampStart>currentStamp) // if we are before ramp 1
    {
      irsend.sendNEC(M4,32); // flip to moon
      currentLightMode=3;
    }
    else if (rampStart>=currentStamp) // if we are past the start of  ramp 1
    {
      int rampEnd=((ramp1.offHour*60)+(ramp1.offMinute))*60; // calculate how many seconds long the ramp is
      rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
      if (currentStamp<rampEnd) // if we are before the end of the ramp
      {
        int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
        int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
        if (secondsBackToStart>secondsToEnd) 
        {
          irsend.sendNEC(M4,32); // flip to moonlight
          currentLightMode=3;
        }
        else 
        {
          irsend.sendNEC(M3,32); // flip to low sun
          currentLightMode=2;
        }
      }
    }
    else // move on to ramp 2
    {
      rampStart = tmConvert_t(year(),month(),day(),ramp2.onHour,ramp2.onMinute,0); // get a unix time stamp for the ramp start
      //rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset

      // first we need to check if we are between the previous ramp and this ramp
      if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
      {
        irsend.sendNEC(M3,32); // flip to low sun
        currentLightMode=2;
      }
      else if (rampStart>=currentStamp) // if we are past the start of  ramp 2
      {
        int rampEnd=((ramp2.offHour*60)+(ramp2.offMinute))*60; // calculate how many seconds long the ramp is
        rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
        if (currentStamp<rampEnd) // if we are before the end of the ramp
        {
          int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
          int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
          if (secondsBackToStart>secondsToEnd) 
          {
            irsend.sendNEC(M3,32); // flip to low sun
            currentLightMode=2;
          }
          else 
          {
            irsend.sendNEC(M2,32); // flip to mid sun
            currentLightMode=1;
          }
        }
      }
      else // move on to ramp 3
      {
        rampStart = tmConvert_t(year(),month(),day(),ramp3.onHour,ramp3.onMinute,0); // get a unix time stamp for the ramp start
        //rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset

        // first we need to check if we are between the previous ramp and this ramp
        if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
        {
          irsend.sendNEC(M2,32); // flip to mid sun
          currentLightMode=1;
        }
        else if (rampStart>=currentStamp) // if we are past the start of  ramp 3
        {
          int rampEnd=((ramp3.offHour*60)+(ramp3.offMinute))*60; // calculate how many seconds long the ramp is
          rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
          if (currentStamp<rampEnd) // if we are before the end of the ramp
          {
            int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
            int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
            if (secondsBackToStart>secondsToEnd) 
            {
              irsend.sendNEC(M2,32); // flip to mid sun
              currentLightMode=1;
            }
            else 
            {
              irsend.sendNEC(M1,32); // flip to high sun
              currentLightMode=0;
            }
          }
        }
        else // move on to ramp 4
        {
          rampStart = tmConvert_t(year(),month(),day(),ramp4.onHour,ramp4.onMinute,0); // get a unix time stamp for the ramp start
          //rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset]

          // first we need to check if we are between the previous ramp and this ramp
          if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
          {
            irsend.sendNEC(M1,32); // flip to high sun
            currentLightMode=0;
          }
          else if (rampStart>=currentStamp) // if we are past the start of  ramp 4
          {
            int rampEnd=((ramp4.offHour*60)+(ramp4.offMinute))*60; // calculate how many seconds long the ramp is
            rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
            if (currentStamp<rampEnd) // if we are before the end of the ramp
            {
              int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
              int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
              if (secondsBackToStart>secondsToEnd) 
              {
                irsend.sendNEC(M1,32); // flip to high sun
                currentLightMode=0;
              }
              else 
              {
                irsend.sendNEC(M2,32); // flip to mid sun
                currentLightMode=1;
              }
            }
          }
          else // move on to ramp 5
          {    
            rampStart = tmConvert_t(year(),month(),day(),ramp5.onHour,ramp5.onMinute,0); // get a unix time stamp for the ramp start
            //rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset]

            // first we need to check if we are between the previous ramp and this ramp
            if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
            {
              irsend.sendNEC(M2,32); // flip to mid sun
              currentLightMode=1;
            }
            else if (rampStart>=currentStamp) // if we are past the start of  ramp 5
            {
              int rampEnd=((ramp5.offHour*60)+(ramp5.offMinute))*60; // calculate how many seconds long the ramp is
              rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
              if (currentStamp<rampEnd) // if we are before the end of the ramp
              {
                int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
                int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
                if (secondsBackToStart>secondsToEnd) 
                {
                  irsend.sendNEC(M2,32); // flip to mid sun
                  currentLightMode=1;
                }
                else 
                {
                  irsend.sendNEC(M3,32); // flip to low sun
                  currentLightMode=2;
                }
              }
            }
            else // move on to ramp 6
            {
              rampStart = tmConvert_t(year(),month(),day(),ramp6.onHour,ramp6.onMinute,0); // get a unix time stamp for the ramp start
              //rampStart=rampStart-(UTC_Offset*60*60); // remove the UTC offset]

              // first we need to check if we are between the previous ramp and this ramp
              if (rampStart>currentStamp) // if we are not in the previous ramp, but are still before this one
              {
                irsend.sendNEC(M3,32); // flip to low sun
                currentLightMode=2;
              }
              else if (rampStart>=currentStamp) // if we are past the start of  ramp 6
              {
                int rampEnd=((ramp6.offHour*60)+(ramp6.offMinute))*60; // calculate how many seconds long the ramp is
                rampEnd=(currentStamp+rampEnd); // add the ramp seconds to the ramp start to get the end time of the ramp
                if (currentStamp<rampEnd) // if we are before the end of the ramp
                {
                  int secondsBackToStart=(currentStamp-rampStart); // calculate how long since it started
                  int secondsToEnd=(rampEnd-currentStamp); // calculate how many seconds until the end
                  if (secondsBackToStart>secondsToEnd) 
                  {
                    irsend.sendNEC(M3,32); // flip to low sun
                    currentLightMode=2;
                  }
                  else 
                  {
                    irsend.sendNEC(M4,32); // flip to moonlight
                    currentLightMode=3;
                  }
                }
              }
            }
          }
        }
      }    
    }
  }  
  if (currentLightMode==5) currentLightMode=3;

  if (lightCSP==false) setStartupPWMLighting(); // if not using IR lighting, then startup lights with PWM
  checkLighting();
}


----------



## AnotherHobby

robsworld78 said:


> There are still bugs in the smartStartup(), the main ones are when setting the power settings. If you have a schedule finishing the next day it doesn't work properly.
> 
> I've re-done it, now it will always turn on properly.


Yes, you are correct.

So last night I was working on another controller project that uses just the lighting startup part of this same code by comparing the ramps, and I started doing a whole bunch of bug testing on it, and noticed the same issue you did with regards to wrapping past midnight. I also noticed a few other things not quite right, so I reworked that whole routine last night, but it was for the other project. I used different variable names and such, so I can't just copy/paste. It was also just the lighting and not the power.

It's great that I won't have to go through the power part since you've done that! Thank you very much! I still need to compare the lighting startup with my other project though. Since I had reworked a bunch of it, I'm not sure if it's a bug that copied over, or one that I introduced in the other project. Do you notice if the lighting is correct when you've tested?

I never noticed it before because it pretty much never reboot it.


----------



## robsworld78

Could you post the lighting part you did for the other project? I can figure out the variables. 

The lighting has issues as well but not as bad. Would you believe I had the lighting fixed as well, then I posted over the code and didn't realize it and lost all my hard work, I was not a happy camper.  The worst is I can't remember how I fixed it, it was a lot of work. The power does work good though.

On the lighting if a ramp starts after midnight it will revert to moon everytime which isn't so bad. 

Yes I've put way to much time into this as its hardly used, I kept noticing it because I've upload like a 1000 times to this board and it wouldn't fire up like it was suppose to.


----------



## AnotherHobby

robsworld78 said:


> Could you post the lighting part you did for the other project? I can figure out the variables.
> 
> The lighting has issues as well but not as bad. Would you believe I had the lighting fixed as well, then I posted over the code and didn't realize it and lost all my hard work, I was not a happy camper.  The worst is I can't remember how I fixed it, it was a lot of work. The power does work good though.
> 
> On the lighting if a ramp starts after midnight it will revert to moon everytime which isn't so bad.


I've posted the code below. I think the main difference was that I used the term fade instead of ramp, but I don't recall if there are other differences. I didn't look at them at all, I just copied the code for you. There are a ton of serial prints in there commented out for easy troubleshooting. This may still flip to moon after midnight. I don't recall... it was a late night. 



robsworld78 said:


> Yes I've put way to much time into this as its hardly used, I kept noticing it because I've upload like a 1000 times to this board and it wouldn't fire up like it was suppose to.


Oooooooh damn! That sucks! I've actually done very similar things before. Or I've made a whole bunch of changes, was compiling and uploading, but not saving, and then did something dumb to lose it. Or I've done a massive search/replace without enough undo's to get back out of it. So yeah, I've hosed myself more than once. I have not burned out my board with uploads though. I'm surprised. 




Code:


void smartStartup()
{

  RTC.now();

  int onHour, offHour;

  // get the current time in UNIX time, which is FAR easier for time calculations and comparisons
  time_t currentTime = tmConvert_t(year(),month(),day(),hour(),minute(),second());

  Serial.print("currentTime: ");
  Serial.print(currentTime);
  Serial.print("\n");

  // first check to see if we are in fade 1
  time_t fadeStart = tmConvert_t(year(),month(),day(),fade1.onHour,fade1.onMinute,0); // get a unix time stamp for the fade start

  // first we need to check if we are before fade 1
  if (fadeStart>currentTime) // if we are before fade 1
  {
    //Serial.println("before fade 1");
    irsend.sendNEC(MOON,32); // flip to moon
    currentLightMode=3;
    lastFade=6;
  }
  else if (currentTime>=fadeStart) // if we are past the start of  fade 1
  {
    //Serial.println("past fade 1 start");
    unsigned long fadeEnd=((fade1.durationHours*60)+(fade1.durationMinutes))*60; // calculate how many seconds long the fade is
    fadeEnd=(fadeStart+fadeEnd); // add the fade seconds to the fade start to get the end time of the fade
    if (currentTime<fadeEnd) // if we are before the end of the fade
    {
      //Serial.println("in fade 1");
      int secondsBackToStart=(currentTime-fadeStart); // calculate how long since it started
      int secondsToEnd=(fadeEnd-currentTime); // calculate how many seconds until the end
      if (secondsBackToStart>secondsToEnd) 
      {
        irsend.sendNEC(MOON,32); // flip to moonlight
        currentLightMode=3;
        lastFade=1;
      }
      else 
      {
        irsend.sendNEC(M1,32); // flip to low sun
        currentLightMode=2;
        lastFade=1;
      }
    }

    else // move on to fade 2
    {
      // Serial.println("checking fade 2");
      fadeStart = tmConvert_t(year(),month(),day(),fade2.onHour,fade2.onMinute,0); // get a unix time stamp for the fade start

      // first we need to check if we are between the previous fade and this fade
      if (fadeStart>currentTime) // if we are not in the previous fade, but are still before this one
      {
        //Serial.println("in before fade 2");
        irsend.sendNEC(M1,32); // flip to low sun
        currentLightMode=2;
        lastFade=1;
      }
      else if (currentTime>=fadeStart) // if we are past the start of  fade 2
      {
        //Serial.println("past fade 2 start");
        unsigned long fadeEnd=((fade2.durationHours*60)+(fade2.durationMinutes))*60; // calculate how many seconds long the fade is
        fadeEnd=(fadeStart+fadeEnd); // add the fade seconds to the fade start to get the end time of the fade
        if (currentTime<fadeEnd) // if we are before the end of the fade
        {
          //Serial.println("in fade 2");
          int secondsBackToStart=(currentTime-fadeStart); // calculate how long since it started
          int secondsToEnd=(fadeEnd-currentTime); // calculate how many seconds until the end
          if (secondsBackToStart>secondsToEnd) 
          {
            irsend.sendNEC(M1,32); // flip to low sun
            currentLightMode=2;
            lastFade=2;
          }
          else 
          {
            irsend.sendNEC(M1,32); // flip to mid sun
            currentLightMode=1;
            lastFade=2;
          }
        }

        else // move on to fade 3
        {
          //Serial.println("checking fade 3");
          fadeStart = tmConvert_t(year(),month(),day(),fade3.onHour,fade3.onMinute,0); // get a unix time stamp for the fade start
          // first we need to check if we are between the previous fade and this fade
          if (fadeStart>currentTime) // if we are not in the previous fade, but are still before this one
          {
            //Serial.println("before fade 3");
            irsend.sendNEC(M2,32); // flip to mid sun
            currentLightMode=1;
            lastFade=2;
          }
          else if (currentTime>=fadeStart) // if we are past the start of  fade 3
          {
            //Serial.println("past fade 3 start");
            unsigned long fadeEnd=((fade3.durationHours*60)+(fade3.durationMinutes))*60; // calculate how many seconds long the fade is
            fadeEnd=(fadeStart+fadeEnd); // add the fade seconds to the fade start to get the end time of the fade
            if (currentTime<fadeEnd) // if we are before the end of the fade
            {
              //Serial.println("in fade 3");
              int secondsBackToStart=(currentTime-fadeStart); // calculate how long since it started
              int secondsToEnd=(fadeEnd-currentTime); // calculate how many seconds until the end
              if (secondsBackToStart>secondsToEnd) 
              {
                irsend.sendNEC(M2,32); // flip to mid sun
                currentLightMode=1;
                lastFade=3;
              }
              else 
              {
                irsend.sendNEC(DAYLIGHT,32); // flip to high sun
                currentLightMode=0;
                lastFade=3;
              }
            }

            else // move on to fade 4
            //Serial.println("checking fade 4");
            {
              fadeStart = tmConvert_t(year(),month(),day(),fade4.onHour,fade4.onMinute,0); // get a unix time stamp for the fade start
              // first we need to check if we are between the previous fade and this fade
              if (fadeStart>currentTime) // if we are not in the previous fade, but are still before this one
              {
                //Serial.println("before fade 4");
                irsend.sendNEC(DAYLIGHT,32); // flip to high sun
                currentLightMode=0;
                lastFade=3;
              }
              else if (currentTime>=fadeStart) // if we are past the start of  fade 4
              {
                //Serial.println("past fade 4 start");
                unsigned long fadeEnd=((fade4.durationHours*60)+(fade4.durationMinutes))*60; // calculate how many seconds long the fade is
                fadeEnd=(fadeStart+fadeEnd); // add the fade seconds to the fade start to get the end time of the fade
                if (currentTime<fadeEnd) // if we are before the end of the fade
                {
                  //Serial.println("in fade 4");
                  int secondsBackToStart=(currentTime-fadeStart); // calculate how long since it started
                  int secondsToEnd=(fadeEnd-currentTime); // calculate how many seconds until the end
                  if (secondsBackToStart>secondsToEnd) 
                  {
                    irsend.sendNEC(DAYLIGHT,32); // flip to high sun
                    currentLightMode=0;
                    lastFade=4;
                  }
                  else 
                  {
                    irsend.sendNEC(M2,32); // flip to mid sun
                    currentLightMode=1;
                    lastFade=4;
                  }
                }

                else // move on to fade 5
                {    
                  // Serial.println("checking fade 5");
                  fadeStart = tmConvert_t(year(),month(),day(),fade5.onHour,fade5.onMinute,0); // get a unix time stamp for the fade start
                  // first we need to check if we are between the previous fade and this fade
                  if (fadeStart>currentTime) // if we are not in the previous fade, but are still before this one
                  {
                    //Serial.println("before fade 5");
                    irsend.sendNEC(M2,32); // flip to mid sun
                    currentLightMode=1;
                    lastFade=4;
                  }
                  else if (currentTime>=fadeStart) // if we are past the start of  fade 5
                  {
                    //Serial.println("past fade 5 start");
                    unsigned long fadeEnd=((fade5.durationHours*60)+(fade5.durationMinutes))*60; // calculate how many seconds long the fade is
                    fadeEnd=(fadeStart+fadeEnd); // add the fade seconds to the fade start to get the end time of the fade
                    if (currentTime<fadeEnd) // if we are before the end of the fade
                    {
                      //Serial.println("in fade 5");
                      int secondsBackToStart=(currentTime-fadeStart); // calculate how long since it started
                      int secondsToEnd=(fadeEnd-currentTime); // calculate how many seconds until the end
                      if (secondsBackToStart>secondsToEnd) 
                      {
                        irsend.sendNEC(M2,32); // flip to mid sun
                        currentLightMode=1;
                        lastFade=5;
                      }
                      else 
                      {
                        irsend.sendNEC(M1,32); // flip to low sun
                        currentLightMode=2;
                        lastFade=5;
                      }
                    }

                    else // move on to fade 6
                    {
                      //Serial.println("checking fade 6");
                      fadeStart = tmConvert_t(year(),month(),day(),fade6.onHour,fade6.onMinute,0); // get a unix time stamp for the fade start
                      // first we need to check if we are between the previous fade and this fade
                      if (fadeStart>currentTime) // if we are not in the previous fade, but are still before this one
                      {
                        //Serial.println("before fade 6");
                        irsend.sendNEC(M1,32); // flip to low sun
                        currentLightMode=2;
                        lastFade=5;
                      }
                      else if (currentTime>=fadeStart) // if we are past the start of  fade 6
                      {
                        //Serial.println("past fade 6 start");
                        unsigned long fadeEnd=((fade6.durationHours*60)+(fade6.durationMinutes))*60; // calculate how many seconds long the fade is
                        fadeEnd=(fadeStart+fadeEnd); // add the fade seconds to the fade start to get the end time of the fade
                        if (currentTime<fadeEnd) // if we are before the end of the fade
                        {
                          //Serial.println("in fade 6");
                          int secondsBackToStart=(currentTime-fadeStart); // calculate how long since it started
                          int secondsToEnd=(fadeEnd-currentTime); // calculate how many seconds until the end
                          if (secondsBackToStart>secondsToEnd) 
                          {
                            irsend.sendNEC(M1,32); // flip to low sun
                            currentLightMode=2;
                            lastFade=6;
                          }
                          else 
                          {
                            irsend.sendNEC(MOON,32); // flip to moonlight
                            currentLightMode=3;
                            lastFade=6;
                          }
                        }
                        else // if we are after everything else
                        {
                          //Serial.println("past fade 6 end");
                          irsend.sendNEC(MOON,32); // flip to moonlight
                          currentLightMode=3;
                          lastFade=6;
                        }

                      }
                    }
                  }
                }
              }
            }
          }
        }
      }    
    }
  }
}


----------



## robsworld78

Thanks for posting, I'll see how that works.

The serial prints are one of the nicest features, but yeah can make the code get hard to navigate, I'm wearing out my scroll wheel 

I can only imagine how many times you've uploaded. :hihi:

The lighting fix created a ramp end time using the next ramp start time then basically doing the same as the power outputs.


----------



## robsworld78

Well I got that code moved but it performs the same way, as soon as a ramp goes over midnight it doesn't work. 

I have some other things I want to get done so I'm going to leave it for a week or so, I've played enough with that procedure for now.  I'll definitely post once I get it working.


----------



## kman

alpha1172 said:


> sounds like a plan. It seems like you have enough room to put the gfi vertical next to the horizontal plugs, then you could be protected and still have 8 controlled outlets.
> 
> cant wait to see the finished project


Unfortunately this box is not quite deep enough to put the outlets vertically (else it would have been a lot simpler!). For $5 I wasn't going to complain. 

Eventually I want to move it to a different enclosure, though, once everything is all done and up and running properly. At that point I might add the unswitched GFCI outlet.

Meanwhile, my new TFT shield came today, so I'm hoping I'll have time to fix the wiring on it so I can finally use the touch interface! YAYYYY!!!

I still need to build some sort of breakout box for the dosing pumps, since this box will live on the floor and the tank is too high up to pump everything up from there. And finalize the AC wiring (mostly planned, just need to do it). Still so much to do! But getting closer and closer...


----------



## robsworld78

It's done.  The smartStartup works perfectly now. Was up all night doing it, couldn't stop as I was in the groove. You can start ramp 1 at 11pm and finish ramp 6 at 2pm and anything in between, guaranteed to work! You can get rid of that question mark image now. 



Code:


void smartStartup()
{  
  RTC.now();

  // get the current time in UNIX time, which is FAR easier for time calculations and comparisons
  // also must set UTC offset for mktime to calcuate stuff correct
  time_t currentStamp = tmConvert_t(year(),month(),day(),hour(),minute(),second());

  time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm
  time_t powerOn;
  time_t powerOff;
  time_t powerOffNextDay;
  
  //// POWER STARTUP:  LIGHTS 1
  // read in the power schedule and see if we are at a time when it should be on
  if (schedLights1.active == 1) 
  {  
    time_t powerOn = tmConvert_t(year(),month(),day(),schedLights1.onHour,schedLights1.onMinute,0); // get a unix time stamp for the power on
    time_t powerOff = tmConvert_t(year(),month(),day(),schedLights1.offHour,schedLights1.offMinute,0); // get a unix time stamp for the power off  
    time_t powerOffNextDay = tmConvert_t(year(),month(),day(),schedLights1.offHour,schedLights1.offMinute,0);   
    powerOffNextDay = powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrLight1_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrLight1_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrLight1_On();
      else AlarmPwrLight1_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrLight1_On();
    else  AlarmPwrLight1_Off();
  }
    
  //// POWER STARTUP:  LIGHTS 2
  // read in the power schedule and see if we are at a time when it should be on
  if (schedLights2.active == 1) 
  {  
    powerOn = tmConvert_t(year(),month(),day(),schedLights2.onHour,schedLights2.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedLights2.offHour,schedLights2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedLights2.offHour,schedLights2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrLight2_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrLight2_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrLight2_On();
      else AlarmPwrLight2_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrLight2_On();
    else AlarmPwrLight2_Off();
  }

  //// POWER STARTUP:  FILTER  
  AlarmPwrFilter_On(); // the filter is ALWAYS ON

  //// POWER STARTUP:  CIRCULATION PUMP
  // read in the power schedule and see if we are at a time when it should be on
  if (schedCirc.active == 1) 
  {
    powerOn = tmConvert_t(year(),month(),day(),schedCirc.onHour,schedCirc.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedCirc.offHour,schedCirc.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedCirc.offHour,schedCirc.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay=powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrCirc_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrCirc_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrCirc_On();
      else AlarmPwrCirc_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrCirc_On();
    else AlarmPwrCirc_Off();
  }    

  //// POWER STARTUP:  HEATER  
  AlarmPwrHeat_On(); // the heater is ALWAYS ON

  //// POWER STARTUP:  CO2
  // read in the power schedule and see if we are at a time when it should be on
  if (schedCo2.active == 1) 
  {
    powerOn = tmConvert_t(year(),month(),day(),schedCo2.onHour,schedCo2.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedCo2.offHour,schedCo2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedCo2.offHour,schedCo2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay=powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrCO2_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrCO2_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrCO2_On();
      else AlarmPwrCO2_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrCO2_On();
    else AlarmPwrCO2_Off();
  }

  //// POWER STARTUP:  AUX 1
  // read in the power schedule and see if we are at a time when it should be on
  if (schedAux1.active == 1)
  {
    powerOn = tmConvert_t(year(),month(),day(),schedAux1.onHour,schedAux1.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedAux1.offHour,schedAux1.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedAux1.offHour,schedAux1.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay=powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrAux1_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrAux1_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrAux1_On();
      else AlarmPwrAux1_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrAux1_On();
    else AlarmPwrAux1_Off();
  }

  //// POWER STARTUP:  AUX 2
  // read in the power schedule and see if we are at a time when it should be on
  if (schedAux2.active == 1)
  {
    powerOn = tmConvert_t(year(),month(),day(),schedAux2.onHour,schedAux2.onMinute,0); // get a unix time stamp for the power on
    powerOff = tmConvert_t(year(),month(),day(),schedAux2.offHour,schedAux2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay = tmConvert_t(year(),month(),day(),schedAux2.offHour,schedAux2.offMinute,0); // get a unix time stamp for the power off  
    powerOffNextDay=powerOffNextDay+86400;
  
    if (powerOn==powerOff) AlarmPwrAux2_On();
    else if (powerOn>powerOff) 
    {
      if ((currentStamp>=powerOn) && (powerOffNextDay>=midnight)) AlarmPwrAux2_On();
      else if (((currentStamp<=powerOn) && (currentStamp<=powerOff) && (powerOffNextDay>=midnight))) AlarmPwrAux2_On();
      else AlarmPwrAux2_Off();
    }
    else if ((currentStamp>=powerOn) && (currentStamp<=powerOff)) AlarmPwrAux2_On();
    else AlarmPwrAux2_Off();
  }

  // if the light power is on, we can set the correct lighting mode
  // lighting mode is restored to ramp with closest start time after current time
  if (globalPower.pwrLight1==1) // only bother if the lights are on
  {  
    time_t rampStart1 = tmConvert_t(year(),month(),day(),ramp1.onHour,ramp1.onMinute,0);
    time_t rampStart2 = tmConvert_t(year(),month(),day(),ramp2.onHour,ramp2.onMinute,0);
    time_t rampStart3 = tmConvert_t(year(),month(),day(),ramp3.onHour,ramp3.onMinute,0);
    time_t rampStart4 = tmConvert_t(year(),month(),day(),ramp4.onHour,ramp4.onMinute,0);
    time_t rampStart5 = tmConvert_t(year(),month(),day(),ramp5.onHour,ramp5.onMinute,0);
    time_t rampStart6 = tmConvert_t(year(),month(),day(),ramp6.onHour,ramp6.onMinute,0);
   
//// Ramp 2 after midnight
    if ((rampStart2<rampStart1) && (currentStamp>rampStart1))
    {    
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }
    else if ((rampStart2<rampStart1) && (currentStamp<rampStart2))
    {      
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }    
    else if (((rampStart2<rampStart1) && (currentStamp>rampStart2) && (currentStamp<rampStart3)))
    {      
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    } 
    else if (((rampStart2<rampStart1) && (currentStamp>rampStart3) && (currentStamp<rampStart4)))
    {      
      irsend.sendNEC(M1,32); // flip to high sun
      currentLightMode=0;
    } 
    else if (((rampStart2<rampStart1) && (currentStamp>rampStart4) && (currentStamp<rampStart5)))
    {      
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    } 
    else if (((rampStart2<rampStart1) && (currentStamp>rampStart5) && (currentStamp<rampStart6)))
    {      
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }       

//// Ramp 3 after midnight
    else if (((rampStart2>rampStart1) && (rampStart3<rampStart1) && (currentStamp>rampStart2)))
    {      
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    }
    else if (((rampStart2>rampStart1) && (rampStart3<rampStart1) && (currentStamp<rampStart3)))
    {      
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    }    
    else if ((((rampStart2>rampStart1) && (rampStart3<rampStart1) && (currentStamp>rampStart3) && (currentStamp<rampStart4))))
    {      
      irsend.sendNEC(M1,32); // flip to high sun
      currentLightMode=0;
    } 
    else if ((((rampStart2>rampStart1) && (rampStart3<rampStart1) && (currentStamp>rampStart4) && (currentStamp<rampStart5))))
    {      
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    } 
    else if ((((rampStart2>rampStart1) && (rampStart3<rampStart1) && (currentStamp>rampStart5) && (currentStamp<rampStart6))))
    {      
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }      
    
//// Ramp 4 after midnight
    else if ((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4<rampStart1) && (currentStamp>rampStart3))))
    {      
      irsend.sendNEC(M1,32); // flip to high sun
      currentLightMode=0;
    }
    else if ((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4<rampStart1) && (currentStamp<rampStart4))))
    {      
      irsend.sendNEC(M1,32); // flip to high sun
      currentLightMode=0;
    }    
    else if (((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4<rampStart1) && (currentStamp>rampStart4) && (currentStamp<rampStart5)))))
    {      
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    } 
    else if (((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4<rampStart1) && (currentStamp>rampStart5) && (currentStamp<rampStart6)))))
    {      
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }  
    
//// Ramp 5 after midnight
    else if (((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4>rampStart1) && (rampStart5<rampStart1) && (currentStamp>rampStart4)))))  ////winner
    {      
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    }
    else if (((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4>rampStart1) && (rampStart5<rampStart1) && (currentStamp<rampStart5))))) /// after midnight
    {      
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    }    
    else if ((((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4>rampStart1) && (rampStart5<rampStart1) && (currentStamp>rampStart5) && (currentStamp<rampStart6))))))
    {      
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }
     
//// Ramp 6 after midnight  
    else if ((((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4>rampStart1) && (rampStart5>rampStart1) && (rampStart6<rampStart1) && (currentStamp>rampStart5))))))
    {      
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }
    else if ((((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4>rampStart1) && (rampStart5>rampStart1) && (rampStart6<rampStart1) && (currentStamp<rampStart6))))))
    {      
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }    
    else if (((((((rampStart2>rampStart1) && (rampStart3>rampStart1) && (rampStart4>rampStart1) && (rampStart5>rampStart1) && (rampStart6<rampStart1) && (currentStamp>rampStart6) && (currentStamp<rampStart1)))))))
    {      
      irsend.sendNEC(M4,32); // flip to moonlight
      currentLightMode=3;
    }   
 
//// start of regular ramping during 24hr period       
    else if ((currentStamp>rampStart1) && (currentStamp<rampStart2)) // if we are after ramp 1
    {
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }  
    else if ((currentStamp>rampStart2) && (currentStamp<rampStart3)) // if we are not in the previous ramp, but are still before this one
    {
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    }
    else if ((currentStamp>rampStart3) && (currentStamp<rampStart4)) // if we are not in the previous ramp, but are still before this one
    {
      irsend.sendNEC(M1,32); // flip to high sun
      currentLightMode=0;
    }
    else if ((currentStamp>rampStart4) && (currentStamp<rampStart5)) // if we are not in the previous ramp, but are still before this one
    {
      irsend.sendNEC(M2,32); // flip to mid sun
      currentLightMode=1;
    }
    else if ((currentStamp>rampStart5) && (currentStamp<rampStart6)) // if we are not in the previous ramp, but are still before this one
    {
      irsend.sendNEC(M3,32); // flip to low sun  
      currentLightMode=2;
    }
    else if ((currentStamp>rampStart6) && (currentStamp<rampStart1+86400)) // if we are not in the previous ramp, but are still before this one
    {
      irsend.sendNEC(M4,32); // flip to moonlight
      currentLightMode=3;
    }
    else if ((currentStamp<midnight) && (currentStamp<rampStart1)) // if we are not in the previous ramp, but are still before this one
    {
      irsend.sendNEC(M4,32); // flip to moonlight
      currentLightMode=3;
    }
  }    
  setStartupLighting();
}


----------



## robsworld78

I ordered the Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685 which should be arriving today. I just realized it needs to hook up to the SDA and SCL pins on the mega but those pins are already being used by the RTC chip, will this be a problem or can I hook both up?


----------



## AnotherHobby

robsworld78 said:


> It's done.  The smartStartup works perfectly now. Was up all night doing it, couldn't stop as I was in the groove. You can start ramp 1 at 11pm and finish ramp 6 at 2pm and anything in between, guaranteed to work! You can get rid of that question mark image now.


Wow! You get as obsessed as I do! I'll have to check it out after work. Thanks!



robsworld78 said:


> I ordered the Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685 which should be arriving today. I just realized it needs to hook up to the SDA and SCL pins on the mega but those pins are already being used by the RTC chip, will this be a problem or can I hook both up?


You can hook up multiple I2C devices to the same pins. roud:


----------



## kman

*THE GOOD:*​
New ElecFreaks TFT sheild came in yesterday, and last night I was able to modify it to add the 5 jumper lines relocating pins 2-6 to 42-46. That was a pain! But Woohoo! The touch interface now works! Now I can see more than just the home screen, for the first time! roud: 










I finished cutting and bending the holder (hanger) for my macro and micro vials, and they're now on the side of the tank where they're going to be. Finally! (Design shamelessly "borrowed" from AH's tank)










I think I've figured out a good way / place to put the dosing pumps that will look nice and bring the pumps to a reasonable height for functioning, rather than the floor under the tank which is too low, I believe. I'll just get a small piece of plywood, drill two holes for pumps, stain it to match (or close enough) my wood console table that the tank is on, and put it (attach it somehow) in the back left corner on the side of the table, pump side out. Then just the control wires will go down into the main controller box underneath everything on the floor, and the tubes will go up to the tank and dosing vials, just a couple of inches below the bottom of the tank. That shouldn't be too low. What do you think?









(_excuse my messy wires; I plan to significantly reorganize once this project is up and running!_)

*THE BAD:*​
For some reason, this new TFT board (which I _really_ wish I had tested to make sure it works normally before modifying, so I'd know if I somehow screwed something up when soldering the jumpers or if it's just a funky board) doesn't like to work with the 40pin ribbon cable I've been using to connect the LCD to the main stack. The old one (which I can't use for other reasons) works fine when on the ribbon, but the graphics get all weird and distorted when I use the ribbon cable. It doesn't distort when plugged in directly. Perhaps a shorter ribbon cable will take care of it? We'll have to see.

*THE UGLY?*​
Further, and it's hard to say if this is related or not, but the touch interface seems a little unresponsive at times. Some of the settings screens, when trying to set schedule times, for instance, I can't get the interface to register a press. Others, I can, in the same location, so it's not something inherently wrong with the LCD itself.

The interface has crashed a number of times. Going into the feeding settings crashes and restarts every time, is the one example off the top of my head. I think there was another place, too, but I can't remember at the moment. It was _really_ late last night when I finally finished soldering and connected everything for the first time.

There is serious oddness in data numbers. Perhaps this will work itself out as I get through all the setup screens? When I first delved into the settings, all of the times (ALL of them) seem to be set to 255:255 (or something like that... there are some examples below). If I mess with the numbers, lowering the numbers to anything else, back out of the settings menu, and then go back in, then they seem to snap back to normal times that can be adjusted. (usually... see first para in "bad" above re unresponsive screens) I have most of them reset now to relatively normal settings, but a few (Aux 1, Aux 2 for instance) don't seem to want to let me. That's in the Power settings. Ditto for Light schedule. The power on/off time seems to be carrying over from the main Power settings (which I was eventually able to set) fine, but I can't seem to make any changes to the length durations.



















Small bug (unless it's just me?) on Micros schedule screen: The Sat box is outlined with no X in it. None of the others have a square in them, when they're not set to go on that day. Macros is fine, just Micros. Probably just cosmetic, but I thought I'd mention it.










Still, HUGE progress over the past few days. VERY exciting! :bounce:


----------



## AnotherHobby

kman said:


> I finished cutting and bending the holder (hanger) for my macro and micro vials, and they're now on the side of the tank where they're going to be. Finally! (Design shamelessly "borrowed" from AH's tank)


I'm still happy with this design, other than when the glass containers get a little residue they aren't the easiest to disconnect and clean. I'll take that trade off though.



kman said:


> I think I've figured out a good way / place to put the dosing pumps that will look nice and bring the pumps to a reasonable height for functioning, rather than the floor under the tank which is too low, I believe. I'll just get a small piece of plywood, drill two holes for pumps, stain it to match (or close enough) my wood console table that the tank is on, and put it (attach it somehow) in the back left corner on the side of the table, pump side out. Then just the control wires will go down into the main controller box underneath everything on the floor, and the tubes will go up to the tank and dosing vials, just a couple of inches below the bottom of the tank. That shouldn't be too low. What do you think?


Height of the pumps should not matter with those reservoirs. The part that matters is where the reservoir resides, because that'll create head pressure that you have to pump against, and that will force the liquid back down the lines from the output. That is why I mounted my reservoirs to the tank at water level, because it keeps the lines from draining back into them. It's the input/output height differential (reservoir vs output into tank) that matters. You can also mitigate this with check valves.



kman said:


> For some reason, this new TFT board (which I _really_ wish I had tested to make sure it works normally before modifying, so I'd know if I somehow screwed something up when soldering the jumpers or if it's just a funky board) doesn't like to work with the 40pin ribbon cable I've been using to connect the LCD to the main stack. The old one (which I can't use for other reasons) works fine when on the ribbon, but the graphics get all weird and distorted when I use the ribbon cable. It doesn't distort when plugged in directly. Perhaps a shorter ribbon cable will take care of it? We'll have to see.


I know these screens are very sensitive to cable length. My ribbon cable is 6" long.



kman said:


> Further, and it's hard to say if this is related or not, but the touch interface seems a little unresponsive at times. Some of the settings screens, when trying to set schedule times, for instance, I can't get the interface to register a press. Others, I can, in the same location, so it's not something inherently wrong with the LCD itself.


The touch interface is not very responsive to fingers. It's a resistive touch screen (not capacitive like modern phones), and it's meant to use a stylus. For the big buttons I use my finger, but have to push hard and usually use my nail. For any config screens I use a plastic mechanical pencil with no lead. It's a technology limitation of using a $15 screen. You can get capacitive touch that would be awesome for this, with one of the cheaper ones being the Adafruit 2.8" model for $45 plus shipping. You can see why I accepted this limitation. 



kman said:


> The interface has crashed a number of times. Going into the feeding settings crashes and restarts every time, is the one example off the top of my head. I think there was another place, too, but I can't remember at the moment. It was _really_ late last night when I finally finished soldering and connected everything for the first time.


I'm guessing the crashing is due to the 255 values. That is the default value of an EEPROM location. Look in the sketch for "firstRunSetup" in the setup routine, and uncomment it and upload the sketch. Let it boot, and then comment the line back out and upload the sketch again. I think that should reset everything you need.



kman said:


> There is serious oddness in data numbers. Perhaps this will work itself out as I get through all the setup screens? When I first delved into the settings, all of the times (ALL of them) seem to be set to 255:255 (or something like that... there are some examples below). If I mess with the numbers, lowering the numbers to anything else, back out of the settings menu, and then go back in, then they seem to snap back to normal times that can be adjusted. (usually... see first para in "bad" above re unresponsive screens) I have most of them reset now to relatively normal settings, but a few (Aux 1, Aux 2 for instance) don't seem to want to let me. That's in the Power settings. Ditto for Light schedule. The power on/off time seems to be carrying over from the main Power settings (which I was eventually able to set) fine, but I can't seem to make any changes to the length durations.


See my above comment.



kman said:


> Small bug (unless it's just me?) on Micros schedule screen: The Sat box is outlined with no X in it. None of the others have a square in them, when they're not set to go on that day. Macros is fine, just Micros. Probably just cosmetic, but I thought I'd mention it.


The others should look like Saturday with the outlined box. I'm guessing that's also because of the lack of pre-filled in values. It needs to get a "0" or a "1" from EEPROM to fill in either the on or off image. It's probably getting 255 back instead. The macro/micro days are not in that first run startup sketch. If you toggle each one on/off if should fix it.

I need to make that first run routine fill out ALL of the values, and make it so a user doesn't need to comment/uncomment it to run. It shouldn't take me long to do. I'll see if I can find time to do it after work. I have to add in robsworld78's nice work on the startup routine anyway.


----------



## kman

Cool, I'll look for that FirstRun section and get that going.  Sounds like that will help a lot!

Yes, I know it's a cheap TFT, just odd it worked fine with the ~18" drive cable I had with the first shield, but with this one, no such luck. Not a big deal, as long as I can get at least 6-12" of separation, as I want to mount the main board in the bottom portion of my "project box" and the TFT in the lid, and it would be nice to be able to open the box without having to detach the screen. Also odd that some screens I could manipulate the numbers no problem, and others it wouldn't work for the life of me. But that sounds like doing the FirstRun sketch should help clear up a lot of the funkiness. 

Not a big deal to comment/uncomment a FirstRun sketch, but I suggest adding a simple one-line warning note to that effect, right up at the top, so we know it actually needs to happen without missing it buried in many many pages of impressive code. 

Re the dosing pumps, height may not be a huge issue, as you noted, but I'll still better with the liquids kept a little farther away from the AC connections in the main box!


----------



## AnotherHobby

Version 1.0.4 of iAqua is now posted. 

*Before proceeding, this is VERY important to know*: I have added a firstRunSetup() routine, and *it will wipe out all of your settings on the first run*. 

It saves the fact that it ran into EEPROM, so it'll only ever run once, but that data does not exist from previous runs of other versions of iAqua. If you have gone through and configured everything the way you want it, you will need to comment out the first line of setup() where it calls firstRunSetup(). If you have not, you want this routine to run to set everything to 0, or else you'll have some interface issues and crashing.

I also added in robsworld78's smart startup routine (slightly modified at the very end for the CSP lights).

You can get it here: iAqua.zip


----------



## kman

TPT needs a "Like" button.

Just saying.


----------



## robsworld78

Oops, forgot if (lightCSP==false).  You need to change version 1.04 you left setStartupLighting(); in there which isn't a routine. You changed the name to setStartupPWMLighting. It won't compile right now. I don't think you need the checkLighting(); at the end, that's being called when the Home page loads up, now its being called twice, but maybe your fixture needs it twice.

I think its official for me now, I have to dump the IR feature for the Satellite+ as I'm adding the 12bit dimming. I wanted to keep it in there but...

Speaking of which, why would a man with your skills be using a purchased LED light fixture? :hihi:

I was going to make an eeprom routine exactly like your's, that was a big problem. The first impression of iAqua wasn't a good one when you fire it up for the first time. 

I'm surprised your screen doesn't work with a finger, I still haven't received my 3.2" and don't care if I do now. With my ignorance I didn't even realize the difference when I ordered. Now I'm very thankful my 5" works excellent with the figure, just like a phone. This is the exact combo I purchased, I thought a decent deal since its not shipped from China.


----------



## AnotherHobby

kman said:


> TPT needs a "Like" button.
> 
> Just saying.


LOL! I'm on some forums that have that, and I completely agree. I really wish it had a "Like" button. Maybe we need to make a feature request.


----------



## AnotherHobby

robsworld78 said:


> Oops, forgot if (lightCSP==false).  You need to change version 1.04 you left setStartupLighting(); in there which isn't a routine. You changed the name to setStartupPWMLighting. It won't compile right now. I don't think you need the checkLighting(); at the end, that's being called when the Home page loads up, now its being called twice, but maybe your fixture needs it twice.


Updated the file.



robsworld78 said:


> I think its official for me now, I have to dump the IR feature for the Satellite+ as I'm adding the 12bit dimming. I wanted to keep it in there but...
> 
> Speaking of which, why would a man with your skills be using a purchased LED light fixture? :hihi:


I bought the Current lights before I started digging into electronics at this level. After that I was planning on making my own, but then I won an Ecoxotic E-Series for free. I really like it, but I might end up going DIY in the end.



robsworld78 said:


> I was going to make an eeprom routine exactly like your's, that was a big problem. The first impression of iAqua wasn't a good one when you fire it up for the first time.


Well, I never really fired it up for the first time like anybody here. I made it for myself and made adjustments and developed it along the way. It wasn't until I swapped in another Mega that I noticed stuff was off. I made a quick first run routine at that time, which was the one that was in there. 

After I got it all running, I thought people might want to run with it, so I started this thread to share it. I never started out with the plan of making it that way, so I'm not surprised there have been some tweaks like this needed along the way. If I was doing it from the get-go as a more flexible sharable package that required less individual hacking to customize along the way, I would have taken a completely different approach. I know it seems crazy to build something like this just for yourself, but it's been fun. 



robsworld78 said:


> I'm surprised your screen doesn't work with a finger, I still haven't received my 3.2" and don't care if I do now. With my ignorance I didn't even realize the difference when I ordered. Now I'm very thankful my 5" works excellent with the figure, just like a phone. This is the exact combo I purchased, I thought a decent deal since its not shipped from China.
> 
> http://www.amazon.ca/gp/product/B00INMJHME/ref=cm_cr_ryp_prd_ttl_sol_0


Every single resistive touch has the same issue to _some_ degree. It's not that it _doesn't_ work with a finger, it's that it doesn't work nearly as well as a modern capacitive touch screen with a finger. It _requires_ pressure. Capacitive does not require any pressure. You can read up on the differences.

Since restive touch requires pressure, a small screen like this requires a more precise touch than a meaty chunk of flesh. It works fine for the big buttons, but when you get into the schedules and some smaller controls, it just doesn't work like an iPhone screen. I think a bigger 5" screen like yours would definitely make a big difference though. That said, I wouldn't spend any more than I did on a resistive screen. If I spent over $20, it'd be for capacitive touch.


----------



## robsworld78

That's a nice win, when I heard you update to Ecoxotic that's when I was wondering why didn't you just build one. I ordered a cheap $5 remote and going to add it for the fun of it. 

Not trying to give you a hard time, I realize why certain things don't work. My plan is to have it completely bug free and can be setup by anyone in no time with more options and packaged nicely and I'm going to sell a few to people I know who already want one and anyone else, not to make lots of money as we both know that can't be done on a low scale but for the fun of it. Of course when I'm done I'm going to post the code and everything here so people can do it themselves. I have a enclosed top canopy for my tank and I'm going to fit the screen in so it looks professional, everything else will be hidden.

Here's what I plan to do tonight.


----------



## AnotherHobby

robsworld78 said:


> My plan is to have it completely bug free and can be setup by anyone in no time with more options and packaged nicely and I'm going to sell a few to people I know who already want one and anyone else, not to make lots of money as we both know that can't be done on a low scale but for the fun of it. Of course when I'm done I'm going to post the code and everything here so people can do it themselves. I have a enclosed top canopy for my tank and I'm going to fit the screen in so it looks professional, everything else will be hidden.
> 
> Here's what I plan to do tonight.


That should be fun to make a bunch! It'll be cool to see the finished product. I know people would love to have them made, and several have asked or PM'd, but I just have zero interest in it, especially something as complicated and time consuming as this (although O2's board takes a massive amount of work out of it). I have no doubt that you are the type that will build some very nice units for people. Make sure to post plenty of pics!

Also, I like your dosing pump screens – nice work!


----------



## robsworld78

Yeah screenshots look ok now I actually have to make it work. 

This helps pass the time, hate winter so need something to do. O2's board is great and a must for what I want to accomplish as it simplifies, shrinks and much quicker to assemble. I'm hoping O2 can help me out when I get there. Ultimately I would like to put everything on one board and get rid of the mega and shield completely, I know it can be done, ears ringing O2. :hihi:


----------



## O2surplus

robsworld78 said:


> Yeah screenshots look ok now I actually have to make it work.
> 
> This helps pass the time, hate winter so need something to do. O2's board is great and a must for what I want to accomplish as it simplifies, shrinks and much quicker to assemble. I'm hoping O2 can help me out when I get there. Ultimately I would like to put everything on one board and get rid of the mega and shield completely, I know it can be done, ears ringing O2. :hihi:


LOL- My soldering iron is waiting patiently. I'm all for integrating the TFT/LCD shield into the next iAqua shield design, but the Mega is a long way off. They're too complicated and soldering the main chip would be a nightmare. It's cheaper to just let the Chinese handle that. :biggrin:


----------



## rottison

I could not even think about soldering all those tiny arms on solder past flux and a rework hot air station and I wouldn't do it


----------



## robsworld78

There's only about 100 pins, shouldn't take more than 5min. :hihi:

The TFT shield built in would be cool, probably bring the cost down a bit too. I have a weller wes51 soldering iron, I'm ready to rock. 

What I want is the mega, your board and screen be in one case with a cable going to a break out box with all the connectors to keep it clean. The breakout box should be easy to design.


----------



## kman

kman said:


> Another odd issue is restarting. Unplugging it to move to a new location, and having it power back up, the GUI does not fully reload. No distortion anymore, but incomplete graphics. I tried over and over, and waited 15 minutes once before powering up again. Once it's been powered down (by unplugging), the ONLY way (so far) to get the full GUI fully back up (distorted or not) is to reconnect the laptop and re-upload the software to the Arduino from scratch. Then everything is great again. (except the distortion) (and only until I unplug it again)
> 
> After restarting:





O2surplus said:


> Try re-seating the connection between the Mega and the iAqua shield. The male pins at the iAqua shield's 36 pin header don't make the best electrical connection to the Mega unless you tweak them a bit. I recommend using a thin straight edged tool to bend the two columns of male pins slightly away from each other and then use care to reinstall the shield on the Mega.
> I had the same screen problems with mine at first, but noticed that the problem was slightly different or non existent, depending on which iAqua shield I was using. Being that they're all slightly different, I knew the problem with the screen had to be a hardware problem and not software. Tweaking the pins solved the problem.


So here's an odd one.

The new software (1.0.4) loaded great, and I was able to set all of the configurations. Nothing had changed in terms of hardware configuration. But suddenly I'm having the same issue again, which had gone away. The graphics aren't loading. It still redraws the correct time and temp, dosing vial level, and time since last feeding. The buttons at the bottom even seem to work, even though you can't see them. It's just the graphics aren't drawing. The screen looks almost exactly like the photo above.

Thoughts? It feels like a graphics issue, like it won't read the SD card, but it still seems to work and has content when I plug it into a computer, and nothing has really changed as far as the SD card is concerned.

And, worse than before, now even if I reload the software, there is no change.


----------



## jmh474

Iv just been looking over the wiring diagram and where you have the BC377 transistor could we replace this with a 10k or 20k potentiometer so we can have more control of the brightness of the lcd screen?


----------



## robsworld78

kman I think it has to be the actual card, it sounds like this library is outdated and picky, that card could be to fast or something. I would say the older the card the better. I have a 10 year old 1g I'm using with no issues. You could have issues with any newer cards.


----------



## kman

robsworld78 said:


> kman I think it has to be the actual card, it sounds like this library is outdated and picky, that card could be to fast or something. I would say the older the card the better. I have a 10 year old 1g I'm using with no issues. You could have issues with any newer cards.


The old 32mb (yes, mb) card I had was too slow. Switching to this 2gb card (at least 5 years old, possibly as many as 8?) solved the issues the first time around. Now they seem to be back. The SD card is a SanDisk Ultra II, which is not an especially card, compared to the the Sandisk Extreme III I used from the same time period. (Old 32mb card was a Canon-branded card that came with a Canon digital camera circa 2006)

I wonder if the issue is the LCD itself? Other than O2's board which he tested before sending me, that's the only remaining common piece of equipment. (I've been through 2 TFT shields and 2 Megas as well)

I might try to find a beefier power supply than the 1amp 12v wall wart I'm using. I'm not quite ready to move over to the hardcore 13 amp PS I have, but maybe I can scrounge a beefier wall wart.

Seems like eventually, it does come back. It's back at the moment. But I certainly don't feel like I can trust it.


----------



## robsworld78

That is odd but I'm betting its the card. I can't image its the display, possibly the shield because the card is there. Try finding a 512mb or 1gb card at a flee market or something that's where I'm hoping to get a bunch.

Do the images only disappear on a power up, if you don't power it down now will they always stay? If so it could be the initialization that's hit and miss. Or can they disappear by going to a new screen? I've powered mine up 100's of times now and its never missed so I know its not in the code (other than the library possibly).

EDIT: Just so you know if you change any of the heater settings over 100 it will continue to reset itself when you go back into the heater settings, doubt that has anything to do with it though.


----------



## kman

robsworld78 said:


> That is odd but I'm betting its the card. I can't image its the display, possibly the shield because the card is there. Try finding a 512mb or 1gb card at a flee market or something that's where I'm hoping to get a bunch.
> 
> Do the images only disappear on a power up, if you don't power it down now will they always stay? If so it could be the initialization that's hit and miss. Or can they disappear by going to a new screen? I've powered mine up 100's of times now and its never missed so I know its not in the code (other than the library possibly).
> 
> EDIT: Just so you know if you change any of the heater settings over 100 it will continue to reset itself when you go back into the heater settings, doubt that has anything to do with it though.



I believe everything stays as long as it's powered up. It's initialization that seems to be hit and miss, as you surmised. 

The card reader is on the LCD itself, not the TFT Shield. That's why I was wondering if that would make a difference. (And again, I've changed shields and Arduinos and still had the issue... The LCD is the only part I don't have two of. That and O2's board.)

I'll keep an eye out for low capacity cards but I'm not super hopeful I'll stumble across any.


----------



## robsworld78

After the feed cycle ended I noticed aux2 didn't return where it should, the problem is in screenFeeding() and feedingStop() routine.

was


Code:


else if (feedPower.pwrAux2==1) AlarmPwrAux2_Off();

should be


Code:


else if (feedPower.pwrAux2==0) AlarmPwrAux2_Off();

was


Code:


else if (preFeedPower.pwrAux2==1) AlarmPwrAux2_Off();

should be


Code:


else if (preFeedPower.pwrAux2==0) AlarmPwrAux2_Off();


----------



## AnotherHobby

jmh474 said:


> Iv just been looking over the wiring diagram and where you have the BC377 transistor could we replace this with a 10k or 20k potentiometer so we can have more control of the brightness of the lcd screen?


The transistor gives you PWM control over the LED backlight, meaning you have programatic control from 0-255 levels of brightness. Furthermore, it allows for auto dimming the display using the ambient light sensor. If you want to give that up for a knob, go for it. I won't be making any changes though. Just ignore the "screen" settings, and don't bother installing the ambient light sensor.



robsworld78 said:


> EDIT: Just so you know if you change any of the heater settings over 100 it will continue to reset itself when you go back into the heater settings, doubt that has anything to do with it though.


Correct. That was absolutely intentional coding. I can't imagine why anybody on earth would want to set their heater setting over 100 degrees, unless you are trying to replicate a hot spring.



kman said:


> I believe everything stays as long as it's powered up. It's initialization that seems to be hit and miss, as you surmised.
> 
> The card reader is on the LCD itself, not the TFT Shield. That's why I was wondering if that would make a difference. (And again, I've changed shields and Arduinos and still had the issue... The LCD is the only part I don't have two of. That and O2's board.)
> 
> I'll keep an eye out for low capacity cards but I'm not super hopeful I'll stumble across any.


I'm pretty sure it's going to end up being the card or the LCD cable length.



robsworld78 said:


> After the feed cycle ended I noticed aux2 didn't return where it should, the problem is in screenFeeding() and feedingStop() routine.
> 
> was
> 
> 
> Code:
> 
> 
> else if (feedPower.pwrAux2==1) AlarmPwrAux2_Off();
> 
> should be
> 
> 
> Code:
> 
> 
> else if (feedPower.pwrAux2==0) AlarmPwrAux2_Off();
> 
> was
> 
> 
> Code:
> 
> 
> else if (preFeedPower.pwrAux2==1) AlarmPwrAux2_Off();
> 
> should be
> 
> 
> Code:
> 
> 
> else if (preFeedPower.pwrAux2==0) AlarmPwrAux2_Off();


Good catch! That was code I changed a little over a month ago because I was starting up some new plants and wanted to hit them with extra light. I hooked up 2 Current Sat + lights in addition to my E-Series for about 2-3 weeks (crazy growth!). I was using Aux2 for a 3rd light, and didn't want it to go out when I was feeding, so I made that change. I've made the change back, so it'll be fixed in the next upload.


----------



## jmh474

AnotherHobby said:


> The transistor gives you PWM control over the LED backlight, meaning you have programatic control from 0-255 levels of brightness. Furthermore, it allows for auto dimming the display using the ambient light sensor. If you want to give that up for a knob, go for it. I won't be making any changes though. Just ignore the "screen" settings, and don't bother installing the ambient light sensor.


No your right sorry as i said im new to this sort of thing dint really think of it like that lol also sorry to ask :icon_sad: is there any chance you would be doing a fuzz digram of how you modded the LCD board and any other parts?? and on you pin layout of the lcd you dont say how to connect the sd card on the arduino or have i missed something sorry if i sound like im going on i dont mean to :hihi:


----------



## AnotherHobby

jmh474 said:


> No your right sorry as i said im new to this sort of thing dint really think of it like that lol also sorry to ask :icon_sad: is there any chance you would be doing a fuzz digram of how you modded the LCD board and any other parts?? and on you pin layout of the lcd you dont say how to connect the sd card on the arduino or have i missed something sorry if i sound like im going on i dont mean to :hihi:


No reason to apologize! Questions are good — that's how we learn. 

I don't know about a Fritzing diagram for those parts since they don't exist in the Fritzing database. I know you can "make" parts in the program, but I tired it once with relatively little success and it seemed like a lot of work. All of the pins I modified and jumpered are documented earlier in the thread. 

Regarding the the SD card pins, they are all part of the TFT shield, so you don't have to do anything to that.


----------



## kman

AnotherHobby said:


> I'm pretty sure it's going to end up being the card or the LCD cable length.


Thanks. I'll shop around for another card.

It had better not be the LCD cable length because at the moment it's directly plugged into the TFT Shield.


----------



## jmh474

Thanks for not being to hard on me  another thing i was thinking of, could one of the dosing pumps be used as a water topup eg work out water evaporation and top up with dosing pumps ??

Sent from my GT-S5360 using Tapatalk 2


----------



## shift

You would want a water level sensor to control the pumps. Just to be safe . One for fill one for high/off. Or hair a second as a safety off


----------



## AnotherHobby

I thought long and hard about having an ATO (auto top off) and couldn't come up with something that I could trust 100%. My aquarium stand sits on beautiful 3/4" maple hardwood floors that I installed myself. Every ATO solution I thought up left me asking how much I trusted whatever I built to not over flow and destroy an expensive floor. On top of that, I like the top of my tank as clean as possible with regards to equipment, so didn't want a float, or a big stack of sensors, or whatever else would be needed. So I gave up for now.


----------



## jmh474

I don't know if this is any good to you but some where i read that some one used the arduino ultra sonic head to keep an eye on the water level but as you say to much of a flood risk, but now thinking about it do we really need one when we do water changes every fortnight

Sent from my GT-S5360 using Tapatalk 2


----------



## rottison

AH 
do you have a basement you can put a sump in? I removed a small section of molding about 6 inches long from behind the tank and ran 2 lines down the space in the wall to the basement. that way didn't have to anything to the floors. and with the sump in the basement it holds all the water incase there is any over flow from the ATO and it is where all my heaters and filters and what ever else I need are at so the tank has nothing in it I also have a drain pipe about 4 inches from the top of my sump that goes to the city drain.


----------



## O2surplus

rottison said:


> AH
> do you have a basement you can put a sump in? I removed a small section of molding about 6 inches long from behind the tank and ran 2 lines down the space in the wall to the basement. that way didn't have to anything to the floors. and with the sump in the basement it holds all the water incase there is any over flow from the ATO and it is where all my heaters and filters and what ever else I need are at so the tank has nothing in it I also have a drain pipe about 4 inches from the top of my sump that goes to the city drain.



That's some smart thinkin' right there :thumbsup: I wish I had a freakin' basement!:icon_cry:


----------



## AnotherHobby

rottison said:


> AH
> do you have a basement you can put a sump in? I removed a small section of molding about 6 inches long from behind the tank and ran 2 lines down the space in the wall to the basement. that way didn't have to anything to the floors. and with the sump in the basement it holds all the water incase there is any over flow from the ATO and it is where all my heaters and filters and what ever else I need are at so the tank has nothing in it I also have a drain pipe about 4 inches from the top of my sump that goes to the city drain.


A basement? Yes I do, but it's finished and the area under the tank would be not conducive to a sump.

If I went with a sump, it would be for something bigger than a 17 gallon tank. I have a fantastic space down in my basement to put a big tank, and I've been thinking about it a lot. I just have to decide if I want a really big tank.


----------



## rottison

LOL the wife has baited me with that same idea but I don't spend a lot of time down there even with it being finished it still seems like I am in a different house. Then I started thinking If I had a room downstairs with a monster tank that was mine what would she want??


----------



## O2surplus

rottison said:


> what would she want??


LOL- You're over thinking the situation. Don't worry about what she wants. Take her up on the offer and make the basement "yours". You can always deal with her "want" later. Just be sure to put a "big couch" alongside your "big tank". Cuz- You may need a place to  if her "want" isn't taken cared of.


----------



## rottison

LOL I would have to.. I got my new plug bar delivered today but do not think it will work might be just to short front to back 










Bump: here is the relay with it 







[/URL][/IMG]

Bump: try #2 here it is again









Bump: Tried to just use the links to the pics but it just didn't like the links to the pics sorry for the huge images


----------



## O2surplus

rottison said:


> LOL I would have to.. I got my new plug bar delivered today but do not think it will work might be just to short front to back


Dale-

That one doesn't look any tighter than the one I have. You may have to rework the wiring a bit to create enough room for the relay block to fit. The difference between yours and mine? Mine came with the Ground and the Neutral wires already soldered to common bus bars. Yours looks like it could be reworked to the same style as mine & then you'd have just enough room to squeeze the relay block in. Here's a close up of mine-


----------



## rottison

Guess I have to get busy on it that is my last big thing I like the break out card that looks good what did you use to cut the hole dremal?


----------



## kman

rottison said:


> LOL I would have to.. I got my new plug bar delivered today but do not think it will work might be just to short front to back


Not bad! What kind is it, and what did you pay for it, if you don't mind me asking? Always keeping an eye out for good stuff when I'm ready to make Rev2.


----------



## PhysicsDude55

jmh474 said:


> Thanks for not being to hard on me  another thing i was thinking of, could one of the dosing pumps be used as a water topup eg work out water evaporation and top up with dosing pumps ??
> 
> Sent from my GT-S5360 using Tapatalk 2


I have an ATO on my tank. I use a simple float switch in the tank (I have it hidden behind a piece of driftwood), and an ultrasonic sensor to my arduino. The ultrasonic sensor works better than I expected, but I still fundamentally don't trust it.

I have the code written so that the ultrasonic sensor has to sense a "low water condition" for 30 minutes in a row before it turns on the pump. The signal to the pump relay passes through the float switch, so that if the arduino fails, the float switch will prevent the pump from overfilling the tank. Also, in a pinch, I can easily bypass the arudino and run the ATO off the simple float switch by itself.

The ATO pump in the reservoir has a float switch in it which turns off the pump when the water level gets below about 1/2". I used a cheap float switch intended for use in a boat bilge pump, which I would not do again, as they're not designed to be constantly submerged. You want a solid state float switch, or a simple reed type float switch intended for use in aquariums, but mounted near the bottom of the reservoir upside down. Luckily the units almost always fail in an "open" state, so worst case scenario is that the tank doesn't get topped off until you notice it.

I then wrote a piece of code that if the water level is low for over 1 hour after the pump has been told to come on, than it displays a warning message for me that the reservoir is out of water.

You could use the dosing pump output for the ATO, but you'd have to write special code to make it work as an ATO. The dosing pumps only come on based on a time schedule, and you'd need to make it come on as a response to a float sensor or ultrasonic sensor, and you'd need to build in delays for it turning on and off or else it will "flutter" when the water level just barely trips the sensor.


----------



## rottison

Kman it is American Dj Pc-100A Rack Mount Power Switcher was $25 I think it was


----------



## gus6464

I just installed a reefkeeper and I have it monitor my Tunze osmolator ATO. I have a float switch in the sump which shuts off everything if the water level gets too high. Then I also have a float switch in the display which shuts everything off if that level gets too high. Then I also have a leak detector which shuts everything off if water hits it. Pretty damn foolproof.


----------



## bigd603

Accidental post


----------



## jmh474

oh my god getting fed up now of waiting for my parts from china so started on the enclosure had some parts turn up so i can make a start i must say some things have turned up with in a week just hope all the rest will get here soon


----------



## O2surplus

jmh474 said:


> oh my god getting fed up now of waiting for my parts from china so started on the enclosure had some parts turn up so i can make a start i must say some things have turned up with in a week just hope all the rest will get here soon



LOL- I'm betting your stuff will arrive any week now. (free- albeit "slow" shipping from China )


----------



## rottison

02 what did you use to cut the case for your iAqua?


----------



## O2surplus

rottison said:


> 02 what did you use to cut the case for your iAqua?


LOL- I didn't have a dremel tool, so I had to resort to using something a little more "overkill". I used a pneumatic die-grinder equipped with a high speed carbide De-burring bit. I used to use them for port matching cylinder heads, so they're my weapon of choice when I need to make oddly shaped holes.:thumbsup:


----------



## jmh474

im staring to think this is what they are using


----------



## rottison

Wow you are not kidding that is a little over kill. figured you where a car guy when I saw the snap on box.

Bump: Kman or AH what are the graduated cylinders you have hanging on the side of your tank and how long does it last you?


----------



## rottison

after trying to get the 8 channel relay to fit in my power bar I am worried about it being to close to the blades on the plugs I am still going to wire it all up best as it will go and see if it will smash in there some of the things I have been thinking of to try to help save a little space is 

1) using Velcro covering the bottom of the relay board to insulate it and hold it down 
2) use liquid black tape and paint it on the bottom then glue it down or some like that

I used 10mm stand off and that pushed the relay pcb right up to the plug blades and button blades on the front. could cut them in half


----------



## O2surplus

rottison said:


> after trying to get the 8 channel relay to fit in my power bar I am worried about it being to close to the blades on the plugs I am still going to wire it all up best as it will go and see if it will smash in there some of the things I have been thinking of to try to help save a little space is
> 
> 1) using Velcro covering the bottom of the relay board to insulate it and hold it down
> 2) use liquid black tape and paint it on the bottom then glue it down or some like that
> 
> I used 10mm stand off and that pushed the relay pcb right up to the plug blades and button blades on the front. could cut them in half



I like the Velcro idea. That should lower the relay block enough to clear the blades and keep the block from being able to move around. Not that it will have the chance, once you've gotten all the wires attached. LOL


----------



## rottison

have to go to the hobby store and pick some up to cover it that shouldn't long hour or 2


----------



## AnotherHobby

rottison said:


> Wow you are not kidding that is a little over kill. figured you where a car guy when I saw the snap on box.
> 
> Bump: Kman or AH what are the graduated cylinders you have hanging on the side of your tank and how long does it last you?


I got those on evilbay. Just search for 50 mL glass syringe (they actually hold a little over 60 mL). Each lasts for two weeks for my 17 gallon tank with EI dosing. I could probably mix my ferts a little stronger and make it last longer.


----------



## rottison

I have enough chemicals to make about 50 gals of poor mans dosing. use to have to measure out cap fulls every day hated doing that job. I think I will go with plastic. glass tubes around me will get broke.


----------



## O2surplus

AnotherHobby said:


> I got those on evilbay. Just search for 50 mL glass syringe (they actually hold a little over 60 mL). Each lasts for two weeks for my 17 gallon tank with EI dosing. I could probably mix my ferts a little stronger and make it last longer.


LOL- I made my dosing containers from a couple of brand new spray bottles that I scored at the local HD. I used them because they already have a ball check that prevents the line from draining back into the bottle. They work great and hold in excess of 600ml each.


----------



## kman

rottison said:


> Bump: Kman or AH what are the graduated cylinders you have hanging on the side of your tank and how long does it last you?





AnotherHobby said:


> I got those on evilbay. Just search for 50 mL glass syringe (they actually hold a little over 60 mL). Each lasts for two weeks for my 17 gallon tank with EI dosing. I could probably mix my ferts a little stronger and make it last longer.


Yup. And I stole (I mean borrowed) his design.  Nice glass cylinders in the perfect size to hold 2 weeks of ferts at 10 ml/day, with a perfect rim to slot nicely into a round hole without falling through, and a hole at the bottom to connect tubing to for the dosing pumps. Genius idea of AH's, and looks great, so I had to go with it! (we have the same size tank)


----------



## AnotherHobby

O2surplus said:


> LOL- I made my dosing containers from a couple of brand new spray bottles that I scored at the local HD. I used them because they already have a ball check that prevents the line from draining back into the bottle. They work great and hold in excess of 600ml each.


I didn't want more than 2 weeks of solution, or it'll get moldy. I had a bigger reservoir on my first attempt, and they got icky after a few weeks. Now I keep the main mixes in the fridge in clear bike water bottles (easy to just squirt into the reservoirs), and then just top them off every other water change.


----------



## rottison

that is a good point


----------



## stephenpence

I have officially read this from cover to cover... And I am stoked. Especially for O2Surplus's shield... I will have to wait for you to get those printed.. SO excited for this!


----------



## kman

AnotherHobby said:


> I didn't want more than 2 weeks of solution, or it'll get moldy. I had a bigger reservoir on my first attempt, and they got icky after a few weeks. Now I keep the main mixes in the fridge in clear bike water bottles (easy to just squirt into the reservoirs), and then just top them off every other water change.


Yes to this. My main containers are great, but too big to hang on the side of the tank. And yes, micros, in particular, mold easily. Micros in particular need to be refrigerated unless you're only making 2 week batches at a time. But of course it's a lot easier to make bigger batches and then just refill the smaller ones every couple weeks. Meanwhile the bigger containers can live in the fridge so they don't mold up. (my first batch of micros developed weird floaty mold after about a 2 weeks, and the usual mix of ~600ml lasts for several months!) Much easier to refill a smaller container every 2 weeks (plus very obvious that it's getting low, even without iAqua!) than haul the main containers out of the fridge every day, or deal with moldy ferts.


----------



## jmh474

Sorry another hobby but got another question for you on your key features you put 

—• Configurable low temp to sound a tone alarm (i.e. heater broke)

how do we wire this in please thanks


----------



## rottison

was there a reason you got glass and not plastic vials? I am thinking of using a 2 500mL plastic bottles with caps on them drill a hole for the tube to go in tot eh bottle cap then a pin hole next to it for air in to the bottle hoping that would cut way down on mold if I need to I can only fill half way and tell iAqua that it is full. I need to dose close to 250 gal total water and I want to have a lot of large plants with out having to root feed them all the time


----------



## AnotherHobby

jmh474 said:


> Sorry another hobby but got another question for you on your key features you put
> 
> —• Configurable low temp to sound a tone alarm (i.e. heater broke)
> 
> how do we wire this in please thanks


I haven't implemented that yet. Every alarm/buzzer I tired was annoying, so I was going to use a small computer speaker and a tone generating library, but as of now it's only a plan.



rottison said:


> was there a reason you got glass and not plastic vials? I am thinking of using a 2 500mL plastic bottles with caps on them drill a hole for the tube to go in tot eh bottle cap then a pin hole next to it for air in to the bottle hoping that would cut way down on mold if I need to I can only fill half way and tell iAqua that it is full. I need to dose close to 250 gal total water and I want to have a lot of large plants with out having to root feed them all the time


I was looking for a container to hang in the very specific manner in which I did. They just happened to be glass. I would have been fine with acrylic, clear plastic, or something else. It's just what I found.


----------



## bigd603

About the mold in fertilizer, you can add a few drops of aquarium anti fungal liquid to prevent it.


----------



## jmh474

Ok well look ford to the modification 

Sent from my GT-S5360 using Tapatalk 2


----------



## O2surplus

bigd603 said:


> About the mold in fertilizer, you can add a few drops of aquarium anti fungal liquid to prevent it.


LOL- That's a good idea.

I use silver as an antimicrobial in mine. I simply place any US coin that predates 1965 (pure silver prior to 65') into the container. The coin leaches just enough silver to prevent "spoilage" of the solution, but not enough to be a danger to aquatic organisms. roud:


----------



## bigd603

Wrong info


----------



## bigd603

Bad info


----------



## bigd603

Wrong info


----------



## shift

I used to out s bit of metricide in mine to keep it good


----------



## jmh474

Thread gone quite, so as iv said iv started on my iAqua parts are turning up here and there got the main of the box sorted just need the rest of me bits

Sent from my GT-S5360 using Tapatalk 2


----------



## mistergreen

+++++++++++++++++++++


----------



## kman

It's been a busy weekend, but I hope to get some work done over the coming holiday weekend. Once I get the SD card issue worked out so it reliably fires up, and I get the master power switch cut into the enclosure box, then I can wire up the AC and should be nearly ready. I tested the dosing pumps last week... very exciting!  Next step is to make and stain the mounting I discussed and determine what sort of airline tubing I need to make the dosing setup work.


----------



## robsworld78

After 6+ weeks of waiting I finally got some more parts. I just realized my relay board is 5v not 12v like others are talking about.

I'm going to take the 5v from the arduino but was wondering if that will be too much for the mega when all relays are on? I remember O2surplus saying he had to add another voltage regulator and I think it was because of the relay board. 

Currently I have a temp probe, RTC clock, 12-bit PWM chip and 5" screen being powered off the arduino with no heat.

EDIT: In the next day or 2 I'll be adding a couple more temp probes.


----------



## O2surplus

robsworld78 said:


> After 6+ weeks of waiting I finally got some more parts. I just realized my relay board is 5v not 12v like others are talking about.
> 
> I'm going to take the 5v from the arduino but was wondering if that will be too much for the mega when all relays are on? I remember O2surplus saying he had to add another voltage regulator and I think it was because of the relay board.
> 
> Currently I have a temp probe, RTC clock, 12-bit PWM chip and 5" screen being powered off the arduino with no heat.
> 
> EDIT: In the next day or 2 I'll be adding a couple more temp probes.



Nice! I've been busy redesigning the next iteration of the iAqua shield to include the PCA9685 chip. How many of the 16 PWM outputs are you planning to control with the new software? I've managed to create connections for all 16, but I'll use less if they all won't be supported. Give me an idea of what you'll need connection wise and I'll make it happen.


----------



## PhysicsDude55

Just take a multimeter and test the relay board current draw.

I believe it draws somewhere in the neighborhood of 40-60ma per relay(when energized), but just depends on the relays.

I believe a 5" screen draws somewhere in the neighborhood of 400-500ma, so you're probably fine running the relays off the arduino, but its definitely going to be stretching the voltage regulator near its limits. The 5v regulator is rated at 800ma, but also depends on what your incoming voltage is.


----------



## robsworld78

Thanks PhysicsDude55, that helps. I checked my datasheets and this is what I get.

RTC - 2ma
Temp Sensor - 2ma
5" Display - 110ma without light, 150ma with light.
Relay - 20ma each

So I should be around 320ma.  I'm powering up with just USB connection at the moment but plan to use a 5v power supply, is that 800ma still realistic?

O2surplus currently I'm using 6 PWM pins from the 12-bit and I have to say its amazing. Now I can setup moon lights the way I want, dim. I'm thinking of adding another 6 LED channels but its a lot of extra code and its already over 2/3's full. Plus I still have quite a few changes to make so I'll have to see what happens. Ultimately it would be nice to have all 16 LED channels but the mega can't support that many with slider controls which are no longer simple.


----------



## O2surplus

robsworld78 said:


> O2surplus currently I'm using 6 PWM pins from the 12-bit and I have to say its amazing. Now I can setup moon lights the way I want, dim. I'm thinking of adding another 6 LED channels but its a lot of extra code and its already over 2/3's full. Plus I still have quite a few changes to make so I'll have to see what happens. Ultimately it would be nice to have all 16 LED channels but the mega can't support that many with slider controls which are no longer simple.



LOL- Just let me know what you'll need hardware wise, after you get it all sorted out, and I'll make sure it gets onto the new shield. Would it help if I were to add an Atmega 328 to the shield? I'm wondering if it could be programmed separately from the Mega to be it's slave and only handle the actual dimming chores? I can get the raw chip for < $3, so it wouldn't cost much.


----------



## robsworld78

Not really sure what that chips is for, lol. The mega will be fine as is, I'll program till its full. :hihi:


----------



## jmh474

So got quite a bit done last night in the shed got cold tho as gas bottle ran out one quick question or the relays N/O or N/C thought i would post a few pics to show my ideas












so as you can see im getting there just wish post would get a move on my

Sent from my GT-S5360 using Tapatalk 2


----------



## AnotherHobby

kman said:


> It's been a busy weekend, but I hope to get some work done over the coming holiday weekend. Once I get the SD card issue worked out so it reliably fires up, and I get the master power switch cut into the enclosure box, then I can wire up the AC and should be nearly ready. I tested the dosing pumps last week... very exciting!  Next step is to make and stain the mounting I discussed and determine what sort of airline tubing I need to make the dosing setup work.


Getting close! For the airline tubing I just used the Aquatic 3/16" silicone tubing. It can be slid over the tubing on the dosing pumps, and it will hold. That's how mine has been for well over a year without issue. You can see what I'm talking about on my old controller:












robsworld78 said:


> After 6+ weeks of waiting I finally got some more parts. I just realized my relay board is 5v not 12v like others are talking about.
> 
> I'm going to take the 5v from the arduino but was wondering if that will be too much for the mega when all relays are on? I remember O2surplus saying he had to add another voltage regulator and I think it was because of the relay board.
> 
> Currently I have a temp probe, RTC clock, 12-bit PWM chip and 5" screen being powered off the arduino with no heat.
> 
> EDIT: In the next day or 2 I'll be adding a couple more temp probes.


The 5v board is no problem at all. How are you feeding power to the Arduino itself? In mine (as seen on my schematics), I'm using a 5v regulator, and then feeding that to the Mega's 5v pin. I'm not using the regulator on the Mega. If you do it that way, you'll be just fine. Also, the regulator on the Mega gets quite hot with anything over about 7v feeding it, and if you feed it 12v it'll get crazy hot. All of the extra voltage you feed a regulator is given off in the form of heat. 

Here is a good article on the topic: Fuelling Your Arduino - Why you should use an External Power Breakout



O2surplus said:


> LOL- Just let me know what you'll need hardware wise, after you get it all sorted out, and I'll make sure it gets onto the new shield. Would it help if I were to add an Atmega 328 to the shield? I'm wondering if it could be programmed separately from the Mega to be it's slave and only handle the actual dimming chores? I can get the raw chip for < $3, so it wouldn't cost much.


I'm not sure what you'd need the 328 for, and you'll need the right supporting hardware to program it. I'd think a Mega should have all of the I/O and memory you'd need. If you need more I/O, you can get that other ways.



jmh474 said:


> So got quite a bit done last night in the shed got cold tho as gas bottle ran out one quick question or the relays N/O or N/C


It depends on how you want it to default. You may one some N/O and some N/C. If it's N/O then it'll have a default state of off. For example, if you reboot the controller, that outlet will go to off until it get's turned on by the Arduino, and if you go N/C then the outlet will default to on until the controller turns it off. iAqua is programmed for all N/O outlets, so you'd need to make some very simple changes if you went with N/C. Those changes would just be to show the opposite power icon for that outlet.


----------



## O2surplus

robsworld78 said:


> Not really sure what that chips is for, lol. The mega will be fine as is, I'll program till its full. :hihi:


The Atmega328 is the chip found on the Arduino UNO. My thinking was, if the Mega were to run short on memory, maybe some of the more generic led control coding could be moved to Atmega328. The 328 "slave" would then handle the math and heavy lifting with regards to the leds, and only rely on the "Master" Mega to instruct it "what to do when" via I2C.


----------



## kman

AnotherHobby said:


> Getting close! For the airline tubing I just used the Aquatic 3/16" silicone tubing. It can be slid over the tubing on the dosing pumps, and it will hold. That's how mine has been for well over a year without issue. You can see what I'm talking about on my old controller:


Well-timed post. I literally had that picture pulled up from your earlier post, to ask about it, but hadn't gotten around to writing the query yet.  Thanks!


----------



## robsworld78

O2surplus said:


> The Atmega328 is the chip found on the Arduino UNO. My thinking was, if the Mega were to run short on memory, maybe some of the more generic led control coding could be moved to Atmega328. The 328 "slave" would then handle the math and heavy lifting with regards to the leds, and only rely on the "Master" Mega to instruct it "what to do when" via I2C.


I think it'll be ok plus that sounds like a lot of trouble. :hihi: So far I've added 3500 lines of code and changed a bunch more and don't really want to go back and redo all that.  If that was done I would think it would be better to store the images on it so load time is faster but its running pretty good. Of course that would take 3, 4 or 10 of them, lol.


----------



## robsworld78

AnotherHobby said:


> The 5v board is no problem at all. How are you feeding power to the Arduino itself? In mine (as seen on my schematics), I'm using a 5v regulator, and then feeding that to the Mega's 5v pin. I'm not using the regulator on the Mega. If you do it that way, you'll be just fine. Also, the regulator on the Mega gets quite hot with anything over about 7v feeding it, and if you feed it 12v it'll get crazy hot. All of the extra voltage you feed a regulator is given off in the form of heat.


Currently its getting power from the USB. I can touch the regulator on the mega and just know its on. At first I did hook up a 12v power supply to the mega and yeah it got crazy hot fast. When this is done I was planning on using a 7v power supply but sounds better to go with a 5v regulator and power that with what's best. I've been looking at your schematics over the last couple days as I was hooking things up and just looked at it again but I don't see the 5v regulator? I only see 12v power.


----------



## jmh474

Does any know how long a cable run you could get away with between the arduino tft shield and the tft screen or would it be better to have the shield on the screen then run cable from that to prototype shield???

Sent from my GT-S5360 using Tapatalk 2


----------



## kman

jmh474 said:


> Does any know how long a cable run you could get away with between the arduino tft shield and the tft screen or would it be better to have the shield on the screen then run cable from that to prototype shield???


Most people have been reporting that about 18" is probably the most you can get away with, without doing something exotic like convert to i2c or something, which would be really complicated. Mine was working with an 18" IDE extension cable, but I had issues later and ended up connecting it directly.


----------



## Bigsease30

Hello all. When I try to compile your arduino code it always gives me an error. I have all of your libraries in the correct folder. The error code is this:

Arduino: 1.0.6 (Mac OS X), Board: "Arduino Mega 2560 or Mega ADK"
iAqua.ino: In function 'void setup()':
iAqua:476: error: 'file' was not declared in this scope
iAqua:477: error: 'SPISPEED_VERYHIGH' was not declared in this scope


The error that is highlighted on the screen is:
file.setSSpin(53);

Any info would greatly be appreciated.


----------



## jmh474

kman said:


> Most people have been reporting that about 18" is probably the most you can get away with, without doing something exotic like convert to i2c or something, which would be really complicated. Mine was working with an 18" IDE extension cable, but I had issues later and ended up connecting it directly.



Well the plan was to have the controller box at the bottom of the tank and then that the lcd in the top hood so that could be out the window lol might just put it in the door instead, so getting very close now now staring the shield got most off the Ethernet joints done like the heat probe and the pwm signal cable done, that will leave me with two ports left, everything come through the post now apart from the ARDUINO MEGA think they are teasing me now lol


----------



## kman

Bigsease30 said:


> Hello all. When I try to compile your arduino code it always gives me an error. I have all of your libraries in the correct folder. The error code is this:
> 
> Arduino: 1.0.6 (Mac OS X), Board: "Arduino Mega 2560 or Mega ADK"
> iAqua.ino: In function 'void setup()':
> iAqua:476: error: 'file' was not declared in this scope
> iAqua:477: error: 'SPISPEED_VERYHIGH' was not declared in this scope
> 
> The error that is highlighted on the screen is:
> file.setSSpin(53);
> 
> Any info would greatly be appreciated.


I believe I had nearly that same error, a couple of pages back. Do you have the TinyFAT library installed? It's not included in the main Zip file AH linked. Just track it down on the net and add it to your libraries, and I think that should do it.

Edit: Yup, see: http://www.plantedtank.net/forums/showpost.php?p=6960122&postcount=512


----------



## Bigsease30

O2surplus said:


> After you get the tinyFat library installed, you'll need to copy the 50 or so RAW files from the SD Image folder directly to the SD card. The iAqua software won't be able to find them, if they're still inside a file folder.


Ok, after installing the tinyfat library I was able to install the code to the arduino but no video showed up. I have changed the code to match my 3.2" and also 7" screen with no luck so far. I will continue to test different settings. Thanks for the help.


----------



## AnotherHobby

kman said:


> I believe I had nearly that same error, a couple of pages back. Do you have the TinyFAT library installed? It's not included in the main Zip file AH linked. Just track it down on the net and add it to your libraries, and I think that should do it.
> 
> Edit: Yup, see: http://www.plantedtank.net/forums/showpost.php?p=6960122&postcount=512


Dang it, I thought I updated the libraries file on the first post, but I didn't. It's updated now, so tinyFAT is now included. Sorry about that!


----------



## stephenpence

Hey O2 - any movement on the iAqua shield 2.0? Or do you have any of the original build hanging around?


----------



## O2surplus

stephenpence said:


> Hey O2 - any movement on the iAqua shield 2.0? Or do you have any of the original build hanging around?


Stephenpence-

I'm working on version 2.0 as time permits and it's almost done. I just have to finalize the design to work with "Robsworld78"'s new version of the software.:wink:
I do have a few of the original design shields built and ready to go. Send me a PM for more details.


----------



## jmh474

So iv got a quick question am i right in saying that on the tft shield that you have hack the pins so that 

2 - 42 
3 - 43
4 - 44
5 - 45
6 - 46

and header pins 2,3,4,5 and six are removed
and header pin 19 is hacked for the photocell


----------



## AnotherHobby

jmh474 said:


> So iv got a quick question am i right in saying that on the tft shield that you have hack the pins so that
> 
> 2 - 42
> 3 - 43
> 4 - 44
> 5 - 45
> 6 - 46
> 
> and header pins 2,3,4,5 and six are removed
> and header pin 19 is hacked for the photocell


Yes. Although I didn't actually cut the LED backlight header pin 19 off the TFT screen (although that would work), I just removed it from my 40 pin cable. 

The reason I moved those touch pins is because I wanted to leave ping 2-6 open for PWM use.


----------



## kman

jmh474 said:


> So iv got a quick question am i right in saying that on the tft shield that you have hack the pins so that
> 
> 2 - 42
> 3 - 43
> 4 - 44
> 5 - 45
> 6 - 46
> 
> and header pins 2,3,4,5 and six are removed
> and header pin 19 is hacked for the photocell


Yes. You can actually remove the entire header block (0-7) because none are used in the original location. Or, perhaps easier than removing the header pins, just snip off the pins. (but you still have to run a jumper wire over to the new pin location)


----------



## jmh474

Thanks every one for clearing that up for me as that may be my job for tonight if i can find time for the man cave lol and even better news the mega come today 

Sent from my GT-S5360 using Tapatalk 2


----------



## sushant

Are we actually using the EEPROM on the RTC shield because i was unable to find the address for the same specified anywhere in the sketch.


----------



## AnotherHobby

No, we are using the EEPROM on the Mega itself. There is 4 KB of it.


----------



## jmh474

ok so im lost yet again sorry to say, last night i pretty much finished the prototype shield and went to connect the tft shield and the screen but there are less pins on the screen than the tft shield i was under the impression that it was all 40 pins each all so i have the sd card on the screen did you get yours working?? or do i need to buy a septate one as well


----------



## sushant

i guess it depends on the type of TFT shield you are working with. i have the same shield that the author of this post started with and the SD card on the screen is working fine.


----------



## AnotherHobby

jmh474 said:


> ok so im lost yet again sorry to say, last night i pretty much finished the prototype shield and went to connect the tft shield and the screen but there are less pins on the screen than the tft shield i was under the impression that it was all 40 pins each all so i have the sd card on the screen did you get yours working?? or do i need to buy a septate one as well


The SD card reader on my screen works great.

Pictures?


----------



## jmh474

there are more pins on the screen

Sent from my GT-S5360 using Tapatalk 2


----------



## rottison

is that a 2.5 instead of a 3.2?


----------



## jmh474

its 3.2 just counted the pins and there is 34 on tft screen and then there is 40 on tft shield so im lost and this is my screen 

http://www.ebay.co.uk/itm/181481966069?_trksid=p2060778.m2749.l2649&ssPageName=STRK:MEBIDX:IT


----------



## AnotherHobby

Yeah, I have no idea what screen you got there. They did not send you what they showed you in the picture of that evilbay item (181481966069). They show a full 40 pins in the image, and you definitely got something else. They bait/switched on you. Can you get a sharper pic of the actual pin labels? I wonder what's missing.


----------



## jmh474

T_CS - CLK
PEN - F_CS
MIS0 - MOSI
GND - NC
VDD - GND
BL - VDD
D815 - SDCS
DB13 - DB15
DB11 - DB12
DB9 - DB10
DB7 - DB8
DB5 - DB6
DB3 - DB4
DB1 - DB2
RTS - DB0
WR - RO
CS - RS 

i think thats what they read bit hard then on the left of the top of pic abouve the pins it reads 33 - 34 then right is 1 - 2


----------



## AnotherHobby

Yeah, that screen is a totally different spec. I have no idea how you'd hook it up using the ElecFreaks shield. Can you return it?


----------



## jmh474

well iv msg them just wating for answer i have found this tho

http://www.geeetech.com/wiki/images/a/a9/TFT_3.2_With_SD_Touch_Module_34_pins.png


----------



## rottison

I remembered this same thing happened on a different forum it is a new board was bought for a build the seller told him keep the screen and sent him a new one but again it took like 3 weeks to get it


----------



## Guy.hall

Found that on http://www.geeetech.com/wiki/index.php/3.2TFT_LCD as well but looks from the pictures that you don't need a lcd shield with it. Tbh I have a 240x400 with 34 pins and the same shield as you. My eBay seller said mine won't work with arduino so never tried it. Think I might now just to see


----------



## Marspeed

Rottison looks like we are all here


----------



## O2surplus

Marspeed said:


> Rottison looks like we are all here


LOL- Welcome aboard!


----------



## jmh474

so iv msg them as i said and they told me i can keep that one and sending me out a replacement so just got to wait again sob

Sent from my GT-S5360 using Tapatalk 2


----------



## rottison

Hiya Marspeed welcome


----------



## Marspeed

Hi guys i already feel at home 
o2 i see you have a board 
i need to look this thread over i have a lot of catching up to do


----------



## jmh474

Marspeed said:


> Hi guys i already feel at home
> o2 i see you have a board
> i need to look this thread over i have a lot of catching up to do


its a good read think i must of gone through it a few times now lol

Sent from my GT-S5360 using Tapatalk 2


----------



## Marspeed

O2 hows that board comming along ?


----------



## O2surplus

Marspeed said:


> O2 hows that board comming along ?



I'm still tweaking the new design as time permits. Trouble is- my job is going to keep me extremely busy from now through the end of the year. I'm gonna be working a 14 hour Night shift X 6 days a week.  This will make for a few nice paychecks before Christmas, but I won't be sleeping when Santa comes to town.


----------



## cooldex

*4.3 Display*



PhysicsDude55 said:


> How are you loading the SD card bitmaps with the Due? I'm running a 4.3" screen (480x277) using the Due, and I could not get the UTFT SD card libraries to work, and they are listed as not being compatible with the Due.
> 
> I did find a workaround, but like you said, it was very slow.
> 
> What I ended up doing is just loading all the icon bitmaps into the sketch itself. The Due has 512k of sketch space, which is good for about 100 ~60x60 icons, plenty of room for all the icons in iAqua. I have a pretty involved GUI made, with about 80 icons, ~25 display pages, and 4500 lines of code, and I'm still only at 75% storage capacity on my Due.
> 
> I found that you can't really put any bitmaps that are really big, like the size of the entire screen, but there's not much of a reason to do that, all the GUI interface that I designed, and what I've seen of iAqua, is just a combination of icons and text on a black background.
> 
> My display loads REALLY quickly. On raw drawing/computing power (no bitmaps or SD cards involved), the Due is at least twice as fast as the Mega at drawing, and even with a screen using lots of shapes and icons, my Due draws every screen with virtually no noticeable delay. Its mostly limited by my ability to efficiently write code for the display (making sure things aren't redrawn all the time, polygons not overlapping, etc).
> 
> I originally bought a 7" LCD screen, but realized that 480X800 pixels was just too much for an arduino to handle to my liking, and found the 4.3" a good compromise, as the screen is about the size of a large android phone.



Hi mate
Can you post the code you using with the 4.3 LCD display.


----------



## cooldex

*Control board.*



O2surplus said:


> Thanks for the help guys!  I dropped the touch delay from 500ms to 100ms and couldn't be happier with the result. Adjustments are now easily made in just a few seconds rather than minutes LOL.
> 
> Here's a little iAquaPorn for "Kman"


Hi mate
Where can I get the control broad you suing?


----------



## cooldex

*Display issue*

[/QUOTE]



kman said:


> Ok, thanks. I'm relieved it's not a completely unknown issue, and has a simple solution! I'll mess with it tonight.
> 
> Visible progress is finally happening! I can't tell you how exciting it was to finally see the graphics coming up on screen.


Hi mate
How did you fix it. I am having the same issues, restarted many times no difference.


----------



## dkatsariotis

Hi,

I just finished a modded version for my aquarium.

I modded the code to add a 3rd pump and I removed the feeding and lights effects parts.

I use 6 of the 8 channel relay board. 

1st: Fan control
2nd: Pump1
3rd: Pump2
4th: Pump3
5th: Lights
6th: CO2

I also changed a lot of the menu items and also changed the appearance of the Lights and CO2 schedule screens so they much with my personal taste.

I devided the whole project into 2 parts. The first part is the acrylic box that contains the LCD and the Arduino board and the second part contains the relay board, 3 pumps and 2 power outlets.

I am uploading a few photos.

Thank you for reading and a great thank to all of you for your posts which inspired and guided me to make this project.


----------



## PhysicsDude55

Wow! Very nicely done! Love it!


----------



## cooldex

jmh474 said:


> well iv msg them just wating for answer i have found this tho
> 
> http://www.geeetech.com/wiki/images/a/a9/TFT_3.2_With_SD_Touch_Module_34_pins.png


Hi 
Where in the code did change from 7" to 3.2" display?


----------



## STReNT

I wouldn't recommend using those relays to control the dosing pumps as the time it takes for the relay to open/close is much slower and varies more than a transistor or mosfet, so you might get variances in your dosage amounts.


----------



## dkatsariotis

STReNT said:


> I wouldn't recommend using those relays to control the dosing pumps as the time it takes for the relay to open/close is much slower and varies more than a transistor or mosfet, so you might get variances in your dosage amounts.


Hi,

I have already calculated the delay for the relays and modified the code to add this delay. According to all my calculations and the tests I performed for a couple o months before installing it to my tank the delay might vary only +/- 0.01ms from the value I changed. 

So I think this is ok for now.


----------



## rottison

dkatsariotis
that is very clean looking I really like how the bottles connect to the back of the case that is a great idea.


----------



## dkatsariotis

rottison

Thank you.
I used 3 fluoresent lamp metal holders and i just stretched them a little bit. If you Google for images with the above description you will see what i mean.

Katsariotis Dimitris


----------



## kman

cooldex said:


> Hi mate
> How did you fix it. I am having the same issues, restarted many times no difference.


I believe you're referring to the issue where the graphics don't load from the card?

I haven't fully resolved the issue, actually. I've been slammed with other things I've had to deal with, with the holidays, so the project has been back-burnered for the the past week or so. I hope to get back to it soon.

Initially what helped with a different SD card. I'm going to try another one and see if that helps, since I'm having the issue again.

Also, of course, make sure you have all of the graphics copied onto the SD card correctly. They should all go loose at the root level of the card. It won't find them in a subfolder.


----------



## fietsenrex

after reading back al the posts for an hour or so i found the shopping list 

but the temperature probe is out of stock will this one do the same job? http://www.dx.com/p/water-proof-ds18b20-temperature-probe-90cm-142889#.VIc02slrO70

difference is that it has got 3 wires instead of 2..


----------



## jmh474

i needs to be 3 wire look over the wiring diagram mate should have red +, black - and another color for the senc 

Sent from my GT-S5360 using Tapatalk 2


----------



## fietsenrex

oh thnx, i did not read the wiring yet since i'm only scourcing the parts for now


----------



## O2surplus

Due to popular demand- I'm posting the build files for my iAqua shield. This version is directly compatible with AH's code, but does allow for some expansion as new features get added to the original software. I've downsized the size of the PcB to less than 10cm X 10Cm to reduce costs. Here's a photo-










The PcB design, Circuit schematic, Gerber files, and a parts list are attached. The Gerber files were generated for use at Seeedstudios. Use the 10cm X 10Cm size option when ordering. Due to the file size restrictions in place on this Forum, I was forced to separate the Gerber files into 2 smaller zip folders prior to uploading them. Please be sure to copy all *8* gerber files into 1 zip folder before sending them to SeeedStudios The Gerber files can be uploaded directly to the Seeedstudio site, making the ordering process very easy. Services : Seeed Studio Bazaar, Boost ideas, extend the reach


----------



## stephenpence

.....wow. This forum needs the option of a 'donate' button to donate to individuals like developer websites have... O2 has earned it!


----------



## rottison

for the people using the 02-iAqua board do you use the 24v plug on the board to power every thing? or are you using some different set up. just good to see how others have set there up


----------



## jmh474

stephenpence said:


> .....wow. This forum needs the option of a 'donate' button to donate to individuals like developer websites have... O2 has earned it!


don't forget anotherhobby with out him none of this would even be happening so a big thank you to every one that made this controller possible :beer:

Sent from my GT-S5360 using Tapatalk 2


----------



## cooldex

O2surplus said:


> Due to popular demand- I'm posting the build files for my iAqua shield. This version is directly compatible with AH's code, but does allow for some expansion as new features get added to the original software. I've downsized the size of the PcB to less than 10cm X 10Cm to reduce costs. Here's a photo-
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> The PcB design, Circuit schematic, Gerber files, and a parts list are attached. The Gerber files were generated for use at Seeedstudios. Use the 10cm X 10Cm size option when ordering. Due to the file size restrictions in place on this Forum, I was forced to separate the Gerber files into 2 smaller zip folders prior to uploading them. Please be sure to copy all *8* gerber files into 1 zip folder before sending them to SeeedStudios The Gerber files can be uploaded directly to the Seeedstudio site, making the ordering process very easy. Services : Seeed Studio Bazaar, Boost ideas, extend the reach



Thanks mate! Really appreciate this.


----------



## stephenpence

For real. You guys are incredible!


----------



## fietsenrex

ordered all of the parts (i hope) so now the wait begins for the delevery...

hopefully everything goes smooth but i don't think it will


----------



## rottison

02 do you use the 24v input? or just have 12v going in to your iAqua board. To run every thing in the metal box. I know you have a separate 12v psu for your relays built in to the box with them.


----------



## O2surplus

rottison said:


> 02 do you use the 24v input? or just have 12v going in to your iAqua board. To run every thing in the metal box. I know you have a separate 12v psu for your relays built in to the box with them.


I'm using the 24V input, but I'm only feeding it 13.5V. I spec'd the iAqua shield's power jack at 24V because the on board voltage regulators are designed to accept up to 30V. I did that as a convenience feature for users that are powering their DIY leds from a 24V power supply. It might save the need to run extra power wiring for the controller.

LOL- I might include an SCW08C-12 on the next version of the shield, so users will be able to power the controller from a 72V source.


----------



## O2surplus

stephenpence said:


> .....wow. This forum needs the option of a 'donate' button to donate to individuals like developer websites have... O2 has earned it!



LOL- Thanks, but there's no need for donations. I work for a large oil company that pays me to be "on call" all night, essentially paying me to pass the time by pursuing my own hobbies. I'm "killin' two birds with one stone" so to speak.:hihi:


----------



## fietsenrex

am i being retarded/lazy? i downloaded the libraries and added them to the arduino software but i can't open any .ino files it says that it are only example files..

am i doing something wrong? or do i need to load all of the "example" files and copy paste them into one big file and then compile it?


----------



## cooldex

*iAqua code*

Hi anyone using the iAqua code successfully, I have a number of issues:
1. Touch screen does not work :icon_cry:
2. When I insert the SD card the screen goes white see image, 4GB card 

The code is the same as original with device change to match mine - ITDS43. The SD card works I can read and write to it. Any help please!

















Bump:


Code:


#include <Wire.h> // needed by tons of stuff
#include <EEPROM.h>  // used to store and retrieve settings from memory
#include <UTFT.h>  // used to interface with the TFT display
#include <UTouch.h>  // used to interface with the touch controller on the TFT display
#include <tinyFAT.h> // used to acess the SD card
#include <UTFT_tinyFAT.h>  // used to read .raw images from the SD card
//#include <DS1307new.h>  // library to talk to the RTC chip
#include <RTClib.h>

#include <Time.h> // allows conversion to UNIX time for easier date/time math
#include <TimeAlarms.h>  // used to power schedules
#include <IRremote.h>  // used to send IR commands to the light, LED must be on pin 9
#include <OneWire.h> // network library to communicate with the DallasTemperature sensor, 
#include <DallasTemperature.h>  // library for the Temp sensor itself

// libraries I was using at one time, but not any more. Leaving them here in case I need them again
//#include<stdlib.h>
//#include <avr/pgmspace.h>

// Declare which fonts we will be using
extern uint8_t Sinclair_S[];
extern uint8_t arial_bold[];

// define relay pins
// all analog to save on digital pins
int pwrLight1Pin = A0;
int pwrLight2Pin = A1;
int pwrFilterPin = A2;
int pwrCircPin = A3;
int pwrHeatPin = A4;
int pwrCO2Pin = A5;
int pwrAux2Pin = A6;
int pwrAux1Pin = A7;

int alarmPin = 2; //(was 2)
int screenBrightPin = 8; // pwm pin for the LCD backlight (was 4)
int lightSensorPin = A8;  // analog pin for the ambient light sensor
int pressureSensorPin = A9;  // analog pin for the CO2 pressure sensor

byte backLight = 255;  // startup brightness to 100%
boolean backlightTouch = true; // initial setting of true to allow the screen to stay bright after boot

//define pump pins
int dosingPump1 = 10;
int dosingPump2 = 11;

// screen settings corresponding to eeprom values 28-31
byte screenRetHome, screenDimLevel, screenDimSec, screenBrightMem;

// Pins for temperature sensor
#define ONE_WIRE_BUS_W 47         //water sensor on pin 47

// for time
RTC_DS1307 RTC;
// for time calcuation, we need to know the current time zone offset
//int UTC_Offset=-5;


// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWireW(ONE_WIRE_BUS_W);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensorW(&oneWireW);      //water sensor

//UTFT myGLCD(SSD1289,38,39,40,41); // start up an instance of the TFT screen
UTFT  myGLCD(ITDB43,38,39,40,41);
UTouch myTouch(46,45,44,43,42);  // start up an instance of for touch
//UTouch  myTouch(6, 5, 4, 3, 2);

UTFT_tinyFAT myFiles(&myGLCD);  // start up an instance to read images from the SD card


----------



## kman

cooldex said:


> Hi anyone using the iAqua code successfully, I have a number of issues:
> 1. Touch screen does not work :icon_cry:
> 2. When I insert the SD card the screen goes white see image
> 
> The code is the same as original with device change to match mine - ITDS43. The SD card works I can read and write to it. Any help please!


Did you jumper the wires needed on the TFT sheild? That's what makes the touch screen work. (it will display without the jumpers in place, but you can't push anything) See these posts: http://www.plantedtank.net/forums/showpost.php?p=6513058&postcount=104 and http://www.plantedtank.net/forums/showthread.php?p=6514170#post6514170

The SD card needs to be already in the socket when you power up the board. You can't add it (or remove it) once it's started up.

Make sure the graphics (all the RAW files in the "SD Card Images" folder from the Zip file) are all copied to the root level of the SD card.


----------



## cooldex

kman said:


> Did you jumper the wires needed on the TFT sheild? That's what makes the touch screen work. (it will display without the jumpers in place, but you can't push anything) See these posts: http://www.plantedtank.net/forums/showpost.php?p=6513058&postcount=104 and http://www.plantedtank.net/forums/showthread.php?p=6514170#post6514170
> 
> The SD card needs to be already in the socket when you power up the board. You can't add it (or remove it) once it's started up.
> 
> Make sure the graphics (all the RAW files in the "SD Card Images" folder from the Zip file) are all copied to the root level of the SD card.



Yes had the SD card on when I power up, I also have 2 LCD shields TFT - Electric freaks like the one on the link you posted. All the .raw files are in root level. I also tested another shield from sainsmart photo posted. I will try to modify the TFT shield and see what happens. Thanks! 

But why does touch work when using calibration?


----------



## O2surplus

cooldex said:


> But why does touch work when using calibration?


The calibration sketch uses the original touch pin locations on the shield. You haven't relocated them yet to comply with the iAqua Controller's TFT pin assignments.


----------



## cooldex

O2surplus said:


> The calibration sketch uses the original touch pin locations on the shield. You haven't relocated them yet to comply with the iAqua Controller's TFT pin assignments.


I thought by modifying the code as below it will work:



Code:


UTouch myTouch([B]46,45,44,43,42[/B]);  // start up an instance of for touch

//UTouch  myTouch[B](6, 5, 4, 3, 2)[/B]; // [COLOR=Blue]Original worked with calibration but not in the iAqua code.[/COLOR]


----------



## sushant

cooldex said:


> I thought by modifying the code as below it will work:
> 
> 
> 
> Code:
> 
> 
> UTouch myTouch([B]46,45,44,43,42[/B]);  // start up an instance of for touch
> 
> //UTouch  myTouch[B](6, 5, 4, 3, 2)[/B]; // [COLOR=Blue]Original worked with calibration but not in the iAqua code.[/COLOR]


if you haven't relocated the wires yet then uncomment"UTouch myTouch(6, 5, 4, 3, 2)"


----------



## AnotherHobby

cooldex said:


> 2. When I insert the SD card the screen goes white see image, 4GB card


The SD card library being used only supports FAT16, which means no bigger than a 2 GB card. You'll need to get the correct card (2 GB or less) and make sure it's formatted FAT16.


----------



## stephenpence

Sooooo..... Has anyone put in a build order for iAqua shield 2.0?


----------



## rottison

is there a easy way too make a serial db9 cut out in plastic?


----------



## stephenpence

Hey O2, do you know if Seeed wants to see the .txt file you sent for the bill of materials? or should i upload the entire .brd file? 
Also, do you know if these guys will do less than 100 as an order minimum? I can't see myself pushing 100 of these bad boys... that's a lot of iAquas running around...


----------



## stephenpence

NM O2Surplus.... Fusion... not propogate... my life makes sense again. although is there a way to kick out a bill of materials using eagle? and if so, is there a way to have it use the OPL? not to seem overly lazy haha...


----------



## cooldex

stephenpence said:


> Sooooo..... Has anyone put in a build order for iAqua shield 2.0?



I am in the process. Ordered the PCB boards. You can order 5 pcs, like O2 said you will have to unzip all 4 zip files and then create one zip file with all 8 files.


----------



## stephenpence

Are you having them assemble it? That's where I ran into issues, was uploading a workable BOM


----------



## cooldex

No they build the blank PCB for you. You have to order the parts and then assembly it yourself.


----------



## stephenpence

Gotcha... Yeah with the current state of my soldering skills, I am more likely try give them the BOM and have them assemble it


----------



## O2surplus

Here's another parts list that should help you guys out. It's got links to Digikey and FleaBay included. Please note that you don't have to use these exact parts, as some of them are extremely over priced or unavailable. Other cheaper options are available with a little searching. :hihi: Send me a PM if you need additional help.


----------



## O2surplus

stephenpence said:


> Gotcha... Yeah with the current state of my soldering skills, I am more likely try give them the BOM and have them assemble it


This PcB features SMD components on both sides. They won't be able to solder it using an oven, for fear of components falling off. It has to be soldered by hand using hot air.:hihi:


----------



## stephenpence

Cooldex.. we should have done a group-buy!


----------



## rottison

I can see V2 is going to be a pain in the but to put together new I should of order the extra fine skinny tips for that hot thingy ..hehehehe


----------



## sushant

i guess no-one has figured it out yet, but dosing pump's calibration doesn't works in the newer version


----------



## rottison

02 any pic's of what the new board might look like? I am sure everyone is busy with the holidays I know I am. Merry Christmas everyone may your fish swim and beer be cold.


----------



## cooldex

stephenpence said:


> Cooldex.. we should have done a group-buy!


Yeah! we should have but my order is already been shipped. I had ordered the components but realized that some of them were not right so I ordered again using the excel sheet O2 attached earlier with links which was of great help. 
THANKS O2! roud:
I live in the UK but could not find most of the components at one place so I had to order them using the links in O2's excel sheet. I also got myself a hot air solder station which will help with the SMD components. I cannot wait to get started. 

Bump:


O2surplus said:


> This PcB features SMD components on both sides. They won't be able to solder it using an oven, for fear of components falling off. It has to be soldered by hand using hot air.:hihi:



Hey O2 a question for you, the shield will work with 3.2" display or any size?


----------



## O2surplus

cooldex said:


> Yeah! we should have but my order is already been shipped. I had ordered the components but realized that some of them were not right so I ordered again using the excel sheet O2 attached earlier with links which was of great help.
> THANKS O2! roud:
> I live in the UK but could not find most of the components at one place so I had to order them using the links in O2's excel sheet. I also got myself a hot air solder station which will help with the SMD components. I cannot wait to get started.
> 
> Bump:
> 
> 
> Hey O2 a question for you, the shield will work with 3.2" display or any size?


The iAqua shield still requires a TFT/LCD shield that's been modded to comply with the pinouts called in AH's code. You'll need to follow the instructions for modding the TFT/LCD shield posted by AH earlier in this thread. For now, the only TFT/LCD supported is the 3.2" version. That is until "Robsworld78" posts up his newer version of the code for 5" & 7" displays.

Bump:


rottison said:


> 02 any pic's of what the new board might look like? I am sure everyone is busy with the holidays I know I am. Merry Christmas everyone may your fish swim and beer be cold.


Merry Christmas Dale!

I haven't finished version 2.0 yet. I'm waiting for "Robsworld78" to post his new code before I finalize the new design.


----------



## jmh474

well my control is finished but as you all know i was sent the wrong screen so im still waiting on that, that was sent out on the 10th so think i might have a little while yet, just one more thing MERRY CHRISTMAS hope you all have a grate one

Sent from my GT-S5360 using Tapatalk 2


----------



## saint73

Hi everybody "Big Thank You " to AnotherHobby for sharing his project ,and O2  for shield love the IAqua controller much better then Jarduino controller. There is very nice ph stamp with ph electrode for about $29 sketch included . I'm trying add ph probe  to IAqua lol . I Found this kit on http://www.dfrobot.com/index.php?ro...duct_id=1025&search=ph+probe&description=true


----------



## robsworld78

O2surplus said:


> I haven't finished version 2.0 yet. I'm waiting for "Robsworld78" to post his new code before I finalize the new design.


I'm still working hard at it. Saint73, I just ordered that ph probe and stamp, should be here any day. Merry Christmas everyone!


----------



## jmh474

so i see robsworld78 is changing the code for the iaqua, my i ask what is he adding to this all ready grate controller??

Sent from my GT-S5360 using Tapatalk 2


----------



## robsworld78

Well I got myself in deep.  I was only planning to upsize everything to fit a 5" screen and clean up any of the small bugs but since have added auto fish feeder with 2 daily schedules, ph, 2 more dosing pumps, 8 channels of 12-bit dimming with high/low level sliders, lightning, lunar moon phases (the moonlight brightness will change according to the brightness of the moon if you want) 2 more temperature probes display C or F, temperature calibration. I've put a lot and I mean a lot of detail in the GUI, its rock solid, you can't do anything that will screw something up. There's also some changes in how it works. My favorite improvement though is speed, that always bugged me. Wait till you see this thing in action, its a mega on steroids. :hihi: My problem lately has been trying to optimize the code because the other day I hit the limit on flash memory. Right now I'm contemplating adding another arduino in the mix. I hate wires and want this thing to be presentable so I'm thinking the main controller with the 5" display will have only 1 cat5 cable come out of it. There would be another arduino in the power bar running the show. Then all plugs for the accessories and LED connections can be in the power bar and not on the display so everything says neat looking. 

The pictures below are what I envision. I plan to create custom cases in 3D so they can be printed. This is my project box prototype of course.  Just like the picture there would be one simple cable coming from the display going to the power bar which can be hidden away. Imagine more plugs on the power bar for the other accessories. The last image is an actual shot, the images are crystal clear in person and colors look better, for some reason the blues are different yet there not. The empty box is for PH readings when I get the thing and I still have to clean the page up some.


----------



## jmh474

Well all i can say to that is WOW, wish Santa could give me one tomorrow, think we are going to need a step by step guide on how to set that beast up lol

Sent from my GT-S5360 using Tapatalk 2


----------



## cooldex

Hi robsworld78
Will this work with the current iAqua shield?


----------



## cooldex

Merry xmas!!!


----------



## O2surplus

cooldex said:


> Hi robsworld78
> Will this work with the current iAqua shield?


Not without a lot of work. I broke out all of the remaining pins on the MEGA, so they are available, but the additional support circuits ( transistors, diodes,ect..) would have to be wired in separately. Version 2.0 of the shield will include all of the additional components. I'll post the design files after I create a prototype first. 10 PcB's is the minimum order, so there will be "spare PcB's" available.


----------



## tanan

Buy any chance would you be willing to ship it internationally?


----------



## O2surplus

tanan said:


> Buy any chance would you be willing to ship it internationally?


I'm willing to ship anywhere in the world-LOL. It's the US government that decides whether you'd get it or not. I'll have to read up to see if there's any International shipping restrictions to your country. If not- I'd be more than happy to. If there are- I'll post the build files + all the info you'd need to build the shield yourself.


----------



## robsworld78

As O2surplus says, it would be a lot of work. Some pin outs have changed. I'm going to create a thread soon.

Bump: What do the parts cost for the shield?


----------



## AnotherHobby

Wow!

Holy [curse word] Rob! That interface looks awesome! The hardware looks really great as well!


----------



## O2surplus

robsworld78 said:


> Bump: What do the parts cost for the shield?


$15 PcB + components + a couple of $ in consumables = $35

That's been my cost on average. But I buy in bulk- LOL


----------



## robsworld78

That's not to bad, looks like a lot of parts in the list. 

Thanks AnotherHobby, you've inspired me. I think you'll be quite surprised when you see it running, I'm gonna make a video later.


----------



## saint73

Robs world ...can't wait to see your baby ,at least can you tell what kind of lcd screen did you use it so I can order it in advance  . Btw nice people live in Edmonton  very nice shopping mall  .


----------



## rottison

I hope the next version of this is soon I am ready to build the next one this first one was a lot of fun


----------



## robsworld78

I have the 5" sainsmart display 




I should be done in about a month or so. 

Edmonton is great, but as far as I'm concerned our mall is over rated and a waste of a few good city blocks. 

EDIT: I should also mention, the link above, it says the display has an IC which can store images, well that's not true. If it does has a IC chip sainsmart isn't telling me how to use it, I've contacted them a few times about it but they are useless for support. So don't get excited about that, this is nothing more than a touch display, images still need to go on a SD card.


----------



## mistergreen

Do any of you have multiple one wire thermometer on the same bus? I've seen the schematic but was wondering how to poll the different thermometers in code.


Sent from my iPad using Tapatalk HD


----------



## robsworld78

Do you mean hooking more than one probe to a single pin?


----------



## mistergreen

robsworld78 said:


> Do you mean hooking more than one probe to a single pin?


yup, you can do that or you can hook it to another pin. I was wondering what you guys are doing in coding my controller.

It's a little involved hooking to the same bus, you have to find the device's address.
It might be easier for my sanity to just use different pins.


----------



## robsworld78

It's actually pretty easy to share a pin. There's a sketch called "one wire address finder", that will tell you the address of your hardware. The addresses below are for mine and probably won't work for you. I added the file as an attachment.



Code:


#include <OneWire.h> // network library to communicate with the DallasTemperature sensor, 
#include <DallasTemperature.h>  // library for the Temp sensor itself

// Pin for temperature sensors
#define ONE_WIRE_BUS 47     

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);    

DeviceAddress waterSensor = { 0x28, 0xA6, 0xA0, 0xB5, 0x05, 0x00, 0x00, 0xE6 };
DeviceAddress airSensor = { 0x28, 0x73, 0x36, 0xB5, 0x05, 0x00, 0x00, 0xE2 };
DeviceAddress lightSensor = { 0x28, 0x4F, 0xCA, 0xCF, 0x05, 0x00, 0x00, 0x46 };

void setup()
{
  Serial.begin(9600);

  Wire.begin();

  sensors.begin();           //start up temperature library
  sensors.setResolution(waterSensor, 12);
  sensors.setResolution(airSensor, 12);
  sensors.setResolution(lightSensor, 12);
}

void loop()
{  
}

void checkTemps()
{
   float rawTemp = sensors.getTempF(waterSensor);
   myGLCD.printNumF(rawTemp, 1, 75, 193);

   rawTemp = sensors.getTempF(airSensor);
   myGLCD.printNumF(rawTemp, 1, 175, 193);

   rawTemp = sensors.getTempF(lightSensor);
   myGLCD.printNumF(rawTemp, 1, 275, 193);
}

If you change


Code:


rawTemp = sensors.getTempF(lightSensor);

to 


Code:


rawTemp = sensors.getTempC(lightSensor);

it will display celsius instead of fahrenheit, no need for formulas.


----------



## sushant

As far as i know, each DS18B20 comes with a unique address and that is why it's possible to have multiple device on 1wire bus.

you can use the below code for getting the address:



Code:


#include <OneWire.h>

// DS18S20 Temperature chip i/o
OneWire ds(10);  // on pin 10

void setup(void) {
  // initialize inputs/outputs
  // start serial port
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  ds.reset_search();
  if ( !ds.search(addr)) {
      Serial.print("No more addresses.\n");
      ds.reset_search();
      return;
  }

  Serial.print("R=");
  for( i = 0; i < 8; i++) {
    Serial.print(addr[i], HEX);
    Serial.print(" ");
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n");
      return;
  }

  if ( addr[0] == 0x10) {
      Serial.print("Device is a DS18S20 family device.\n");
  }
  else if ( addr[0] == 0x28) {
      Serial.print("Device is a DS18B20 family device.\n");
  }
  else {
      Serial.print("Device family is not recognized: 0x");
      Serial.println(addr[0],HEX);
      return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end

  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.

  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("P=");
  Serial.print(present,HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print( OneWire::crc8( data, 8), HEX);
  Serial.println();
}


----------



## rottison

I had LOT of problems with really the only guy on fleabay that sells sainsmart stuff he is also big on amazon I complained about the IC chip missing on the 2 7" screens I bought from them on amazon well next thing I know I was unable to buy from them on amazon fleabay and a whole bunch of other sites selling arduino stuff so after 2 weeks of this I wrote and apologized for misunderstanding and if there was any it was all on my part and I was sorry for it and like magic the next day I was able to buy from every site I was blocked from and got a letter from fleabay saying it must of been some thing wrong with the way I was entering the url or some thing


----------



## robsworld78

Wow, that's pretty crazy. I guess I better not send another email, I still want there crap. :hihi:


----------



## Fernando Garcia

Hi!

Firstly, Happy New Year to all!

Rob, can you tell us what you did to turn your code so fast comparated with IAqua?

https://www.youtube.com/watch?v=-W7oT-zXVug

Best regards.


----------



## Marspeed

HAPPY NEW YEAR EVERYONE 
couple questions is this new sketch available yet and 
o2 have you done anything with that new shield

marc


----------



## O2surplus

Marspeed said:


> HAPPY NEW YEAR EVERYONE
> couple questions is this new sketch available yet and
> o2 have you done anything with that new shield
> 
> marc


It's basically done, just a little lite editing is needed. I just have to wait for Rob to finish up his code and release it to the world before I'm able to nail down the Mega pin assignments.


----------



## robsworld78

Sorry can't reveal my secrets just yet, you'll find out soon enough.


----------



## rottison

come on man your killing us  it will be like Christmas again specially after seeing that video


----------



## Fernando Garcia

Hi!

While Rob can't show the secret, I'm searching some solution.

I found something here: http://forum.arduino.cc/index.php?topic=273573.15

If someone want try here's the library (UTFT_SdFat): http://1drv.ms/1AnDx2N

The difference of speed between Henning's library and this is 67.95% using this codes:



Code:


#include <SdFat.h>
#include <UTFT.h>
#include <UTFT_SdFat.h>

UTFT myGLCD(ITDB32S, 38, 39, 40, 41);
UTFT_SdFat myFiles(&myGLCD);

const byte ChipSelect = 5; // For Ferduino Mega 2560
//const byte ChipSelect = 53; // For TFT
//const byte ChipSelect = 4; // For ethernet shield

SdFat file;

char* files[1]={"TEST.RAW"}; // Converted size 192.000 bytes
#define X_SIZE 400 // Image size x
#define Y_SIZE 240 // Image size y

#define ORIENTATION PORTRAIT
//#define ORIENTATION LANDSCAPE

void setup()
{
  Serial.begin(9600);
  myGLCD.InitLCD(ORIENTATION);
  myGLCD.clrScr();
  file.begin(ChipSelect, SPI_FULL_SPEED);
  Serial.print("Time to load: ");
  float PreviousMillis = millis();
  myFiles.loadBitmap(26, 80, 188, 72, "iAqua.raw");
  myFiles.loadBitmap(53, 188, 134, 25, "Copy.raw");
 // myFiles.loadBitmap(0, 0, X_SIZE, Y_SIZE, files[0]); 
  Serial.print((millis() - PreviousMillis)/1000);
  Serial.println(" seconds.");
}

void loop()
{
}




Code:


#include <tinyFAT.h>
#include <UTFT.h>
#include <UTFT_tinyFAT.h>

UTFT myGLCD(ITDB32S, 38, 39, 40, 41);
UTFT_tinyFAT myFiles(&myGLCD);

const byte ChipSelect = 5; // For Ferduino Mega 2560
//const byte ChipSelect = 53; // For TFT
//const byte ChipSelect = 4; // For ethernet shield

#define ORIENTATION PORTRAIT
//#define ORIENTATION LANDSCAPE

char* files[1]={"TEST.RAW"}; // Converted size 192.000 bytes
#define X_SIZE 400 // Image size x
#define Y_SIZE 240 // Image size y

void setup()
{
  Serial.begin(9600);
  myGLCD.InitLCD(ORIENTATION);
  myGLCD.clrScr();
  file.setSSpin(ChipSelect);
  file.initFAT(SPISPEED_VERYHIGH);
  Serial.print("Time to load: ");
  float PreviousMillis = millis();
  myFiles.loadBitmap(26, 80, 188, 72, "iAqua.raw");
  myFiles.loadBitmap(53, 188, 134, 25, "Copy.raw");
 // myFiles.loadBitmap(0, 0, X_SIZE, Y_SIZE, files[0]); 
  Serial.print((millis() - PreviousMillis)/1000);
  Serial.println(" seconds.");
}

void loop()
{
}

Best regards.


----------



## Fernando Garcia

Hi!

Here have another version working better. ftp://ghlawrence.myftp.org:2121

Just change UTFT_tinyFAT to UTFT_SdRaw and loadBitmap to load.

Edit: AnotherHobby, a suggestion.

You can remove this line:



Code:


tempC = ((tempC*1.8)+32);  //convert to F

Only change:



Code:


tempC = sensorW.getTempC(waterSensor);  //read water temperature

To:



Code:


tempC = sensorW.getTempF(waterSensor);  //read water temperature

Best regards.


----------



## NatroN

I'm almost ready with my version of IAqua - but no single line of code was adapted. Just the awesome ideas as well as grapchics.

Now I tried the new bitmap libraries... and took the times.. homescreen took 9 seconds with HKs UTFT - 6seconds with the modified version and 4!! with this version. More than 50% improvement with an old 256mb sd card. - think a newer card could even get more out of it.

I'll made a short video and upload it to youtube


----------



## Fernando Garcia

Hi!

AnotherHobby, more a suggestion. 

You can save memory using byte instead int to variables that never will be higher than 255 and smaller than 0.

To pin numbers you can use const int or const byte as:



Code:


const byte pwrLight1Pin = 54;  // A0;
const byte pwrLight2Pin =  55; // A1;
const byte pwrFilterPin = 56; // A2;
const byte pwrCircPin = 57; // A3;
const byte pwrHeatPin = 58; // A4;
const byte pwrCO2Pin = 59; // A5;
const byte pwrAux2Pin = 60; // A6;
const byte pwrAux1Pin = 61; //A7;

const byte ledRedPin = 6;
const byte ledBluePin = 5;
const byte ledGreenPin = 4;
const byte ledWhitePin = 3;

Best regards.


----------



## NatroN

here is the video of my controller in action.
I'm using it as it is for my 600 liter aquarium. Everything done and working (except some problems with the ph probe and some electrical inteferences.)

I want to thank anotherHobby for the creative input!

http://youtu.be/6wCHI6fy76g


----------



## rottison

would like to see more about the Devices on 230V are controlled with radio controlled outlets I didn't see it in the video or didn't recognize it could you explain how that works


----------



## Fernando Garcia

Hi!

The code can be more fast still.

Open UTFT_SdRaw.H and change the value of "bufmult" to a value higher than 1 in load() function.

With 2548 bytes of free RAM is possible use bufmult = 4, the improvement is of 3.66 % in home screen.

The bigger image at home screen have 240 px (axis X) so, the buffer size will be 240 x bufmult x 2. To bufmult = 4 will be 240 x 4 x 2 = 1920 bytes. Then the free RAM should be higher than this value. 

Best regards.


----------



## NatroN

rottison said:


> would like to see more about the Devices on 230V are controlled with radio controlled outlets I didn't see it in the video or didn't recognize it could you explain how that works


Pretty easy. Just bought 2 sets of rc outlets (8 outlets) and a RC linkset (http://www.exp-tech.de/433mhz-rf-link-kit )

Rc switch library and you are ready to receive and send signals. 

All the links I could share are in german - wont help much I think. But maybe try this to get an idea

http://www.instructables.com/id/Cheap-Home-Automation-using-Wireless-Outlet-Module


----------



## PhysicsDude55

How many people are actually running an iAqua controller setup? 10? More?

Gotta say, AnotherHobby (and 02Surplus, robsworld, and others who have contributed!) I am really impressed with how this has developed and become a useful product for many people.

I started making an arduino aquarium controller 4 years ago, and have not really been able to find other people on the internet interested in this sort of thing, but have definitely found them here!

I really commend your effort in making this useful for other people, and spending so much time editing the code and making it publicly available. I would have a really hard time doing that, since my code is not written particularly well, and having other people constantly critique your code can be difficult to deal with too.

roud:


----------



## O2surplus

PhysicsDude55 said:


> How many people are actually running an iAqua controller setup? 10? More?
> 
> Gotta say, AnotherHobby (and 02Surplus, robsworld, and others who have contributed!) I am really impressed with how this has developed and become a useful product for many people.
> 
> I started making an arduino aquarium controller 4 years ago, and have not really been able to find other people on the internet interested in this sort of thing, but have definitely found them here!
> 
> I really commend your effort in making this useful for other people, and spending so much time editing the code and making it publicly available. I would have a really hard time doing that, since my code is not written particularly well, and having other people constantly critique your code can be difficult to deal with too.
> 
> roud:


LOL- I'm running 4 of them! I never would have attempted to build any of them without AnotherHobby's original software work and excellent wiring documentation. I can't write software to save my life- LOL, but I plan to follow this project as it progresses and hopefully contribute a few more shield designs as significant changes are made.


----------



## kman

^^ Agreed 100%. AH, and others who have contributed (O2, etc), have really created something amazing here. 

Mine is not up and running just yet, but I'm about 95% there. I had to pack up all of my setup for the holidays, as I had been spread out all over the living room, but I want to pull it back out and get back to work on it soon.


----------



## jmh474

Well mine is all most there im just waiting for my screen as a company sent me the wrong one but should be up and running very soon

Sent from my GT-S5360 using Tapatalk 2


----------



## rottison

mine is 99% done now that the Christmas break is over I have some time to finish it but it is just doing some wiring and it is finished


----------



## Fernando Garcia

Hi!

I did a small video to show the performance after changes quoted previously.

https://www.youtube.com/watch?v=FzeUrFgjOgk

Best regards.


----------



## AnotherHobby

Fernando Garcia said:


> Hi!
> 
> I did a small video to show the performance after changes quoted previously.
> 
> https://www.youtube.com/watch?v=FzeUrFgjOgk
> 
> Best regards.


I really need to do this. I've been super busy with life and other stuff lately and haven't been on the forum much. Once I get some free time I'm going to do it.


----------



## mistergreen

You guys might want to put the code up on github. People can improve your code for you.


----------



## Fernando Garcia

mistergreen said:


> You guys might want to put the code up on github. People can improve your code for you.


Hi!

This is a good idea.

If you are using the Windows I can help you via Team Viewer.
Just PM me the ID and password.

Best regards.


----------



## MrMan

*screen dimming*

I have a hardware question that hopefully someone can answer. I'm doing my own shield with the tft shield parts included and i'm not sure how to connect the screen dimming circuit. I saw your pictures of how you modified your tft shield but was still a bit confused. Can you let me know if this is correct?


----------



## kman

Massive progress this weekend (finally!) on getting my iAqua up and running... but I also have yet to solve my issue with loading images. :/

On the progress front, I finally have my power supply, optical relay, screw terminal block and AC wiring and master power switch, all DONE! This temporary box may very well end up being permanent, considering how much work has gone into it, oy!










Oh, and I mounted the dosing pumps and I'm ready to add them as soon as the wiring is complete. I might throw down another coat of stain, but this piece of trim, used as a stain test left over from a cabinet I built a couple of years ago, is darned close as it is!










All that remains is building in some sort of mounting method to hold the actual Arduino and iAqua Sheild in place securely (they're going on their side, at an angle, in the open area to the right side of the enclosure), and cut the hole to mount the LCD into the lid. Very exciting to see everything powered up and working!

*Working kinda*, that is. My iAqua still won't load any graphics, leaving only text and the vector graphics on screen. I know it's working, because I can push the screen where buttons are supposed to be (from memory, back when it was still working correctly!) and screens change normally (settings screen, etc.).









(_This is an old picture showing the problem; the numbers are all correct now, it's just the graphics that won't load, giving this same basic screen_)

I've played with swapping two TFT screens, two different Arduinos, and I'm plugging the screen directly into the TFT Shield, so it's not a distance issue. I've tried 5 different SD cards, from various makers and in capacities ranging from 16mb to 2gb (16mb, 32mb, 256mb, 512mb, 2gb). And it _was_ working at one point, before it decided it was done loading graphics. I'm kind of at a loss at this point. Which is a tough point to be at a loss, so close to the finish line!

Anyone have any other ideas? :help:


----------



## AnotherHobby

If you want, you can PM me and I'll give you my address, and then you can spend $.49 to mail your SD card(s) to me and I can test it for you.


----------



## robsworld78

Hey kman, if AnotherHobby doesn't mind I will update the latest iAqua with the SD library so it won't matter what card is used? You'll be guaranteed to be up and going and fast!


----------



## kman

robsworld78 said:


> Hey kman, if AnotherHobby doesn't mind I will update the latest iAqua with the SD library so it won't matter what card is used? You'll be guaranteed to be up and going and fast!


Sure, that's definitely worth a try! Although, would this be a separate new branch from the "official" version, though? Is AH updating the official code to this library? I'd hate to forget and update from the official code and break things, LOL.


----------



## robsworld78

The changes are very simple, its about 4 or 5 lines of code, I'm sure once AH has time he will do it, I was just wanting to see you up and going.  I won't post nothing though unless AH says its ok.


----------



## robsworld78

AH, here's the steps to update it, just trying to make life easy for you. 

Remove reference to the tinyFat library, its not required.
Add the SDFat library, only need to include SDFat.h
Replace UTFT_tinyFAT library with Grahams UTFT_tinyFAT library
Add the following code where the other pinouts are defined. I personally have it set to SS for it to work but your code has 53 so either or should work.



Code:


const uint8_t chipSelect = 53;
SdFat sd;


Remove the following lines in the setup()



Code:


  // init SD card
  file.setSSpin(53);
  file.initFAT(SPISPEED_VERYHIGH);


Place this code where you removed the code above in the setup()



Code:


if (!sd.begin(53, SPI_FULL_SPEED)) sd.initErrorHalt();

That should do, any SD card should work using fat32.

The speed always bugged me when I was re-sizing it, using larger images slowed down even more. I and tried many things and looked around for a long time for something to improve speeds, most said it couldn't be done but I knew someone out there wasn't going to put up with that.  Finally I found someone at the arduino forum who had recently upgraded the library to accept fat32 format. He said the maker of the library had no interest in upgrading it so he figured he would do it himself. So we all owe him a big thank-you, if you are ever on the arduino forum his name is Graham and he's under ghlawrence2000, he's the reason for this. I'll be forever greatful.


----------



## rottison

cool is this what gives your sketch all that speed?


----------



## robsworld78

Mostly. :hihi:

But I also use a modified UTFT library which is also much quicker. This improves clearing the screen much faster, mine is almost instance. It's also much faster at drawing lines, filling rectangles, writing text, etc... and helps load images quicker as well. I was also able to optimize some code and used more draw lines which is way quicker than images.

I'm not sure if AH added the modified UTFT library to his downloads, I posted it back on this thread quite a while ago with a chart showing the differences in speed. Its definitely worth adding, on iAqua the biggest difference will be clearing the screen.


----------



## rottison

I have that file


----------



## kman

robsworld78 said:


> Hey kman, if AnotherHobby doesn't mind I will update the latest iAqua with the SD library so it won't matter what card is used? You'll be guaranteed to be up and going and fast!


I tried your code update (and the modification you PM'd me). No luck, I'm afraid.

I honestly don't think it's a software issue, or an SD card issue (although the base issue is indeed that the SD cards are not being read). This setup WAS working. Then it stopped. I've replaced the Arduino, I've replaced the LCD (with it's attached SD card holder), and I've gone through many different SD cards, in various capacities and from various manufacturers. I went from using an 18" IDE cable to plugging the screen directly into the TFT shield. I've swapped power supplies (currently I'm using a 1.5 amp 12V Netgear adapter, until I finish attaching the barrel connector to my main power supply)

Literally the only two components remaining, that have not been changed, are the TFT Shield (and I do have a second of those, that was messed up in my first attempt to relocate the touch pins, but which otherwise works fine, just no touch capability, and it doesn't display graphics either... anymore) and O2Surplus' shield. O2, is there any chance it's your shield? I have no idea how to troubleshoot that one, unfortunately.


----------



## robsworld78

Where is your card plug? Do you have a slot on the TFT shield? Try that if you do, there should be a small jumper on the tft shield to get the card working, it should be marked. What shield do you have?


----------



## kman

robsworld78 said:


> Where is your card plug? Do you have a slot on the TFT shield? Try that if you do, there should be a small jumper on the tft shield to get the card working, it should be marked. What shield do you have?


SD card plugs into the back of the LCD itself. The TFT Shield does not have an SD card reader. I have the ElecFreaks TFT Shield (2.0), same one AnotherHobby has. (See post 72)


----------



## robsworld78

Upload the example sketch called "SdInfo" under examples and SdFat. Try it with only the screen hooked up and open the serial window and see if it finds the card. You may need to change the pin number, it has some examples. Try SS, that's what I use.


----------



## jmh474

Wow been a little while since iv been on here, quite alot gone on here, i see some people have done some grate updates, how's it coming along with you AH you made any changes at all, hope its still running smoothly for you

Sent from my GT-S5360 using Tapatalk 2


----------



## kman

robsworld78 said:


> Upload the example sketch called "SdInfo" under examples and SdFat. Try it with only the screen hooked up and open the serial window and see if it finds the card. You may need to change the pin number, it has some examples. Try SS, that's what I use.


Thx. I will as soon as I get back home tonight.


----------



## O2surplus

kman said:


> O2, is there any chance it's your shield? I have no idea how to troubleshoot that one, unfortunately.



Try connecting the the TFT/LCD shield directly to the Mega. If your screen image loading problems disappear, then a loose pin connection at the iAqua shield was the likely culprit. If the problem continues to persist with the shield removed, the problem lies elsewhere.:confused1:


----------



## kman

O2surplus said:


> Try connecting the the TFT/LCD shield directly to the Mega. If your screen image loading problems disappear, then a loose pin connection at the iAqua shield was the likely culprit. If the problem continues to persist with the shield removed, the problem lies elsewhere.:confused1:


Interesting. With the LCD plugged into the TFT shield, plugged into the Mega, and nothing else, I have the same issue. (obviously no RTC so numbers on screen are way off, but still no graphics loading) I just tried two different LCD screens and two different TFT Shields.

The SD card is formatted FAT (not FAT32). This one is a 256mb (not gb) PNY SD card. The only thing on it is 154 "raw" files from the iAqua "SD Card Images" folder, all loose at the root level.


----------



## mistergreen

Can your computer see the sd Card? I accidentally corrupted my card and had to reformat. 


Sent from my iPad using Tapatalk HD


----------



## kman

mistergreen said:


> Can your computer see the sd Card? I accidentally corrupted my card and had to reformat.


Yup. Card works fine on multiple computers.


----------



## kman

robsworld78 said:


> AH, here's the steps to update it, just trying to make life easy for you.
> 
> Remove reference to the tinyFat library, its not required.
> Add the SDFat library, only need to include SDFat.h
> Replace UTFT_tinyFAT library with Grahams UTFT_tinyFAT library
> Add the following code where the other pinouts are defined. I personally have it set to SS for it to work but your code has 53 so either or should work.
> 
> 
> 
> Code:
> 
> 
> const uint8_t chipSelect = 53;
> SdFat sd;
> 
> 
> Remove the following lines in the setup(), nothing needs to go there.
> 
> 
> 
> Code:
> 
> 
> // init SD card
> file.setSSpin(53);
> file.initFAT(SPISPEED_VERYHIGH);
> 
> That should do, any SD card should work using fat32.
> 
> The speed always bugged me when I was re-sizing it, using larger images slowed down even more. I and tried many things and looked around for a long time for something to improve speeds, most said it couldn't be done but I knew someone out there wasn't going to put up with that.  Finally I found someone at the arduino forum who had recently upgraded the library to accept fat32 format. He said the maker of the library had no interest in upgrading it so he figured he would do it himself. So we all owe him a big thank-you, if you are ever on the arduino forum his name is Graham and he's under ghlawrence2000, he's the reason for this. I'll be forever greatful.





robsworld78 said:


> Upload the example sketch called "SdInfo" under examples and SdFat. Try it with only the screen hooked up and open the serial window and see if it finds the card. You may need to change the pin number, it has some examples. Try SS, that's what I use.


I think the issue is with my TFT Shield(s?). I have two, as I mentioned, my main board, with the modifications to relocate the touch interface pins, and another board that I messed up on while relocating the pins... but it was still working, other than the touch interface. At least one has an issue, I think. But odd that neither would work. Originally, the "main" board worked 100%, while the old mistake board worked except no touch interface since the pins were never rerouted.

So I tried the SdInfo sketch with my main TFT shield, and it wouldn't find the SD card. I tried both 53 and SS for the address location. Should I try other values? The example code lists 4, 8, 10, and "SS", so where does 53 come from? None of these worked, however, with the main shield. For all of those values with that main TFT Shields, I'm getting:



Code:


card.init failed
SD errorCode: 0X1
SD errorData: 0X0

BUT then I switched to a different Arduino, different LCD and my alternate (old, damaged) TFT Shield, and tried the SdInfo sketch again, and this time I got:



Code:


SdFat version: 20140806

type any character to start

init time: 643 ms

Card type: SD1

Manufacturer ID: 0X2
OEM ID: TM
Product: SD016
Version: 0.5
Serial number: 0X672B2234
Manufacturing date: 8/2003

cardSize: 14.91 MB (MB = 1,000,000 bytes)
flashEraseSize: 32 blocks
eraseSingleBlock: true

SD Partition Table
part,boot,type,start,length
1,0X0,0X1,57,29063
2,0X0,0X0,0,0
3,0X0,0X0,0,0
4,0X0,0X0,0,0

vol.init failed

So I still have that "init failed" but it at least it acknowledged there was a card there.

However, taking that same stack and card, and reloading the (modified) iAqua code, still no graphics. Both with just the small stack (Mega, TFT Shield, LCD), and the full collection with O2's shield, same thing I've had all along. (except no RTC errors when O2'shield is connected)

I've ordered a third (!) TFT Shield, but it's going to take a few weeks to get there from China. I wish there was a local source for these, as I'd gladly pay a few more bucks to get it faster!


----------



## robsworld78

Damm, you're getting closer I don't think its hardware. At one point I was having trouble getting the SD library working and it did the same thing to me, read the card and said vol.init failed at the end. I can't think of what I did to fix that though. Download SDFormatter and use it to reformat your SD card. Windows does a horrible job at formatting and its highly recommended for many reasons to use something else, its a long shot but...

When you had it reading the card what pin # did you use? If you change the pin # does it still read the card and give the error?

EDIT: I remember why my card quit working, I had a really small piece of solder that could barely be seen sitting on one of the IC's, I removed it and it started working. Check to make sure no solder splatted when you did this.


----------



## kman

Pin 53 was what worked.

I pulled down SDFormatter and reformatted all 4 cards (I can't seem to find my 5th card, the 512mb one), and re-copied all of the .raw files back on.

Interesting, though: Confirmed, same result every time with the "main" TFT Shield. All utter failures. I believe that shield is fairly useless at this point. I'm glad I ordered a new one.

With the non-pin-altered shield, two of the cards worked (the 2gb and 256mb) and two did not (the 16mb and 32mb):



Code:


SdFat version: 20140806

type any character to start

init time: 673 ms

Card type: SD2

Manufacturer ID: 0X3
OEM ID: SD
Product: SD02G
Version: 8.0
Serial number: 0XE1DFE650
Manufacturing date: 11/2007

cardSize: 2032.66 MB (MB = 1,000,000 bytes)
flashEraseSize: 32 blocks
eraseSingleBlock: true

SD Partition Table
part,boot,type,start,length
1,0X0,0X6,249,3969799
2,0X0,0X0,0,0
3,0X0,0X0,0,0
4,0X0,0X0,0,0

Volume is FAT16
blocksPerCluster: 64
clusterCount: 62020
freeClusters: 61866
freeSpace: 2027.23 MB (MB = 1,000,000 bytes)
fatStartBlock: 250
fatCount: 2
blocksPerFat: 243
rootDirStart: 736
dataStartBlock: 768

Similar result withe 256mb card (different in capacity reading, otherwise pretty much the same thing as above). BUT, taking this TFT shield, LCD and card combo, still no luck with loading graphics.


----------



## freskhu

great project !!!
you think it's possible to add algue control? 
like this with electrolysis, http://www.twinstarnano.com/lang_en/whytwinstar/whytwinstar_1.html


----------



## mistergreen

I'm not sure of the hardware setup for this. Is this sd card reader part of the shield?
If it's separate, connect straight to the arduino without the shield. This should tell you if it's the sd card/reader or the shield.

Run a simple test 
http://arduino.cc/en/Tutorial/ReadWrite

general notes on sd card for the arduino.
http://arduino.cc/en/Reference/SDCardNotes


----------



## kman

mistergreen said:


> I'm not sure of the hardware setup for this. Is this sd card reader part of the shield?
> If it's separate, connect straight to the arduino without the shield. This should tell you if it's the sd card/reader or the shield.
> 
> Run a simple test
> http://arduino.cc/en/Tutorial/ReadWrite
> 
> general notes on sd card for the arduino.
> http://arduino.cc/en/Reference/SDCardNotes


Assuming this was intended for me, the SD card reader is on the back of the LCD, so the TFT Shield is unfortunately necessary to get everything plugged in. I'll give it a go when I get home tonight. Meanwhile, I've ordered more TFT Shields.

It's the same 3.2" LCD that AnotherHobby used on his: http://www.dx.com/p/arduino-compatible-3-2-tft-lcd-touch-sensor-screen-module-145725#.VLawqy5xJ4Q (except we both ordered ours from EvilBay item 271201097446 instead of DX.com)


----------



## robsworld78

Good news and bad news.

Bad news you already ordered that tft shield.

Good news you're in business, I feel confident. 

Your card is working properly, so I decided I would load the iAqua sketch on my unit and see what happens, no images. So I look over the code and I'm sorry to say I forgot a very important line.

Place this code in the setup() say about line 479 and it will work. 



Code:


  if (!sd.begin(53, SPI_FULL_SPEED)) sd.initErrorHalt();


----------



## kman

robsworld78 said:


> Good news and bad news.
> 
> Bad news you already ordered that tft shield.
> 
> Good news you're in business, I feel confident.
> 
> Your card is working properly, so I decided I would load the iAqua sketch on my unit and see what happens, no images. So I look over the code and I'm sorry to say I forgot a very important line.
> 
> Place this code in the setup() say about line 479 and it will work.
> 
> 
> 
> Code:
> 
> 
> if (!sd.begin(53, SPI_FULL_SPEED)) sd.initErrorHalt();


Fingers crossed! 

I'll try it out tonight.

Although I likely need that shield anyway, given that the test sketches seemed to show my "main" TFT shield (the only one altered to move the touch pins per AH's design) isn't working properly, and the other one can't be modified correctly due to my initial ham-fisted attempt at PCB soldering.

Plus, I can neither confirm nor denying that messing around in the dark while drinking beer and watching TV may lead to improperly plugged shields, a burning smell, and a fried Mega. :iamwithst Good thing I have a spare!


----------



## mistergreen

Ah, you guys need version control for all of this. It'll get confusing quick for new comers. Github this thing.


----------



## robsworld78

Yes messing around in the dark can lead to unwanted results. :hihi:

The newest version is 1.0.4, the one posted on the main page, which works fine I'm sure. This was to help kman get going. If AH adds it to his sketch I'm sure he'll put the new version on the main page.


----------



## jmh474

Where is AH not heard from him for a little while

Sent from my GT-S5360 using Tapatalk 2


----------



## kman

jmh474 said:


> Where is AH not heard from him for a little while


I think he posted something about a vacation, but I'm not sure if it's still ongoing or he's just taking a forum break, tired of being pestered all the time as a thanks for his amazing work.


----------



## jmh474

Very true he has put alot of work into it we should all chip in for a holiday for him lol

Sent from my GT-S5360 using Tapatalk 2


----------



## kman

robsworld78 said:


> Good news and bad news.
> 
> Bad news you already ordered that tft shield.
> 
> Good news you're in business, I feel confident.
> 
> Your card is working properly, so I decided I would load the iAqua sketch on my unit and see what happens, no images. So I look over the code and I'm sorry to say I forgot a very important line.
> 
> Place this code in the setup() say about line 479 and it will work.
> 
> 
> 
> Code:
> 
> 
> if (!sd.begin(53, SPI_FULL_SPEED)) sd.initErrorHalt();


ROB!!! You are the MAN! This fixed my controller. And best of all, you were also right that the TFT Shield I thought was dead, is actually working just fine! I dunno why the example sketches were unhappy reading from the card with this Shield in play, but who cares, because iAqua is working 100% now that I added that line. YESSSSS!!!

I think this is the very first time my iAqua has been 100% functional.  That is, aside from wiring issues that have now taken a huge leap up on the priority list! Gotta get those dosing pumps wired up, and figure out the signal wire pathways in and out of the enclosure! Oh, and next up, gotta test to make sure everything still works with a ribbon cable connecting the LCD, instead of the direct connection it's enjoying now. Hope that's not going to be a monkey in the wrench!










And of course, now I need to actually nail down a working schedule, which is something I really haven't been able to play with thus far. (the iAqua scheduling capabilities far exceed my Arduino Sat+ controller)

And so, a few questions for AH, or anyone who actually has an iAqua that's up and controlling their tank:

Power scheduling: The "Circ pump" is a skimmer or powerhead, NOT the canister filter, right? (I assume the canister filter is always on, aside from manual shutdown and feeding cycles?)

Heater settings: Off at 82 degrees (_Any hotter than that, cut the power! Makes sense._), On at 76 degrees (_But... does this mean heater shuts off if tank temp drops below 76? I feel like I'm missing something on this one?_) Low temp warning at 72 degrees. (_Yes, makes sense_) These are the same settings in AH had in his first batch of screenshots, way back in post #1. He wrote "_The *HEATER* screen lets has an OFF setting to set temp threshold where it will shut down your heater power. This will protect you if it malfunctions. The ON setting is when it will turn the heater back on if the temp drops to a certain level. The LOW WARN will sound an alert if you get down to that temp. This would likely mean your heater broke._" Problem is, right now, ambient temps in the air around my controller are 66 degrees, per the sensor, and yet I have no low temp warning. What's the warning? I thought it turns red or something?










LIGHT MODES:

I copied, I believe, AH's light settings, which he had referenced in the iAqua Lite thread. Do I need to program the M1/M2 memory positions, or any others, with these numbers or are the canned "modes" redundant with the iAqua? He wrote:



AnotherHobby said:


> Here are the memory settings on my CSP:
> 
> Daylight: R=42, G=0, B=0, W=42
> M2: R=42, G=8, B=00, W=3
> M1: R=28, G=12, B=02, W=0
> Moon: R=2, G=1, B=01, W=0
> 
> Once you actually have all 16 values figured out, then editing the code is easy. Simply replace the IR codes in this sketch with the codes from the CSP, and it should work the same (except "Daylight" and "Moon" will be M3 and M4 for the CSP).


So those figures are what I programmed in for Full sun, Mid sun, Low sun, and Moonlight modes, on that settings screen. Am I good to go with that? (as a starting point, at least)

SCHEDULE:

And last, my power and lighting schedule settings. If someone can check my logic here, I'd be very grateful. 

POWER SCHEDULE:
Light 1 & 2: On at 16:40 (4:40pm), off at 1:01am. (~7 hr light cycle and 1 hr moon)
Circ pump (skimmer, right?) On at 19:00 (7pm), off at 21:00 (9pm). (2 hour run just to clear the surface scum)
CO2: On at 16:45 (4:45pm, should be 15 min before lights really start to come up), off at 23:50 (11:50pm, 10 min before lights out / moonlight period)

_(ignore the error in light #2's start time, I fixed that)_









LIGHT RAMP SCHEDULE:
(items in italics reference power events from above)

(_4:45pm - co2 powers on_)
(_4:40pm, lights power on, should still be in moon mode from previous night_)
4:45 pm > Begin 15 min ramp - Moon to low sun
5:00 pm Begin 1 hr ramp - Low sun to mid sun
6:00 pm Begin 1 hr ramp - Mid-sun to full sun
7:00 pm - 9:00 pm Full sun
9:00 pm Begin 1 hr ramp down - Full sun to mid sun
10:00 pm Begin 1 hr ramp down - Mid sun to low sun
11:00 pm - 11:40 pm Low sun
11:40 Begin 20 min ramp down - Low sun to moon lights
(_11:50pm - co2 powers off_)
12:00 am - 1:00 am Moon lights
(_1:01 am lights power off_)










Does my logic check out?

(Note: I only run a 7 hour light schedule, which seems low, except because there is ambient light in the room throughout the day while I'm at work and the lights are off, I needed to reduce the light period to avoid algae. This works for me... finally!)


----------



## robsworld78

lol, right on, glad its working! Don't assume hardware is dead unless you smell smoke or see sparks. 



> Power scheduling: The "Circ pump" is a skimmer or powerhead, NOT the canister filter, right? (I assume the canister filter is always on, aside from manual shutdown and feeding cycles?)


That's right, its not the canister filter, its meant for a powerhead although it can be anything. You just have to make sure the relays are set to the software as in if you turn power off to canister it turns off.



> Heater settings: Off at 82 degrees (Any hotter than that, cut the power! Makes sense.), On at 76 degrees (But... does this mean heater shuts off if tank temp drops below 76? I feel like I'm missing something on this one?)


The heater will turn off at the off setting and won't turn back on till it hits the low setting. So if low setting is 76 and the relay was off because it went over 82 it won't power up the heater again until it hits 76 as its not required. The warning only works for high setting, it will turn red if you go over 82. It stays red until you push the screen I think.

Your power schedule looks ok, the relays will be on only during those time periods.

Your light schedule has a problem though. If you plan for 1 hour moonlight you have to change it. As it is you have moonlight from 12am till 4:45pm as thats the moon cycle. If you want a dark cycle that should be it. So you will need to set the 5th ramp for an hour for moonlight and then the moonlight will be dark period. In your light settings make sure the moon schedule is set to dark and the low sun is set to your moonlight. Hope that makes sense.


----------



## freskhu

hi there!
I am building one!
I got a mega and a lcd 2.8, can i use 2.8 lcd?
Btw, can you update with the last files, or put it on github or something like that! with so many tweeks and changes i dont know what to download ^^
Other question, my lights are beamswork, can i use the ramp? 
thank you

I will be making a 3D model for the box! just need to put my printer to work!


----------



## scaLLas

So will you have a moonlight from 12am (midnight) to the 16:45 in the afternoon? Or until 4:45am in the morning?


Sent from my iPhone using Tapatalk


----------



## sushant

scaLLas said:


> So will you have a moonlight from 12am (midnight) to the 16:45 in the afternoon? Or until 4:45am in the morning?
> 
> 
> Sent from my iPhone using Tapatalk


I guess it will start at 12 AM and will last till the light switches off at 1.xx AM


----------



## fietsenrex

finaly got all the goods in.. I will start the build this week 

I'll keep you guys posted


----------



## kman

freskhu said:


> hi there!
> I am building one!
> I got a mega and a lcd 2.8, can i use 2.8 lcd?
> Btw, can you update with the last files, or put it on github or something like that! with so many tweeks and changes i dont know what to download ^^
> Other question, my lights are beamswork, can i use the ramp?
> thank you
> 
> I will be making a 3D model for the box! just need to put my printer to work!


You'll need a 3.2" LCD with the correct resolution, or the graphics will look terrible.

The most current version, 1.0.4, is fully up-to-date on the first page, in the first post. The tweaks by Roy, above, were only needed by me. They may or may not be incorporated by AH into a new master version when he returns, but they're not needed by most people (apparently I'm special).

Bump:


robsworld78 said:


> Your light schedule has a problem though. If you plan for 1 hour moonlight you have to change it. As it is you have moonlight from 12am till 4:45pm as thats the moon cycle. If you want a dark cycle that should be it. So you will need to set the 5th ramp for an hour for moonlight and then the moonlight will be dark period. In your light settings make sure the moon schedule is set to dark and the low sun is set to your moonlight. Hope that makes sense.


As I understand it, the lights may be in moonlight mode from 12:am to 4:45am, but the POWER schedule for the lights cuts them out at 1:01am, so in reality, they're only in moonlight mode for about an hour, until the power kicks back in at 4:45pm.

The final ramp just starts the shift to moonlight mode at 11:40, taking 20 minutes to fade to full moonlight mode starting right at midnight.

That was the intent, at least.


----------



## kman

scaLLas said:


> So will you have a moonlight from 12am (midnight) to the 16:45 in the afternoon? Or until 4:45am in the morning?





sushant said:


> I guess it will start at 12 AM and will last till the light switches off at 1.xx AM


Sushant is correct. The lights _should_ be in moonlight mode starting at midnight, until the power schedule cuts the light power at 1:01am. Then they stay powered off until the power schedule brings them back on at 4:40pm (16:40). At that point, they spend 5 more minutes in moonlight mode (the mode they were in when the power turned off) until the first ramp starts up at 4:45pm fading the moonlight mode into the low sun mode, so actual light mode starts at 5pm.

I run my lights exclusively in the evenings, while I'm home to enjoy them, otherwise I'd always be looking at a dark tank except on weekends when I don't have work.


----------



## robsworld78

oops forgot the power cuts out a 1am. :hihi:


----------



## kman

robsworld78 said:


> oops forgot the power cuts out a 1am. :hihi:


Oh, phew! I thought I was missing something.  All seems well, then?

Perhaps, except for this: Now that it's all up and running, of course, things should be happening all automatically. I left it running since last night. But it doesn't look right:

First, I went and stood over it at 9:45am when the dosing pumps were supposed to go off (well, Micros, at least, since it's Thursday), and they never went off. (Note still 6 doses per chamber, in the graphic) I tested the pumps with the test function, and they are connected properly. (they fire when manually triggered with the test button)

Further, at around 10:24am, shouldn't the power to the circ pump and co2 be OFF? In this home screen images, they appear to be on. (or at least they're not dimmed out like the other ones that are off are dimmed, like the two lights, Aux 1 and Aux 2):


----------



## robsworld78

hmm, something does appear to be wrong, at 10:24am the co2 and circ should be off according to your schedule image. The lights are off so its reading that schedule. I've never used iAqua as is, so all I can suggest is trying different settings to see whats going on. Try not overlapping the schedules into the next day as in 1am. Then play with the RTC clock and change the time so its just before the alarm should trigger and see what happens.

For the alarm not going off all I can think of is you didn't use the TimeAlarms library from the download package. Go into your TimeAlarms library folder, open TimeAlarms.h in wordpad.

On the 7th line or so there will be this



Code:


#define dtNBR_ALARMS 30

What number is beside it? It should be 30 or higher. That's how many alarms are in the program so if that setting is lower some won't work. This had me going in loops for a while as I added more alarms.


----------



## kman

robsworld78 said:


> hmm, something does appear to be wrong, at 10:24am the co2 and circ should be off according to your schedule image. The lights are off so its reading that schedule. I've never used iAqua as is, so all I can suggest is trying different settings to see whats going on. Try not overlapping the schedules into the next day as in 1am. Then play with the RTC clock and change the time so its just before the alarm should trigger and see what happens.
> 
> For the alarm not going off all I can think of is you didn't use the TimeAlarms library from the download package. Go into your TimeAlarms library folder, open TimeAlarms.h in wordpad.
> 
> On the 7th line or so there will be this
> 
> 
> 
> Code:
> 
> 
> #define dtNBR_ALARMS 30
> 
> What number is beside it? It should be 30 or higher. That's how many alarms are in the program so if that setting is lower some won't work. This had me going in loops for a while as I added more alarms.


I'll check the code when I get home, but all this stuff is stock from AH's file packages in post #1, so there shouldn't be any library issues, I don't think. I'll confirm later, though. It's possible my TimeAlarms library came in with my Arduino Sat+ Controller (standalone) instead of AH's zip file. I wouldn't think that would be an issue but I'll doublecheck tonight.


----------



## rottison

I am finally caught up at work so now I can get back to finishing this controller so I can clear my bench for your Rob


----------



## kman

robsworld78 said:


> hmm, something does appear to be wrong, at 10:24am the co2 and circ should be off according to your schedule image. The lights are off so its reading that schedule. I've never used iAqua as is, so all I can suggest is trying different settings to see whats going on. Try not overlapping the schedules into the next day as in 1am. Then play with the RTC clock and change the time so its just before the alarm should trigger and see what happens.
> 
> For the alarm not going off all I can think of is you didn't use the TimeAlarms library from the download package. Go into your TimeAlarms library folder, open TimeAlarms.h in wordpad.
> 
> On the 7th line or so there will be this
> 
> 
> 
> Code:
> 
> 
> #define dtNBR_ALARMS 30
> 
> What number is beside it? It should be 30 or higher. That's how many alarms are in the program so if that setting is lower some won't work. This had me going in loops for a while as I added more alarms.


Excellent call. Mine read 6, so it must have been a carry over from the Sat+ controller I use. I changed it to 30 and re-uploaded the code, so we'll see if that does it!


----------



## robsworld78

Nice, I was hoping it wasn't 30. That was the reason for all your problems. That's the downside to that library you need to change that for different projects. Every increment takes memory so its usually set to the minimum. Should be smooth sailin from here.


----------



## kman

So... MOSTLY smooth sailing.

Everything _appears_ to be working correctly, but appearances can be deceiving.

The good news is all software appears to be functioning as intended, now. The timers are timing, the feeding mode is working, the lights are cross-fading according to schedule (I assume, since the actual lights are in the other room on my tank, but the indicators all appear normal... I'll have to get an actual light at some point and test the light controls for real), and the dosing pumps are calibrated and running according to schedule (confirmed with actual glasses of water). YAY!

But now the odd part. Apparently my relay control is not controlling. The on-screen indicators all change as expected. The little red LED by each of the 8 channels changes brightness right on cue, as power schedules change, or when manually triggered. EXCEPT, it turns out, no matter what, ALL of the outlets are hot. I plugged in a little LED light just as a test, and was pleased when I plugged it into the filter outlet and heater outlet (which are of course always on, as a general rule), and it turned on. Perfect! But then I plugged it into the Light 1 outlet (which is off per schedule and per on-screen indicators, at this time of day) ... and it was STILL on.

I tested each outlet. All 8 outlets are hot and functioning... no matter which power setting the outlet had, per the power control screen. Again, the red LEDs by each of the 8 relays change from bright to dim, but the power state never actually changes.

Did I wire something up wrong, or is the relay not working?

This is the wiring scheme I followed when setting this up:









And here is a photo, if it helps:









The common (white) wire goes to each outlet continuously, and the hot (black) wires each run through the relay before going to the outlets.

The relay wiring is correct, right? I believe one side (of the three) for each one is always on, and the other is always off. Even if I got it backwards, though, when I change states (indicated by the LED), is SHOULD change states, though, right? And yet no matter what, it's hot. Should the LEDs on the relay be toggling on and OFF? Mine only seem to change from full on to dimmer when changing states. Maybe the relay is fried, somehow?


----------



## mistergreen

I'm assuming you grounded the relay/board?


----------



## kman

mistergreen said:


> I'm assuming you grounded the relay/board?


Umm... no? I didn't see anything obviously labeled ground, except maybe that jumper in the corner (which is a jumper, not a grounding attachment point).

Trivial to do, of course. Are the mounting screws in the 4 corners all grounding points or did I miss something? Easy to run a grounding wire to one of those, if so.

While a grounds are a very good thing as a general rule, I don't see how a ground wire would stop DC-controlled relays from opening and closing, though.

Actually, the left-most post is labeled GND but that's the DC ground that connects to the Arduino (or my iAqua shield, actually).










The jumper in the lower right appears to be labeled "GND VCC JD-VCC" ... or is that the screw post that's being labeled?


----------



## jmh474

Are the relay states changing from the arduino and are you feeding the right voltage to the relay board

Sent from my GT-S5360 using Tapatalk 2


----------



## kman

jmh474 said:


> Are the relay states changing from the arduino and are you feeding the right voltage to the relay board


I'm running O2Surplus' iAqua Shield, which I assume is delivering the correct 12v signal, since he and a few others are using the boards successfully. When you change states using the iAqua TFT interface, the relay DOES respond, by changing the LED by the corresponding relay from "bright on" to "dim on". The lights never go off, but they do change when I press buttons on the iAqua.


----------



## jmh474

Could the trigger level need changing on the relay board

Sent from my GT-S5360 using Tapatalk 2


----------



## mistergreen

There's no support for this thing but after digging around on amazon



> Power Supply: 5V DC / 400mA (relay all ON)
> Input control signal voltage:
> 0V - 0.5V Low stage (relay is ON)
> 2.5V -5V High state (relay is OFF).
> Input control signal LOW state current:
> 2.5V: 0.1mA.
> 3.3V: 0.18mA.
> 5V: 0.35mA.
> JD-VCC or VCC: Power supply input, 5V DC. (JD-VCC RELAY POWER VCC:SYSTEM VCC)
> GND: Power supply ground and control signal ground.
> CH_x: Control signal input, Low: relay ON, High: relay OFF.
> COM / NO / NC: (C1=COM1, C2=COM2)
> Control signal state low, the relay ON, COM - NO disconnected, COM - NC connected.
> Control signal stage high, the relay OFF, COM - NO connected, COM - NC disconnected


It's needs to be grounded to the arduino (all devices controlled by the Arduino), and to the power supply.


----------



## kman

mistergreen said:


> There's no support for this thing but after digging around on amazon
> 
> 
> 
> It's needs to be grounded to the arduino (all devices controlled by the Arduino), and to the power supply.


Is a 5V optical relay? AH specified the 12v version for this project.

Where would a grounding wire to the relay board connect? And you're talking about the AC ground, right? (Arduino does not usually have a true ground, since it's fed DC power via only two wires.)

Here is the board I purchased: http://www.dx.com/p/8-channel-5v-solid-state-relay-module-board-red-blue-121337#.VLrmRHa-0os Not much there in the way of specs, though. :/

I didn't see any ground hooked up on AH's build (with the same board), although it's not easy to tell from all the photos.


----------



## O2surplus

kman said:


> I'm running O2Surplus' iAqua Shield, which I assume is delivering the correct 12v signal, since he and a few others are using the boards successfully. When you change states using the iAqua TFT interface, the relay DOES respond, by changing the LED by the corresponding relay from "bright on" to "dim on". The lights never go off, but they do change when I press buttons on the iAqua.


The power indicator led for each relay should only be "off or on". There's no in between state. I had a similar problem with my relay block, but I managed to fix it. My testing indicated that the relay coils where not receiving enough current to pull the contacts completely open or closed. The problem turned out to be related to the value of the resistors used to bias the transistors on the PcB that ultimately control the relay coils. The resistors used, have too high a value and don't let enough current pass to fully saturate the relay coil. You'll have to poke around with a multimeter a bit to see what's going wrong. Here's a clue- each relay coil needs at least 9V to operate correctly. Any less than that and they'll act squirrelly(sp) 
Let me know what voltages you find and I'll help you sort it out from there. Worst case scenario- I'll send you one of my spares to use, as I've already modded mine to avoid this problem.:hihi:


----------



## mistergreen

Oh, so how is the arduino hooked up to this since it requires 12VDC?

I don't know how this board is set up but generally a relay is a circuit that is broken or connect when the switch is energized or de-energized (by the arduino). That switch needs to be a circuit with the arduino, 5VDC & ground. No circuit otherwise.

And the hot and common of the 120VAC needs to go through the relay to create a circuit as well.

I think this image shows it well


----------



## kman

O2surplus said:


> The power indicator led for each relay should only be "off or on". There's no in between state. I had a similar problem with my relay block, but I managed to fix it. My testing indicated that the relay coils where not receiving enough current to pull the contacts completely open or closed. The problem turned out to be related to the value of the resistors used to bias the transistors on the PcB that ultimately control the relay coils. The resistors used, have too high a value and don't let enough current pass to fully saturate the relay coil. You'll have to poke around with a multimeter a bit to see what's going wrong. Here's a clue- each relay coil needs at least 9V to operate correctly. Any less than that and they'll act squirrelly(sp)
> Let me know what voltages you find and I'll help you sort it out from there. Worst case scenario- I'll send you one of my spares to use, as I've already modded mine to avoid this problem.:hihi:


Ugh. I wonder if I should by a different relay board, the one AH used (as opposed to the one he said should work). Which one did you use? (or were yours sourced from somewhere entirely different)?

AH used this one: 
http://www.dx.com/p/8-channel-12v-r...pler-for-arduino-red-blue-234197#.VLrmPna-0os

He recommended I use this one (since his was out of stock): 
http://www.dx.com/p/8-channel-5v-solid-state-relay-module-board-red-blue-121337#.VLrmRHa-0os

The main difference (we thought) is screw terminal inputs on the Arduino side on his, vs. header pins on mine.

I'm happy to poke around with a multimeter, but I'm not sure what I'm looking for, as in, which points do I test to see if 9V is making it through? (also, I really really hope the points are on the top of the PCB, because mine is screwed in/mounted inside my enclosure, and I'd have to completely tear it out to access the bottom!) One thing I've noticed for sure about mine, is it gets warm. You can definitely feel heat coming off of it. Not burning hot heat, but still noticeably warm.

Bump:


mistergreen said:


> Oh, so how is the arduino hooked up to this since it requires 12VDC?
> 
> I don't know how this board is set up but generally a relay is a circuit that is broken or connect when the switch is energized or de-energized (by the arduino). That switch needs to be a circuit with the arduino, 5VDC & ground. No circuit otherwise.
> 
> And the hot and common of the 120VAC needs to go through the relay to create a circuit as well.
> 
> I think this image shows it well


The 12V is supplied by power regulators on O2's Shield. The entire setup is fed 12V (actually, his board can handle anything from 9V to 24V if memory serves, but the power supply I'm using puts out a good steady 12V so no issue there) into his board, and the on-board power regulators distribute the voltage needed, including 12V to the relay board, and 5V to the Arduino itself.


----------



## O2surplus

The Arduino only provides a 5V High/Low signal to the optocoupler on the Relay PcB. The Optocoupler then directs transistors to switch 12V on/off through the relay coils. My shield included a 12V regulator to provide power/ground for the relay PcB and the dosing pumps. The 12V regulator is rated for 1.5 amps. Depending on the size and length of your 12V wiring runs, it may be a voltage drop that's causing the problem. There's a "work around" for this though- If you happen to have an old 12V Walwart or other small power supply laying around the house, try using that to provide power to the relay PcB. Just be sure to keep the ground wire between the relay PcB and the iAqua shield intact. The 5V signal from the Mega will need that ground wire to complete the relay control circuit.

Wait..... You're using 12V to power the iAqua shield already? The 12V regulator on the iAqua shield needs at least 13.5V to operate correctly. Try bypassing the on board 12V regulator by powering the relay PcB directly from your 12V power supply. See if that cures the problem?


----------



## mistergreen

I see. The arduino can take 12V.

Hmmm. you might have to right with the ground on the outlets. No need for it going into the relay.


----------



## kman

O2surplus said:


> The Arduino only provides a 5V High/Low signal to the optocoupler on the Relay PcB. The Optocoupler then directs transistors to switch 12V on/off through the relay coils. My shield included a 12V regulator to provide power/ground for the relay PcB and the dosing pumps. The 12V regulator is rated for 1.5 amps. Depending on the size and length of your 12V wiring runs, it may be a voltage drop that's causing the problem. There's a "work around" for this though- If you happen to have an old 12V Walwart or other small power supply laying around the house, try using that to provide power to the relay PcB. Just be sure to keep the ground wire between the relay PcB and the iAqua shield intact. The 5V signal from the Mega will need that ground wire to complete the relay control circuit.
> 
> Wait..... You're using 12V to power the iAqua shield already? The 12V regulator on the iAqua shield needs at least 13.5V to operate correctly. Try bypassing the on board 12V regulator by powering the relay PcB directly from your 12V power supply. See if that cures the problem?


Crud. Yes, I'm using an N2Power power supply to supply 12V to the whole shebang. The outputs, according to my test just now, put out a rock-solid 12.1 volts. The iAqua shield needing 13.5V is news to me. 

Still, the power supply has PLENTY of juice. Not a problem to pull another line off another rail to supply +12V directly to the relay board. It has 3 12V rails (actually, there is a 4th on another jumper) and I'm only using one of them right now. 13.3amp total capacity, so more than enough juice.

See: http://www.n2power.com/n2p-prod-specs/XL160_prodspec.pdf

I'm running the XL160-12 CS (actually the older model, an XL160-3 but they just changed the name, same specs), specs are on page 29 of that, listed as XL160-XX (CS).

Bump:


mistergreen said:


> I see. The arduino can take 12V.
> 
> This is my guess. Have O2 confirm since he's the hardware guy. Oops- and the middle jack goes to your outlet.
> View attachment 416850


The Arduino can take 12V but the onboard regulator gets hot with more 9V. Better to feed the Arduino a pure 5V line, which is what O2's board does. The voltage regulator on his board is a lot better than the one on the Arduino.

I don't believe you have that wired correctly. That would short circuit the AC every time the relay closed. The relay is simply used to open and close the hot circuit's line. My wiring diagram (posted a few posts back) passed muster at the time I originally posted it, a few weeks ago. I believe you have a choice of which two of the three inputs to use on each relay. The middle one is always used. The left one is always off (unless power applied) and the right one is always on (unless power applied). I wired mine the same way AH did, in his photos, when he was designing this. See: http://www.plantedtank.net/forums/showpost.php?p=6355257&postcount=44


----------



## O2surplus

mistergreen said:


> I see. The arduino can take 12V.
> 
> This is my guess. Have O2 confirm since he's the hardware guy. Oops- and the middle jack goes to your outlet.
> View attachment 416850


Close! But the 10 pin header on the Relay PcB should be wired like this-

Pin 1= 12V+
Pin 2= Ground (shared with the Arduino through the iAua shield)
Pin 3= Relay#1 (Light1)
Pin 4= Relay#2 (Light2)
Pin 5= Relay#3 (Filter)
Pin 6= Relay#4 (Circulation)
Pin 7= Relay#5 (Heater)
Pin 8= Relay#6 (CO2)
Pin 9= Relay#7 (Aux)
Pin10= Relay#8 (Aux)

On the A/C of the relays- the Black "Hot" lead input is connected to the "COMM" screw header at each relay. The "NO" screw header of each relay is then connected to the "Hot" terminal of each power outlet.


----------



## mistergreen

I see. When I run into confusion, I pull out the volt meter and test the connections. That usually helps. Unplug from the wall for safety


----------



## SwampGremlin

I'll start working on a robot that will change out our bulbs if they burn out while we are on vacation cause that's we we will need next


----------



## robsworld78

These things don't play nice sometimes that's all I know, I can't add anything as I'm using the 5v boards, good luck though.


----------



## O2surplus

kman said:


> The iAqua shield needing 13.5V is news to me.
> 
> http://www.plantedtank.net/forums/showpost.php?p=6355257&postcount=44


That's really not a problem, since you already have a nice big 12V supply. A little creative wiring is all that's needed, and you've already done that. The 5V regulator on the iAqua shield will still work correctly, so that won't be an issue either.


----------



## kman

O2surplus said:


> The Arduino only provides a 5V High/Low signal to the optocoupler on the Relay PcB. The Optocoupler then directs transistors to switch 12V on/off through the relay coils. My shield included a 12V regulator to provide power/ground for the relay PcB and the dosing pumps. The 12V regulator is rated for 1.5 amps. Depending on the size and length of your 12V wiring runs, it may be a voltage drop that's causing the problem. There's a "work around" for this though- If you happen to have an old 12V Walwart or other small power supply laying around the house, try using that to provide power to the relay PcB. Just be sure to keep the ground wire between the relay PcB and the iAqua shield intact. The 5V signal from the Mega will need that ground wire to complete the relay control circuit.
> 
> Wait..... You're using 12V to power the iAqua shield already? The 12V regulator on the iAqua shield needs at least 13.5V to operate correctly. Try bypassing the on board 12V regulator by powering the relay PcB directly from your 12V power supply. See if that cures the problem?





O2surplus said:


> That's really not a problem, since you already have a nice big 12V supply. A little creative wiring is all that's needed, and you've already done that. The 5V regulator on the iAqua shield will still work correctly, so that won't be an issue either.


Ok, cool. So I should run a +12V line off the power supply directly to the VCC input on the relay board, disconnecting the 12V line from the shield? But I leave the ground connected back to the shield? I think that's what you said, instead of pulling the GND line also and running the second (return) line from the power supply.


----------



## O2surplus

kman said:


> Ok, cool. So I should run a +12V line off the power supply directly to the VCC input on the relay board, disconnecting the 12V line from the shield? But I leave the ground connected back to the shield? I think that's what you said, instead of pulling the GND line also and running the second (return) line from the power supply.


In reality, since the iAqua shield and relay PcB are both being powered from the same 12V power supply, both of them will ultimately be grounded together at the power supply. There's no need to run a separate ground wire between the iAqua shield and the relay PcB. Just run a couple of 12V positive & Negative leads from the 12V power supply to the iAqua shield & the relay PcB.:hihi: Easy peasy!


----------



## scaLLas




----------



## cooldex

*iAaua*

Hello
I am nearly done with mine.. still minor stuff left. *Where did you guys get the ribbon cable with 18x2 connector from the lcd shield to the display*? I looked all over the internet and could not find any.
I tested mine all all works fine. *Thanks to O2surplus and kman for their help.* :thumbsup:
I built the iAqua shield, when doing so had trouble finding the location of some components, so I had to refer to the Schematic. Also my first time soldering SMD components. :hihi: Will post pictures after I mount all in a box.

I will also modify the code later on to suit my reef tank. .


----------



## freskhu

O2 can i buy 1 shield from you? )


----------



## O2surplus

cooldex said:


> Hello
> I am nearly done with mine.. still minor stuff left. *Where did you guys get the ribbon cable with 18x2 connector from the lcd shield to the display*? I looked all over the internet and could not find any.
> I tested mine all all works fine. *Thanks to O2surplus and kman for their help.* :thumbsup:
> I built the iAqua shield, when doing so had trouble finding the location of some components, so I had to refer to the Schematic. Also my first time soldering SMD components. :hihi: Will post pictures after I mount all in a box.
> 
> I will also modify the code later on to suit my reef tank. .


First time soldering SMD components? That takes some Guts to pull off! All I can say is Wow! Good Job!:thumbsup:

Bump:


freskhu said:


> O2 can i buy 1 shield from you? )


LOL- I haven't built any of the latest version yet.... I'm still working with the prototype version. "Cooldex" is the only person that I know of that's built the latest version. Maybe he has some extras? Send him a PM.


----------



## kman

cooldex said:


> Hello
> I am nearly done with mine.. still minor stuff left. *Where did you guys get the ribbon cable with 18x2 connector from the lcd shield to the display*? I looked all over the internet and could not find any.
> I tested mine all all works fine. *Thanks to O2surplus and kman for their help.* :thumbsup:
> I built the iAqua shield, when doing so had trouble finding the location of some components, so I had to refer to the Schematic. Also my first time soldering SMD components. :hihi: Will post pictures after I mount all in a box.
> 
> I will also modify the code later on to suit my reef tank. .


The ribbon cable is a standard 40 pin IDE male to female extension cable. I was going to order one from Amazon until I finally found the right box of old computer components in the garage. This is the cable I was going to order: 
Amazon.com: 24" 40-pin Male to Female IDE Extension Cable

But there are many other options, especially if you have the patience for a slow shipment from China.

Amazon.com: 40-Pin Male to Female IDE Extension Cable

Amazon.com: 6 inch 40-Pin IDE Male to Female Extension Cable (FI-006)


Just search "IDE extension cable": Amazon.com: ide extension cable


----------



## cooldex

kman said:


> The ribbon cable is a standard 40 pin IDE male to female extension cable. I was going to order one from Amazon until I finally found the right box of old computer components in the garage. This is the cable I was going to order:
> Amazon.com: 24" 40-pin Male to Female IDE Extension Cable
> 
> But there are many other options, especially if you have the patience for a slow shipment from China.
> 
> Amazon.com: 40-Pin Male to Female IDE Extension Cable
> 
> Amazon.com: 6 inch 40-Pin IDE Male to Female Extension Cable (FI-006)
> 
> 
> Just search "IDE extension cable": Amazon.com: ide extension cable



Thanks kman! I got one ordered. I was looking for 36way, but I guess 40 way would do.


----------



## fietsenrex

help, I'm getting a bunch of errors trying to compile the code..

what am I doing wrong?

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows NT (unknown)), Board: "Arduino Mega 2560 or Mega ADK"
iAqua:109: error: 'time_t' does not name a type
iAqua:140: error: 'time_t' does not name a type
iAqua:143: error: 'time_t' does not name a type
iAqua:139: error: 'RTC_DS1307' does not name a type
iAqua:145: error: 'OneWire' does not name a type
iAqua:148: error: 'DallasTemperature' does not name a type
iAqua:150: error: 'UTFT' does not name a type
iAqua:151: error: 'UTouch' does not name a type
iAqua:154: error: 'UTFT_tinyFAT' does not name a type
iAqua:157: error: 'IRsend' does not name a type
iAqua:366: error: 'DeviceAddress' does not name a type
iAqua.ino: In function 'void setup()':
iAqua:471: error: 'myGLCD' was not declared in this scope
iAqua:471: error: 'PORTRAIT' was not declared in this scope
iAqua:472: error: 'myTouch' was not declared in this scope
iAqua:473: error: 'PREC_MEDIUM' was not declared in this scope
iAqua:476: error: 'file' was not declared in this scope
iAqua:477: error: 'SPISPEED_VERYHIGH' was not declared in this scope
iAqua:480: error: 'RTC' was not declared in this scope
iAqua:495: error: 'syncProvider' was not declared in this scope
iAqua:495: error: 'setSyncProvider' was not declared in this scope
iAqua:523: error: 'sensorW' was not declared in this scope
iAqua:524: error: 'waterSensor' was not declared in this scope
iAqua:578: error: 'myFiles' was not declared in this scope
iAqua.ino: At global scope:
iAqua:650: error: 'time_t' does not name a type
iAqua.ino: In function 'void loop()':
iAqua:674: error: 'myTouch' was not declared in this scope
iAqua:745: error: 'now' was not declared in this scope
iAqua:758: error: 'irsend' was not declared in this scope
iAqua:759: error: 'irsend' was not declared in this scope
iAqua:760: error: 'irsend' was not declared in this scope
iAqua:761: error: 'irsend' was not declared in this scope
iAqua:771: error: 'Alarm' was not declared in this scope
iAqua.ino: In function 'void screenHome()':
iAqua:778: error: 'myGLCD' was not declared in this scope
iAqua:782: error: 'myGLCD' was not declared in this scope
iAqua:786: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void screenFeeding()':
iAqua:844: error: 'myGLCD' was not declared in this scope
iAqua:853: error: 'myFiles' was not declared in this scope
iAqua:861: error: 'CENTER' was not declared in this scope
iAqua:917: error: 'RTC' was not declared in this scope
iAqua:925: error: 'minute' was not declared in this scope
iAqua:926: error: 'hour' was not declared in this scope
iAqua:927: error: 'day' was not declared in this scope
iAqua:928: error: 'month' was not declared in this scope
iAqua:929: error: 'year' was not declared in this scope
iAqua.ino: In function 'void screenPower()':
iAqua:939: error: 'myGLCD' was not declared in this scope
iAqua:946: error: 'myFiles' was not declared in this scope
iAqua:956: error: 'CENTER' was not declared in this scope
iAqua.ino: In function 'void screenSettings()':
iAqua:986: error: 'myGLCD' was not declared in this scope
iAqua:989: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void screenLights()':
iAqua:1020: error: 'myGLCD' was not declared in this scope
iAqua:1023: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void screenClock()':
iAqua:1172: error: 'myGLCD' was not declared in this scope
iAqua:1175: error: 'myFiles' was not declared in this scope
iAqua:1180: error: 'CENTER' was not declared in this scope
iAqua:1224: error: 'hour' was not declared in this scope
iAqua:1225: error: 'minute' was not declared in this scope
iAqua:1227: error: 'day' was not declared in this scope
iAqua:1228: error: 'month' was not declared in this scope
iAqua:1229: error: 'year' was not declared in this scope
iAqua.ino: In function 'void screenFeedSettings()':
iAqua:1294: error: 'myGLCD' was not declared in this scope
iAqua:1297: error: 'myFiles' was not declared in this scope
iAqua:1316: error: 'CENTER' was not declared in this scope
iAqua.ino: In function 'void screenHeater()':
iAqua:1365: error: 'myGLCD' was not declared in this scope
iAqua:1368: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void screenSchedule()':
iAqua:1439: error: 'myGLCD' was not declared in this scope
iAqua:1442: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void screenDosing()':
iAqua:1468: error: 'myGLCD' was not declared in this scope
iAqua:1471: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void screenPwrSchedule()':
iAqua:1597: error: 'myGLCD' was not declared in this scope
iAqua:1603: error: 'myFiles' was not declared in this scope
iAqua:1609: error: 'CENTER' was not declared in this scope
iAqua.ino: In function 'void screenPwrScheduleItem(int)':
iAqua:1932: error: 'myGLCD' was not declared in this scope
iAqua:1939: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void screenResyncLights()':
iAqua:2092: error: 'myGLCD' was not declared in this scope
iAqua:2094: error: 'myFiles' was not declared in this scope
iAqua:2101: error: 'CENTER' was not declared in this scope
iAqua.ino: In function 'void screenLightRamps()':
iAqua:2113: error: 'myGLCD' was not declared in this scope
iAqua:2119: error: 'myFiles' was not declared in this scope
iAqua:2125: error: 'CENTER' was not declared in this scope
iAqua.ino: In function 'void screenLightRampItem(byte)':
iAqua:2473: error: 'myGLCD' was not declared in this scope
iAqua:2481: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void screenDosingSched(byte)':
iAqua:2642: error: 'myGLCD' was not declared in this scope
iAqua:2650: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void screenScreen()':
iAqua:2760: error: 'myGLCD' was not declared in this scope
iAqua:2763: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void processMyTouch()':
iAqua:2862: error: 'myTouch' was not declared in this scope
iAqua:2970: error: 'myFiles' was not declared in this scope
iAqua:2980: error: 'myFiles' was not declared in this scope
iAqua:2989: error: 'myFiles' was not declared in this scope
iAqua:2998: error: 'myFiles' was not declared in this scope
iAqua:3008: error: 'myFiles' was not declared in this scope
iAqua:3017: error: 'myFiles' was not declared in this scope
iAqua:3026: error: 'myFiles' was not declared in this scope
iAqua:3035: error: 'myFiles' was not declared in this scope
iAqua:3088: error: 'irsend' was not declared in this scope
iAqua:3097: error: 'myFiles' was not declared in this scope
iAqua:3106: error: 'irsend' was not declared in this scope
iAqua:3115: error: 'myFiles' was not declared in this scope
iAqua:3123: error: 'irsend' was not declared in this scope
iAqua:3132: error: 'myFiles' was not declared in this scope
iAqua:3140: error: 'irsend' was not declared in this scope
iAqua:3149: error: 'myFiles' was not declared in this scope
iAqua:3157: error: 'myFiles' was not declared in this scope
iAqua:3184: error: 'myGLCD' was not declared in this scope
iAqua:3244: error: 'irsend' was not declared in this scope
iAqua:3245: error: 'irsend' was not declared in this scope
iAqua:3253: error: 'irsend' was not declared in this scope
iAqua:3254: error: 'irsend' was not declared in this scope
iAqua:3262: error: 'irsend' was not declared in this scope
iAqua:3263: error: 'irsend' was not declared in this scope
iAqua:3271: error: 'irsend' was not declared in this scope
iAqua:3272: error: 'irsend' was not declared in this scope
iAqua:3282: error: 'irsend' was not declared in this scope
iAqua:3301: error: 'irsend' was not declared in this scope
iAqua:3302: error: 'irsend' was not declared in this scope
iAqua:3303: error: 'irsend' was not declared in this scope
iAqua:3304: error: 'irsend' was not declared in this scope
iAqua:3325: error: 'irsend' was not declared in this scope
iAqua:3330: error: 'irsend' was not declared in this scope
iAqua:3335: error: 'irsend' was not declared in this scope
iAqua:3340: error: 'irsend' was not declared in this scope
iAqua:3362: error: 'myGLCD' was not declared in this scope
iAqua:3375: error: 'irsend' was not declared in this scope
iAqua:3394: error: 'myGLCD' was not declared in this scope
iAqua:3397: error: 'irsend' was not declared in this scope
iAqua:3416: error: 'myGLCD' was not declared in this scope
iAqua:3419: error: 'irsend' was not declared in this scope
iAqua:3438: error: 'myGLCD' was not declared in this scope
iAqua:3441: error: 'irsend' was not declared in this scope
iAqua:3460: error: 'myGLCD' was not declared in this scope
iAqua:3463: error: 'irsend' was not declared in this scope
iAqua:3482: error: 'myGLCD' was not declared in this scope
iAqua:3485: error: 'irsend' was not declared in this scope
iAqua:3504: error: 'myGLCD' was not declared in this scope
iAqua:3507: error: 'irsend' was not declared in this scope
iAqua:3526: error: 'myGLCD' was not declared in this scope
iAqua:3529: error: 'irsend' was not declared in this scope
iAqua:3550: error: 'myGLCD' was not declared in this scope
iAqua:3757: error: 'myFiles' was not declared in this scope
iAqua:3768: error: 'myFiles' was not declared in this scope
iAqua:3779: error: 'myFiles' was not declared in this scope
iAqua:3790: error: 'myFiles' was not declared in this scope
iAqua:3801: error: 'myFiles' was not declared in this scope
iAqua:3812: error: 'myFiles' was not declared in this scope
iAqua:3823: error: 'myFiles' was not declared in this scope
iAqua:3834: error: 'myFiles' was not declared in this scope
iAqua:4681: error: 'myFiles' was not declared in this scope
iAqua:5323: error: 'myFiles' was not declared in this scope
iAqua:5330: error: 'myFiles' was not declared in this scope
iAqua:5340: error: 'myFiles' was not declared in this scope
iAqua:5347: error: 'myFiles' was not declared in this scope
iAqua:5357: error: 'myFiles' was not declared in this scope
iAqua:5364: error: 'myFiles' was not declared in this scope
iAqua:5374: error: 'myFiles' was not declared in this scope
iAqua:5381: error: 'myFiles' was not declared in this scope
iAqua:5391: error: 'myFiles' was not declared in this scope
iAqua:5398: error: 'myFiles' was not declared in this scope
iAqua:5408: error: 'myFiles' was not declared in this scope
iAqua:5415: error: 'myFiles' was not declared in this scope
iAqua:5425: error: 'myFiles' was not declared in this scope
iAqua:5432: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void checkTemp()':
iAqua:5555: error: 'sensorW' was not declared in this scope
iAqua:5556: error: 'waterSensor' was not declared in this scope
iAqua:5571: error: 'myFiles' was not declared in this scope
iAqua:5586: error: 'myFiles' was not declared in this scope
iAqua:5598: error: 'myGLCD' was not declared in this scope
iAqua:5599: error: 'myGLCD' was not declared in this scope
iAqua:5602: error: 'myGLCD' was not declared in this scope
iAqua.ino: In function 'void checkFeeding()':
iAqua:5610: error: 'myGLCD' was not declared in this scope
iAqua:5619: error: 'time_t' was not declared in this scope
iAqua:5619: error: expected `;' before 'feedHours'
iAqua:5622: error: 'feedHours' was not declared in this scope
iAqua.ino: In function 'void checkDosing()':
iAqua:5714: error: 'myGLCD' was not declared in this scope
iAqua:5732: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void checkLighting()':
iAqua:5748: error: 'myGLCD' was not declared in this scope
iAqua:5753: error: 'myFiles' was not declared in this scope
iAqua:5758: error: 'now' was not declared in this scope
iAqua:5787: error: 'myFiles' was not declared in this scope
iAqua:5791: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void clearSelectedLight(int)':
iAqua:5802: error: 'myFiles' was not declared in this scope
iAqua:5806: error: 'myFiles' was not declared in this scope
iAqua:5810: error: 'myFiles' was not declared in this scope
iAqua:5814: error: 'myFiles' was not declared in this scope
iAqua:5822: error: 'myFiles' was not declared in this scope
iAqua:5829: error: 'myFiles' was not declared in this scope
iAqua:5836: error: 'myFiles' was not declared in this scope
iAqua:5843: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void resyncLights()':
iAqua:5858: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void SaveTime()':
iAqua:5998: error: 'RTC' was not declared in this scope
iAqua:5998: error: 'DateTime' was not declared in this scope
iAqua.ino: In function 'void updateTimeDate()':
iAqua:6009: error: 'RTC' was not declared in this scope
iAqua:6012: error: 'myGLCD' was not declared in this scope
iAqua:6028: error: 'hour' was not declared in this scope
iAqua:6028: error: 'minute' was not declared in this scope
iAqua:6045: error: 'day' was not declared in this scope
iAqua:6045: error: 'month' was not declared in this scope
iAqua:6045: error: 'year' was not declared in this scope
iAqua.ino: In function 'void printTime(int, int, byte, int, int)':
iAqua:6081: error: 'myGLCD' was not declared in this scope
iAqua.ino: In function 'void printDate(int, int)':
iAqua:6091: error: 'weekday' was not declared in this scope
iAqua:6094: error: 'month' was not declared in this scope
iAqua:6097: error: 'day' was not declared in this scope
iAqua:6107: error: 'myGLCD' was not declared in this scope
iAqua.ino: At global scope:
iAqua:6110: error: 'time_t' does not name a type
iAqua:6180: error: 'time_t' does not name a type
iAqua.ino: In function 'void smartStartup()':
iAqua:6318: error: 'RTC' was not declared in this scope
iAqua:6322: error: 'time_t' was not declared in this scope
iAqua:6322: error: expected `;' before 'currentStamp'
iAqua:6324: error: expected `;' before 'midnight'
iAqua:6325: error: expected `;' before 'powerOn'
iAqua:6326: error: expected `;' before 'powerOff'
iAqua:6327: error: expected `;' before 'powerOffNextDay'
iAqua:6333: error: expected `;' before 'powerOn'
iAqua:6334: error: expected `;' before 'powerOff'
iAqua:6335: error: expected `;' before 'powerOffNextDay'
iAqua:6336: error: 'powerOffNextDay' was not declared in this scope
iAqua:6338: error: 'powerOn' was not declared in this scope
iAqua:6338: error: 'powerOff' was not declared in this scope
iAqua:6341: error: 'currentStamp' was not declared in this scope
iAqua:6341: error: 'midnight' was not declared in this scope
iAqua:6345: error: 'currentStamp' was not declared in this scope
iAqua:6353: error: 'powerOn' was not declared in this scope
iAqua:6353: error: 'year' was not declared in this scope
iAqua:6353: error: 'month' was not declared in this scope
iAqua:6353: error: 'day' was not declared in this scope
iAqua:6353: error: 'tmConvert_t' was not declared in this scope
iAqua:6354: error: 'powerOff' was not declared in this scope
iAqua:6355: error: 'powerOffNextDay' was not declared in this scope
iAqua:6361: error: 'currentStamp' was not declared in this scope
iAqua:6361: error: 'midnight' was not declared in this scope
iAqua:6365: error: 'currentStamp' was not declared in this scope
iAqua:6376: error: 'powerOn' was not declared in this scope
iAqua:6376: error: 'year' was not declared in this scope
iAqua:6376: error: 'month' was not declared in this scope
iAqua:6376: error: 'day' was not declared in this scope
iAqua:6376: error: 'tmConvert_t' was not declared in this scope
iAqua:6377: error: 'powerOff' was not declared in this scope
iAqua:6378: error: 'powerOffNextDay' was not declared in this scope
iAqua:6384: error: 'currentStamp' was not declared in this scope
iAqua:6384: error: 'midnight' was not declared in this scope
iAqua:6388: error: 'currentStamp' was not declared in this scope
iAqua:6399: error: 'powerOn' was not declared in this scope
iAqua:6399: error: 'year' was not declared in this scope
iAqua:6399: error: 'month' was not declared in this scope
iAqua:6399: error: 'day' was not declared in this scope
iAqua:6399: error: 'tmConvert_t' was not declared in this scope
iAqua:6400: error: 'powerOff' was not declared in this scope
iAqua:6401: error: 'powerOffNextDay' was not declared in this scope
iAqua:6407: error: 'currentStamp' was not declared in this scope
iAqua:6407: error: 'midnight' was not declared in this scope
iAqua:6411: error: 'currentStamp' was not declared in this scope
iAqua:6419: error: 'powerOn' was not declared in this scope
iAqua:6419: error: 'year' was not declared in this scope
iAqua:6419: error: 'month' was not declared in this scope
iAqua:6419: error: 'day' was not declared in this scope
iAqua:6419: error: 'tmConvert_t' was not declared in this scope
iAqua:6420: error: 'powerOff' was not declared in this scope
iAqua:6421: error: 'powerOffNextDay' was not declared in this scope
iAqua:6427: error: 'currentStamp' was not declared in this scope
iAqua:6427: error: 'midnight' was not declared in this scope
iAqua:6431: error: 'currentStamp' was not declared in this scope
iAqua:6439: error: 'powerOn' was not declared in this scope
iAqua:6439: error: 'year' was not declared in this scope
iAqua:6439: error: 'month' was not declared in this scope
iAqua:6439: error: 'day' was not declared in this scope
iAqua:6439: error: 'tmConvert_t' was not declared in this scope
iAqua:6440: error: 'powerOff' was not declared in this scope
iAqua:6441: error: 'powerOffNextDay' was not declared in this scope
iAqua:6447: error: 'currentStamp' was not declared in this scope
iAqua:6447: error: 'midnight' was not declared in this scope
iAqua:6451: error: 'currentStamp' was not declared in this scope
iAqua:6459: error: expected `;' before 'rampStart1'
iAqua:6460: error: expected `;' before 'rampStart2'
iAqua:6461: error: expected `;' before 'rampStart3'
iAqua:6462: error: expected `;' before 'rampStart4'
iAqua:6463: error: expected `;' before 'rampStart5'
iAqua:6464: error: expected `;' before 'rampStart6'
iAqua:6467: error: 'rampStart2' was not declared in this scope
iAqua:6467: error: 'rampStart1' was not declared in this scope
iAqua:6467: error: 'currentStamp' was not declared in this scope
iAqua:6469: error: 'irsend' was not declared in this scope
iAqua:6474: error: 'irsend' was not declared in this scope
iAqua:6477: error: 'rampStart3' was not declared in this scope
iAqua:6479: error: 'irsend' was not declared in this scope
iAqua:6482: error: 'rampStart4' was not declared in this scope
iAqua:6484: error: 'irsend' was not declared in this scope
iAqua:6487: error: 'rampStart5' was not declared in this scope
iAqua:6489: error: 'irsend' was not declared in this scope
iAqua:6492: error: 'rampStart6' was not declared in this scope
iAqua:6494: error: 'irsend' was not declared in this scope
iAqua:6501: error: 'irsend' was not declared in this scope
iAqua:6506: error: 'irsend' was not declared in this scope
iAqua:6511: error: 'irsend' was not declared in this scope
iAqua:6516: error: 'irsend' was not declared in this scope
iAqua:6521: error: 'irsend' was not declared in this scope
iAqua:6528: error: 'irsend' was not declared in this scope
iAqua:6533: error: 'irsend' was not declared in this scope
iAqua:6538: error: 'irsend' was not declared in this scope
iAqua:6543: error: 'irsend' was not declared in this scope
iAqua:6550: error: 'irsend' was not declared in this scope
iAqua:6555: error: 'irsend' was not declared in this scope
iAqua:6560: error: 'irsend' was not declared in this scope
iAqua:6567: error: 'irsend' was not declared in this scope
iAqua:6572: error: 'irsend' was not declared in this scope
iAqua:6577: error: 'irsend' was not declared in this scope
iAqua:6584: error: 'irsend' was not declared in this scope
iAqua:6589: error: 'irsend' was not declared in this scope
iAqua:6594: error: 'irsend' was not declared in this scope
iAqua:6599: error: 'irsend' was not declared in this scope
iAqua:6604: error: 'irsend' was not declared in this scope
iAqua:6609: error: 'irsend' was not declared in this scope
iAqua:6612: error: 'midnight' was not declared in this scope
iAqua:6614: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void updateAlarms()':
iAqua:6676: error: 'Alarm' was not declared in this scope
iAqua:6681: error: 'Alarm' was not declared in this scope
iAqua:6686: error: 'Alarm' was not declared in this scope
iAqua:6691: error: 'Alarm' was not declared in this scope
iAqua:6696: error: 'Alarm' was not declared in this scope
iAqua:6701: error: 'Alarm' was not declared in this scope
iAqua:6706: error: 'Alarm' was not declared in this scope
iAqua:6711: error: 'Alarm' was not declared in this scope
iAqua:6721: error: 'dowSunday' was not declared in this scope
iAqua:6725: error: 'dowSunday' was not declared in this scope
iAqua:6729: error: 'dowMonday' was not declared in this scope
iAqua:6733: error: 'dowMonday' was not declared in this scope
iAqua:6737: error: 'dowTuesday' was not declared in this scope
iAqua:6741: error: 'dowTuesday' was not declared in this scope
iAqua:6745: error: 'dowWednesday' was not declared in this scope
iAqua:6749: error: 'dowWednesday' was not declared in this scope
iAqua:6753: error: 'dowThursday' was not declared in this scope
iAqua:6757: error: 'dowThursday' was not declared in this scope
iAqua:6761: error: 'dowFriday' was not declared in this scope
iAqua:6765: error: 'dowFriday' was not declared in this scope
iAqua:6769: error: 'dowSaturday' was not declared in this scope
iAqua:6773: error: 'dowSaturday' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrLight1_On()':
iAqua:6782: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrLight2_On()':
iAqua:6789: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrCO2_On()':
iAqua:6796: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrCirc_On()':
iAqua:6803: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrFilter_On()':
iAqua:6810: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrHeat_On()':
iAqua:6817: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrAux1_On()':
iAqua:6824: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrAux2_On()':
iAqua:6831: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrLight1_Off()':
iAqua:6838: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrLight2_Off()':
iAqua:6845: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrCO2_Off()':
iAqua:6854: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrCirc_Off()':
iAqua:6861: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrFilter_Off()':
iAqua:6868: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrHeat_Off()':
iAqua:6875: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrAux1_Off()':
iAqua:6882: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmPwrAux2_Off()':
iAqua:6889: error: 'myFiles' was not declared in this scope
iAqua.ino: In function 'void AlarmRamp1()':
iAqua:6918: error: 'now' was not declared in this scope
iAqua.ino: In function 'void AlarmRamp2()':
iAqua:6946: error: 'now' was not declared in this scope
iAqua.ino: In function 'void AlarmRamp3()':
iAqua:6974: error: 'now' was not declared in this scope
iAqua.ino: In function 'void AlarmRamp4()':
iAqua:7002: error: 'now' was not declared in this scope
iAqua.ino: In function 'void AlarmRamp5()':
iAqua:7030: error: 'now' was not declared in this scope
iAqua.ino: In function 'void AlarmRamp6()':
iAqua:7058: error: 'now' was not declared in this scope
iAqua.ino: In function 'void checkLightFade(int, int)':
iAqua:7148: error: 'now' was not declared in this scope
iAqua:7171: error: 'myGLCD' was not declared in this scope
iAqua:7205: error: 'irsend' was not declared in this scope
iAqua:7225: error: 'irsend' was not declared in this scope
iAqua:7256: error: 'irsend' was not declared in this scope
iAqua:7276: error: 'irsend' was not declared in this scope
iAqua:7307: error: 'irsend' was not declared in this scope
iAqua:7327: error: 'irsend' was not declared in this scope
iAqua:7358: error: 'irsend' was not declared in this scope
iAqua:7378: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void firstRunSetup()':
iAqua:7405: error: 'minute' was not declared in this scope
iAqua:7406: error: 'hour' was not declared in this scope
iAqua:7407: error: 'day' was not declared in this scope
iAqua:7408: error: 'month' was not declared in this scope
iAqua:7409: error: 'year' was not declared in this scope


----------



## fietsenrex

switched to arduino 1.5.8 and got this error

Arduino: 1.5.8 (Windows 8), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

arial_bold.c:9:9: error: variable 'arial_bold' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
uint8_t arial_bold[3044] PROGMEM={
^


----------



## cooldex

fietsenrex said:


> switched to arduino 1.5.8 and got this error
> 
> Arduino: 1.5.8 (Windows 8), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"
> 
> arial_bold.c:9:9: error: variable 'arial_bold' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
> uint8_t arial_bold[3044] PROGMEM={
> ^


The library folder has to be in C:\Programs Files (x86)\Arduino directory. You make sure that you are using the right variable for your display in the iAqua code:
UTFT myGLCD(ITDB32S,38,39,40,41)

If you do then you need to add this word "const" in front of the line in the arial_bold.c file eg:
*const *uint8_t arial_bold[3044] PROGMEM={


----------



## kman

cooldex said:


> Thanks kman! I got one ordered. I was looking for 36way, but I guess 40 way would do.


Why were you looking for 36? Did you want to keep the TFT shield with the LCD, as opposed to just extending the LCD away?


----------



## fietsenrex

cooldex thanks for the response it is solved I now got the next error: 

iAqua.ino:122:22: error: 'A8' was not declared in this scope
iAqua.ino:123:25: error: 'A9' was not declared in this scope

but this is the pressure sensor and ambient light sensor.. 
I did try to just remove the code considering ambient light and automatic dimming but the error goes deeper and deeper into the script..

but he it keeps me busy


----------



## O2surplus

fietsenrex said:


> cooldex thanks for the response it is solved I now got the next error:
> 
> iAqua.ino:122:22: error: 'A8' was not declared in this scope
> iAqua.ino:123:25: error: 'A9' was not declared in this scope
> 
> but this is the pressure sensor and ambient light sensor..
> I did try to just remove the code considering ambient light and automatic dimming but the error goes deeper and deeper into the script..
> 
> but he it keeps me busy



Go to the tools tab in the Arduino IDE and set the board to Mega2560. You probably forgot to change that setting when you changed versions of the Arduino IDE. The error is there because the UNO doesn't have an Analog pin 8 & 9 :hihi:


----------



## kman

O2surplus said:


> Go to the tools tab in the Arduino IDE and set the board to Mega2560. You probably forgot to change that setting when you changed versions of the Arduino IDE. The error is there because the UNO doesn't have an Analog pin 8 & 9 :hihi:


Definitely. I've had the same error for the same reasons.  Switching between Mega and Uno frequently is definitely annoying!


----------



## kman

O2surplus said:


> In reality, since the iAqua shield and relay PcB are both being powered from the same 12V power supply, both of them will ultimately be grounded together at the power supply. There's no need to run a separate ground wire between the iAqua shield and the relay PcB. Just run a couple of 12V positive & Negative leads from the 12V power supply to the iAqua shield & the relay PcB.:hihi: Easy peasy!


Ok, I disconnected the +12V output from the iAqua Shield (that had run to to the relay board), and instead pulled another 12V line off the power supply, running directly to the VCC input on the relay. I left the GND connections alone.

No change in function, though. :confused1: All outlets are still hot, no matter what the iAqua has to say about the matter. :help:

*sigh*

On the bright side, _everything_ else is done. I installed a little breakout board, attached to the inside side of the enclosure, where I soldered quick-connect sockets, for the 2 dosing pumps. This lets me connect and disconnect the shield nice and easily when I need to pull it out. The breakout boards then run wires through the side of the box to a surface mount dual outlet RJ11 phone jack outlet box. The temperature probe line has a similarly-easy to disconnect molex plug that runs to the second jack. Then two simple phone cords (super easy to connect and disconnect, plus cheap with very reliable connections) lead to an identical surface mount dual jack outlet on the back side of the board I have my dosing pumps mounted to. The dosing pumps connect quickly and easily to that jack, as does the temp probe, but now everything is right near the tank. 

And finally, I installed an inline quick-disconnect and extended the IR LED so I can bring it up to where the lights' IR receivers are. I have a temporary setup rigged up to hold everything together in place, so I'll finally be able to test the iAqua control of my lights tonight when it all turns on! The temp probe is already in the tank (just stuck in for now). As soon as the last reliability tests are done, I'll be ready to pass control over to the iAqua. w00t!!!

Except, of course, for now, until the relay board issues are worked out, my old mechanical timer will deal with the power switching for co2, skimmer, etc. The lights can be controlled by the iAqua IR until the power issues are ironed out but stay plugged in as they were. It doesn't matter if the lights stay in the super-low moonlight mode and never actually power down, until it's all sorted, so other than power switching, I'm ready for full testing of all other functions.


----------



## mistergreen

Test to see if your relay is constantly getting an input signal with a meter.


----------



## kman

mistergreen said:


> Test to see if your relay is constantly getting an input signal with a meter.


So... I'm checking for 5V on each the incoming signal lines, and to the ground line?

On the bright side, the light controls seem to be working well. I'll probably tweak the ramping times a little, but I'm pretty happy with the output at the moment, and the crossfading works beautifully! I think I'm going to go ahead and hook up the dosing pumps and get this thing working for real!


----------



## scaLLas

@kman Post another pic of the wiring


Sent from my iPhone using Tapatalk


----------



## kman

scaLLas said:


> @kman Post another pic of the wiring


The wiring is hard to photograph as it is buried under a ton of stuff, plus it's covering 3 sides of the interior of the enclosure (including two vertical walls) so it's nearly impossible to show a clean and clear photo that captures all of the relevant angle, unless you want a whole series of shots.

I posted the general wiring diagram I followed, and a photo of the inside (which may help you see why it's hard to give a good photo), in this post, a couple of pages back: http://www.plantedtank.net/forums/showpost.php?p=7265210&postcount=838

Let me know if you need more than that and I'll see what I can do. I'll have to unplug and move around a bunch of things to get any new shots. (plus it's controlling my tank, to an extent, now)

Actually, this may also help, if you're referring to the DC side of the hookup. Here is the relay board:










and here is O2Surplus' shield:










The +12V, GND, and inputs 1-8 on O2's shield hook to the relay board at VCC (the +12V), GND, and inputs 1-8, respectively. Except at the moment I'm pulling a spare +12V rail from my power supply instead of the connection from O2's board, just for the +12V/VCC input. The GND is still routed to O2's board, since it's all a common ground anyway.


----------



## scaLLas

Ok 
So to see if the relay board is still working, code a small program that uses one of the Arduino's pins to trigger a relay. that way you'll know if its hardware or software (and if the relay board is still working.
Check all the wiring going to the relay. Make sure you haven't swopped a GND or input wire (especially if they are colored the same!) 
If you have a multimeter start testing from the arduino pins used for the relays and see if there's a reading when the code is trigger the pins and then test the shield and finally the relay board.
Again triple check the wiring!!


----------



## scaLLas

just found this
Excellent article on the relay
http://arduino-info.wikispaces.com/ArduinoPower
read later on about the 8-channel relay and how it can be isolated. check your jumper and power supplies!
Hope it helps!


----------



## cooldex

kman said:


> Why were you looking for 36? Did you want to keep the TFT shield with the LCD, as opposed to just extending the LCD away?


Yeah I wanted to extend, because it got a 36pin conn I was looking for one. But all sorted thanks.


----------



## fietsenrex

O2surplus said:


> Go to the tools tab in the Arduino IDE and set the board to Mega2560. You probably forgot to change that setting when you changed versions of the Arduino IDE. The error is there because the UNO doesn't have an Analog pin 8 & 9 :hihi:


I figured that out when I was done removing all the code involving automatic dimming and the ir LED... I got the error that the code was to big and then i noticed it was in UNO not in MEGA.....


----------



## kman

scaLLas said:


> Ok
> So to see if the relay board is still working, code a small program that uses one of the Arduino's pins to trigger a relay. that way you'll know if its hardware or software (and if the relay board is still working.
> Check all the wiring going to the relay. Make sure you haven't swopped a GND or input wire (especially if they are colored the same!)
> If you have a multimeter start testing from the arduino pins used for the relays and see if there's a reading when the code is trigger the pins and then test the shield and finally the relay board.
> Again triple check the wiring!!


Wiring is good for sure.

+12V and GND are a separate pair from the block connector I have for inputs 1-8. And I just swapped out +12V to a line directly to the power supply, in case there was an issue getting enough voltage from the Shield's power regulator, and still no joy.

When I change state in the iAqua interface, the LEDs over each port change from on, to on bright. So I know the interface is receiving commands. It just doesn't actually cut the power for some reason. On or Off, the outlets are all hot. 

I'll go play with the multimeter a bit and see if I can get some readings, though.


----------



## kman

Hey, side question:

Is there a way, with the iAqua interface, to go directly to one of the 4 preset light modes? Such as, for instance, if you're showing off a storm mode to your friends, how do you get back to "mid-sun"? For me, "mid-sun" is a defined light mode, with each channel at a specific level, and there is no easy way to jump back to it with the remote. (yes, I should have programmed M1-M4 with the various modes, and that would work, and I will, but meanwhile, I'm curious if there is a way to get there with the iAqua interface)

Other than using the remote, or waiting for the next scheduled light change, I cannot figure out if there is a way to get to a given preset mode within the interface. Seems like there should be, but if so, I haven't discovered it yet. The "resync lights" button in the light setup pages always seems to reset the lights to full sun. Which is great if that's the correct light time slot, but not so great if it's shortly before the tank goes into night mode...

EDIT: Companion question, for those with functional iAqua setups (with IR lights, such as Sat+ or E-Series): If you change the mode (manually, with the remote) to a dynamic preset, like sunrise/sunset, for instance, will the next scheduled light change still take place normally? I ask because you can't customize the dynamic modes, so a simple fade with the up/down arrows on the color channel wouldn't work on a dynamic mode.


----------



## fietsenrex

does someone use a PWM LED driver?

I wanted to order 10x CAT4101 but the shipping is over $70.. wich is a bit steep if you only pay $13 for the drivers...


----------



## renesis

kman said:


> The wiring is hard to photograph as it is buried under a ton of stuff, plus it's covering 3 sides of the interior of the enclosure (including two vertical walls) so it's nearly impossible to show a clean and clear photo that captures all of the relevant angle, unless you want a whole series of shots.
> 
> I posted the general wiring diagram I followed, and a photo of the inside (which may help you see why it's hard to give a good photo), in this post, a couple of pages back: http://www.plantedtank.net/forums/showpost.php?p=7265210&postcount=838
> 
> Let me know if you need more than that and I'll see what I can do. I'll have to unplug and move around a bunch of things to get any new shots. (plus it's controlling my tank, to an extent, now)
> 
> Actually, this may also help, if you're referring to the DC side of the hookup. Here is the relay board:
> 
> 
> and here is O2Surplus' shield:
> 
> 
> The +12V, GND, and inputs 1-8 on O2's shield hook to the relay board at VCC (the +12V), GND, and inputs 1-8, respectively. Except at the moment I'm pulling a spare +12V rail from my power supply instead of the connection from O2's board, just for the +12V/VCC input. The GND is still routed to O2's board, since it's all a common ground anyway.


Okay, I'll take a crack at this.

First off - do you hear an audible click when any of the relays are energized and the relays turn on?

You should hear it click ON or OFF when you send the signal in addition to the LED turning on or off.

Second- Measure the voltage between GND and an Input when the relay is energized and the LED is on. What is the voltage?

Again, measure the voltage on the same pin with the relay OFF. What is the voltage?

EDIT:

Just noticed something - From your pictures here (http://www.plantedtank.net/forums/showpost.php?p=7265210&postcount=838), it looks like you have a 5V version of the relay board. Can you check the model number on one of the Relays? The picture is a bit unclear. I haven't looked at the schematics of O2's board too closely, but if it drives 12V to them, when LOW, it could still be delivering enough voltage to keep the 5V relay in the HIGH state.

If I'm correct, you will not be hearing the clicking of the relays, except either when the Ardino is powered on initially, or when each relay goes ON initially, and the residual voltage is keeping them ON even when the signal is sent for them to power off.


----------



## O2surplus

fietsenrex said:


> does someone use a PWM LED driver?
> 
> I wanted to order 10x CAT4101 but the shipping is over $70.. wich is a bit steep if you only pay $13 for the drivers...


Did you try sourcing them from DigiKey? http://www.digikey.com/us/en/international/europe.html

$70 for shipping is criminal, when I could ship them to you from the states for only $26.:hihi:


----------



## robsworld78

Renesis, good catch! That's your problem kman. I looked hard at your pics but didn't notice the relay board in your box says 5v on the relays, not 12v like all the other images and links. Explains why your relays are hot. Add 5v and you should be good.


----------



## fietsenrex

O2surplus said:


> Did you try sourcing them from DigiKey? http://www.digikey.com/us/en/international/europe.html
> 
> $70 for shipping is criminal, when I could ship them to you from the states for only $26.:hihi:


thnx, I found a site called Farnell and that is shipping in the netherlands as well and does is for free, took me an hour on google but he I found it

but digikey first asked $70 for shipping but now it's only €18... 
anyhow i got that sorted 

now all i need is a new power supply mine doesn't deliver enough power....
but the code works like a charm


----------



## kman

renesis said:


> Okay, I'll take a crack at this.
> 
> First off - do you hear an audible click when any of the relays are energized and the relays turn on?
> 
> You should hear it click ON or OFF when you send the signal in addition to the LED turning on or off.
> 
> Second- Measure the voltage between GND and an Input when the relay is energized and the LED is on. What is the voltage?
> 
> Again, measure the voltage on the same pin with the relay OFF. What is the voltage?
> 
> EDIT:
> 
> Just noticed something - From your pictures here (http://www.plantedtank.net/forums/showpost.php?p=7265210&postcount=838), it looks like you have a 5V version of the relay board. Can you check the model number on one of the Relays? The picture is a bit unclear. I haven't looked at the schematics of O2's board too closely, but if it drives 12V to them, when LOW, it could still be delivering enough voltage to keep the 5V relay in the HIGH state.
> 
> If I'm correct, you will not be hearing the clicking of the relays, except either when the Ardino is powered on initially, or when each relay goes ON initially, and the residual voltage is keeping them ON even when the signal is sent for them to power off.


Hmm. Yes, there is definitely a loud click when the Relay first receives power. No click when they change state, only a dimming of the LED over the respective port.

I purchased the relay board that AnotherHobby told me to in this post:

http://www.plantedtank.net/forums/showpost.php?p=6513210&postcount=106

... which is this one: http://www.dx.com/p/8-channel-relay...h-official-arduino-boards-224064#.U-0bQRbvp2A

Looking closely, though, you may be right? There is precious little info available on the DealExtreme website as far as specs are concerned. It does mention "Control port: 5V" but I thought that was just the signalling voltage.

If this thing is supposed to run at 5V instead of 12V, no wonder it's putting out so much heat!

There was NO documentation that came with the board whatsoever.

O2, is there a way for me to change the voltage I'm feeding this thing? There must be a spare 5V rail I can pick up somewhere, perhaps from the Arduino? I have to assume the signalling voltage would still work, though, as I think both the 12V and 5V boards use a 5V signal?

I didn't have a chance to measure the voltage with my multimeter last night, unfortunately. But as soon as this is resolved, I'm 100% done (other than tidying up the final wiring around the tank, and putting proper labels on things). 

I did run my tank all day yesterday with the iAqua. The lights work perfectly, and I installed the dosing pumps in place, and this morning, I stood there as my tank received it's very first automated dose of micro ferts. Woohoo!










The new wood block looks WAY lighter in this photo for some reason, than it does in real life. IRL, it blends in with the console table nicely and you can barely tell it's not part of the original construction.


----------



## renesis

kman said:


> Hmm. Yes, there is definitely a loud click when the Relay first receives power. No click when they change state, only a dimming of the LED over the respective port.
> 
> I purchased the relay board that AnotherHobby told me to in this post:
> 
> http://www.plantedtank.net/forums/showpost.php?p=6513210&postcount=106
> 
> ... which is this one: http://www.dx.com/p/8-channel-relay...h-official-arduino-boards-224064#.U-0bQRbvp2A
> 
> Looking closely, though, you may be right? There is precious little info available on the DealExtreme website as far as specs are concerned. It does mention "Control port: 5V" but I thought that was just the signalling voltage.
> 
> If this thing is supposed to run at 5V instead of 12V, no wonder it's putting out so much heat!
> 
> There was NO documentation that came with the board whatsoever.
> 
> O2, is there a way for me to change the voltage I'm feeding this thing? There must be a spare 5V rail I can pick up somewhere, perhaps from the Arduino? I have to assume the signalling voltage would still work, though, as I think both the 12V and 5V boards use a 5V signal?
> 
> I didn't have a chance to measure the voltage with my multimeter last night, unfortunately. But as soon as this is resolved, I'm 100% done (other than tidying up the final wiring around the tank, and putting proper labels on things).
> 
> I did run my tank all day yesterday with the iAqua. The lights work perfectly, and I installed the dosing pumps in place, and this morning, I stood there as my tank received it's very first automated dose of micro ferts. Woohoo!
> 
> 
> 
> The new wood block looks WAY lighter in this photo for some reason, than it does in real life. IRL, it blends in with the console table nicely and you can barely tell it's not part of the original construction.



Looking good!

From the schematic O2 posted here (http://www.plantedtank.net/forums/showpost.php?p=7085810&postcount=709), it looks like his board has its own 5V regulator. You should be able to take the power from the 5V header on the top right of the shield, just above the pin marked 21, to the right of the IR LED.

Though it would probably work, I would not take it from the Arduino's regulator.


----------



## O2surplus

kman said:


> O2, is there a way for me to change the voltage I'm feeding this thing? There must be a spare 5V rail I can pick up somewhere, perhaps from the Arduino? I have to assume the signalling voltage would still work, though, as I think both the 12V and 5V boards use a 5V signal?


Both versions use a 5V control signal. I'm afraid that powering it from the Arduino's 5V line would cause even more problems. The load of all 8 Relay coils would definitely overload the 5V regulator on the iAqua shield, and "Brown out" the Mega. Short of replacing it with a 12V version, I'd recommend that you look around the house for an old cell phone charger and use that to power the Relay block. Most are 5V and should have enough amp capacity to do the job.:hihi:


----------



## renesis

O2surplus said:


> Both versions use a 5V control signal. I'm afraid that powering it from the Arduino's 5V line would cause even more problems. The load of all 8 Relay coils would definitely overload the 5V regulator on the iAqua shield, and "Brown out" the Mega. Short of replacing it with a 12V version, I'd recommend that you look around the house for an old cell phone charger and use that to power the Relay block. Most are 5V and should have enough amp capacity to do the job.:hihi:


Ah, I see it now- Didn't realize you were powering the Mega through the 5V pin. Definitely needs its own supply or separate regulator circuit then.


----------



## kman

O2surplus said:


> Both versions use a 5V control signal. I'm afraid that powering it from the Arduino's 5V line would cause even more problems. The load of all 8 Relay coils would definitely overload the 5V regulator on the iAqua shield, and "Brown out" the Mega. Short of replacing it with a 12V version, I'd recommend that you look around the house for an old cell phone charger and use that to power the Relay block. Most are 5V and should have enough amp capacity to do the job.:hihi:


UGH. I went through all that work to get my sweet power supply to avoid wall warts. Is a cheap 500ma cell charger (or perhaps a 1amp iPhone charger) going to be enough juice to power the relay board?

Better is if there is a way to step down the output from the power supply from 12v to 5v... I can't imagine there isn't a simple way to do that. Is stepping down the voltage complicated, or easy?


----------



## O2surplus

kman said:


> UGH. I went through all that work to get my sweet power supply to avoid wall warts. Is a cheap 500ma cell charger (or perhaps a 1amp iPhone charger) going to be enough juice to power the relay board?
> 
> Better is if there is a way to step down the output from the power supply from 12v to 5v... I can't imagine there isn't a simple way to do that. Is stepping down the voltage complicated, or easy?


LOL- Use a couple of 1/4" Female spade connectors and some wire to make the A/C connection to the cell phone charger. You can tap into the same A/C cord that's feeding your 12V power supply. That's how I did it when I built my Relay controlled Power strip. Use the iPhone charger. It will have enough power. Here's a picture-


----------



## jeffkrol

O2surplus said:


> LOL-


Why not just use one of those cheap voltage dropping flea bay boards. Drop 12 to whatever you need.. ???


> Buck Step Down Converter Module LM2596 Voltage Regulator + Led Voltmeter


$3


----------



## kman

jeffkrol said:


> Why not just use one of those cheap voltage dropping flea bay boards. Drop 12 to whatever you need.. ???
> 
> $3


Hmm. Yes, eBay item # 121171591143 looks like it might do what I need. $4.38, free shipping, and item is located here in US, not China, so I should get it in a few days. This one comes with nice, easy connectors all ready to use for very easy wiring.

Although I'll look for one with the LED, too. All I need to do is test the output with my multimeter and turn the Pot screw until output voltage reads 5V though, right?

EDIT: $4.95 (also here in US) for one with the LED display. Item # 400763191780. Uses screw terminals, so perhaps even more convenient to wire than the other, although the board is much bigger due to the display.


----------



## O2surplus

jeffkrol said:


> Why not just use one of those cheap voltage dropping flea bay boards. Drop 12 to whatever you need.. ???
> 
> $3


 $3 parts from FleaBay are great if you're willing to wait. I could've also recommended using a $1 7805 regulator, but it's highly unlikely that "Kman" has one of those within easy reach. I went for the more likely & immediately gratifying scenario that there's an old unused cell phone charger laying around the house.:hihi:


----------



## kman

O2surplus said:


> $3 parts from FleaBay are great if you're willing to wait. I could've also recommended using a $1 7805 regulator, but it's highly unlikely that "Kman" has one of those within easy reach. I went for the more likely & immediately gratifying scenario that there's an old unused cell phone charger laying around the house.:hihi:


It's true, I lack one of those within easy reach, sadly.

I went with the $4.38 one I listed above, no display. It's located here in the US so the wait should not be too painful... probably this week. 

For the immediate gratification, I'll probably hook it up a charger, though, LOL! I just want it cleaner for the final product... it's crazy enough in that box as it is!

EDIT: I suppose long term if I really wanted, I could just order the straight 12V version, which is now available again at DealExtreme. (It was out of stock when I first ordered my parts.) It's only $13 and it would definitely clean up and simplify the wiring in my enclosure. It'd be a real chore to get that puppy in there, though, since it's sort of buried at the bottom, and already tightly wired in place. Hmmm...


----------



## kman

Thanks again, Renesis, for your sharp observation! This should clear the final hurdle to getting this thing in full operation! 

Btw, anyone have any thoughts on this question I posted last night?



kman said:


> Hey, side question:
> 
> Is there a way, with the iAqua interface, to go directly to one of the 4 preset light modes? Such as, for instance, if you're showing off a storm mode to your friends, how do you get back to "mid-sun"? For me, "mid-sun" is a defined light mode, with each channel at a specific level, and there is no easy way to jump back to it with the remote. (yes, I should have programmed M1-M4 with the various modes, and that would work, and I will, but meanwhile, I'm curious if there is a way to get there with the iAqua interface)
> 
> Other than using the remote, or waiting for the next scheduled light change, I cannot figure out if there is a way to get to a given preset mode within the interface. Seems like there should be, but if so, I haven't discovered it yet. The "resync lights" button in the light setup pages always seems to reset the lights to full sun. Which is great if that's the correct light time slot, but not so great if it's shortly before the tank goes into night mode...
> 
> EDIT: Companion question, for those with functional iAqua setups (with IR lights, such as Sat+ or E-Series): If you change the mode (manually, with the remote) to a dynamic preset, like sunrise/sunset, for instance, will the next scheduled light change still take place normally? I ask because you can't customize the dynamic modes, so a simple fade with the up/down arrows on the color channel wouldn't work on a dynamic mode.


----------



## O2surplus

kman said:


> Thanks again, Renesis, for your sharp observation! This should clear the final hurdle to getting this thing in full operation!
> 
> Btw, anyone have any thoughts on this question I posted last night?



I'm using the PWM outputs on mine, so I can't comment on the Current lights, but if you go into the "light modes" screen of the iAqua controller, you can toggle the lights between your preset "full sun", "mid day", "sunset/sunrise" & "moon light" settings. Just tap the symbol of whatever light mode you want and it should switch to that setting automatically. (at least that's how mine works -LOL):hihi:


----------



## kman

^^ Hmm. I don't think mine did that, but that's certainly what I would expect to happen, normally. I'll give it another try tonight.


----------



## kman

O2surplus said:


> $3 parts from FleaBay are great if you're willing to wait. I could've also recommended using a $1 7805 regulator, but it's highly unlikely that "Kman" has one of those within easy reach. I went for the more likely & immediately gratifying scenario that there's an old unused cell phone charger laying around the house.:hihi:


DUDE! You're not going to believe what I just found knocking around my box box o'Arduino stuff!

At some point, I bought a step down controller. eBay item # 161325489013. I can't recall why, but I think AH indicated I needed one at one point, before I bought your board.

The specs listed are:

Step down power module 
Input volt:7.5V-35V 
Output volt:5V 
output current:1.5A(MAX)
*Listing included: *
PCB board x1 
L7805 x1 
Heat sink x1 
M3*6 screw x1 
Male pin x8 
KF3.96-2P x2 
1N4007 x4 
470uf 50V capacitance x1 
100uf 50v capacitance x1 
4.7k resistance x1 
3mm LED x1 


This is *exactly* what I need to step down my 12V power supply's output to 5V, right? Of course, it's "some assembly required" *sigh* Time to heat up the soldering iron again...


----------



## renesis

kman said:


> DUDE! You're not going to believe what I just found knocking around my box box o'Arduino stuff!
> 
> At some point, I bought a step down controller. eBay item # 161325489013. I can't recall why, but I think AH indicated I needed one at one point, before I bought your board.
> 
> The specs listed are:
> 
> Step down power module
> Input volt:7.5V-35V
> Output volt:5V
> output current:1.5A(MAX)
> *Listing included: *
> PCB board x1
> L7805 x1
> Heat sink x1
> M3*6 screw x1
> Male pin x8
> KF3.96-2P x2
> 1N4007 x4
> 470uf 50V capacitance x1
> 100uf 50v capacitance x1
> 4.7k resistance x1
> 3mm LED x1
> 
> 
> This is *exactly* what I need to step down my 12V power supply's output to 5V, right? Of course, it's "some assembly required" *sigh* Time to heat up the soldering iron again...


Sounds perfect! Plenty of current for the relays. What's the amperage on your 12v supply?


----------



## O2surplus

kman said:


> DUDE! You're not going to believe what I just found knocking around my box box o'Arduino stuff!
> 
> At some point, I bought a step down controller. eBay item # 161325489013. I can't recall why, but I think AH indicated I needed one at one point, before I bought your board.
> 
> The specs listed are:
> 
> Step down power module
> Input volt:7.5V-35V
> Output volt:5V
> output current:1.5A(MAX)
> *Listing included: *
> PCB board x1
> L7805 x1
> Heat sink x1
> M3*6 screw x1
> Male pin x8
> KF3.96-2P x2
> 1N4007 x4
> 470uf 50V capacitance x1
> 100uf 50v capacitance x1
> 4.7k resistance x1
> 3mm LED x1
> 
> 
> This is *exactly* what I need to step down my 12V power supply's output to 5V, right? Of course, it's "some assembly required" *sigh* Time to heat up the soldering iron again...


LOL- So you had a 7805 "within easy reach" but forgot that you had it. Priceless! That will work perfectly to solve your 5V issue.:hihi:


----------



## kman

renesis said:


> Sounds perfect! Plenty of current for the relays. What's the amperage on your 12v supply?


13.5 amps. 

I think it will suffice.


----------



## kman

O2surplus said:


> LOL- So you had a 7805 "within easy reach" but forgot that you had it. Priceless! That will work perfectly to solve your 5V issue.:hihi:


Filed under "things I learned tonight":

1) I hate soldering PCBs. My soldering skills are merely "adequate" and putting this stuff together is a PITA. (ok, admittedly I sorta already knew this, but was reminded tonight)

2) That offhand comment you made a few pages ago about needing a common ground with the shield is correct. I can supply 5V power from the little breakout power regulator (or a standalone 5V power supply), but I ALSO have to connect the ground side (black wire) to the Ground wire from the shield, or nothing happens. Those 5V signalling lines need a return path. So Y-connector it is.

I learned that last one while experimenting with standalone power supplies. Fortunately I figured it out before hacking up anything I cared about. (My spare Treo charger will never charge another Treo, but I can live with that, LOL)


----------



## kman

So... apparently my wiring is reversed? The good news is it's all working now. Each outlet switches on and off, controlled by the iAqua interface. Except backwards. On is off and off is on. I'm guessing I need to move each of the 8 input wires on the relay to the opposite side?

I'll wait until midnight, I think. Too many light ramps going on between now and then. I think I'm going to adjust that schedule a bit, too...


----------



## kman

And, as of approx 12:30am, my tank is now 100% under iAqua control. Fingers crossed that all goes well tomorrow!


----------



## O2surplus

kman said:


> And, as of approx 12:30am, my tank is now 100% under iAqua control. Fingers crossed that all goes well tomorrow!



So you stayed up late staring at your tank?







All I can say is- Good job & get some rest!:hihi:


----------



## shift

I think you just inspired me to add a touch screen to my next build! Looking awesome


----------



## jeffkrol

kman said:


> So... apparently my wiring is reversed? The good news is it's all working now. Each outlet switches on and off, controlled by the iAqua interface. Except backwards. On is off and off is on. I'm guessing I need to move each of the 8 input wires on the relay to the opposite side?
> 
> I'll wait until midnight, I think. Too many light ramps going on between now and then. I think I'm going to adjust that schedule a bit, too...


Depends on the relay.. some have NO or NC contacts or both...
BUT that is on the output side.. Input "shouldn't" make a difference.. it is just a coil but it could.. fun non-answer



> For "most" DC type relays polarity does NOT matter. There are "some" relays that have a built in diode across the coil to absorb back emf when driven by a semiconductor device and must be wired correctly such that the diode is reverse biased in normal use. So, check the type of relay you are using, i.e. whether it has a built in diode AND which pins the anode/cathode are wired. Often a diode will be shown in the graphic on the relay or check the datasheet for the specific relay you are using.
> 
> 
> Some relays use a resistor to absorb the back emf, so those have no coil polarity requirement.
> 
> Anyhow, I'd question the blanket statement that coil polarity is important with a DC relay. It is IF it has a built in diode..


fun w/ relays..
http://www.bcae1.com/relays.htm


----------



## kman

O2surplus said:


> So you stayed up late staring at your tank?
> 
> 
> 
> 
> 
> 
> 
> All I can say is- Good job & get some rest!:hihi:


Late for me is nowhere near that time.  I had lots of time to gaze adoringly at my handiwork. 

Of course, at some point in cleaning up the wiring (a little bit... I have a long way to go in that dept) and adding some more quick connectors, I managed to reverse the polarity in my dosing pumps. So this morning, when I eagerly watched on for the magic to happen, to my horror I watched the pump suck water out of my tank and into the macro solution. *sigh* I fixed it easily, fortunately, but it looks like I'm going to get to mix up a new batch of EI ferts sooner rather than later.

Other than that minor toe stubbing, all seems well.  Biggest issue is designing a secure method of holding the IR transmitter and receiver(s) in place, because the temporary solution I have now isn't good, and sometimes the receivers twist out of position and one of the lights misses commands, grrr.

I'm holding off, though, because I just bit the bullet and ordered an Ecoxotic E-Series to replace my two Sat+ lights. Woohoo! 

Now I just have to contact AH and find out for sure what I need to change in the code to switch from Sat+ control to E-Series control. I think I found the commented-out code in the iAqua sketch, but I want to be sure. I wonder when he gets back from his trip? Or is anyone else using the E-Series lights who can confirm?

Bump:


jeffkrol said:


> Depends on the relay.. some have NO or NC contacts or both...
> BUT that is on the output side.. Input "shouldn't" make a difference.. it is just a coil but it could.. fun non-answer
> 
> fun w/ relays..
> http://www.bcae1.com/relays.htm


These relays have both. Each relay has 3 screw ports, middle one is the output, and Normally Open input is on one side of it, and Normally Closed is on the other. I had a 50-50 chance of guessing which one I needed, and guessed wrong. The issue was then masked by the always on issue I was having due to voltage.


----------



## kman

Just for purposes of documentation:

I traded messages with AnotherHobby, briefly (he's alive!), and here is the information needed to change the iAqua code from controlling the Current Sat+ lights, over to the Ecoxotic E-Series lights. (NB: I would _imagine_ the same modifications would work for the Sat+ PRO lights, in terms of max steps, etc., but someone will need to verify how the remote codes differ, if at all, from the Sat+, to see if there are any other changes needed)

First, turn on Line numbering in your Arduino software, if you don't already have it on. (On a Mac, it's Arduino, Preferences, and just check "Display Line Numbers". It's somewhere analogous on a PC.) It just makes things easier.

The Sat+ IR Remote Control codes are all written out roughly around line 388 (I've added a couple of lines so I can use the faster SD card library from RobsWorld, so I have several lines of non-stock code in my iAqua, but if you have stock code, the IR code section should still start +/- 5 lines from 388... it's quite obvious).

Immediately below that big block of code, there is code that is commented out which references the Exocotic E-Series lights. All you need to do is reverse that: Comment out the Sat+ code section, and uncomment the E-Series section instead. 

The only other thing you'll need to do is change this line:

int maxRGBW = 42;
to
int maxRGBW = 100;

(although strangely, mine was already on 100 and worked fine even with my Sat+ lights?)

I'll report back on the success or failure of this modification after I have it run through a few usage cycles. 

As you read the code, you'll note that the full IR code setup for the E-Series has not yet been mapped out and documented. But the important buttons all have, and since most people using this will mostly be using custom colors to dial everything in, that should not be a problem. Otherwise, if you do need buttons that have not been mapped out yet, you'll need an IR receiver and some simple code to map that out and add it in. See the thread for the older, simpler IR light controller for instructions on how to make an easy reader (it may be able to be integrated into iAqua, but probably simpler to stick with the simpler code and controller): Guide: Arduino based LED controller for Current Satellite LED+


----------



## slobodan

Hi all,

I just finished reading the whole thing and you guys are doing an awesome job here.
I'll be joining this thread and will be building it with arduino due so I got into a problem where I can't load your current .535/.raw files.
Does anyone have original .bmp files that I can use to convert to my version of .535/.raw files?

Thanks,
Slobodan


----------



## kman

slobodan said:


> Hi all,
> 
> I just finished reading the whole thing and you guys are doing an awesome job here.
> I'll be joining this thread and will be building it with arduino due so I got into a problem where I can't load your current .535/.raw files.
> Does anyone have original .bmp files that I can use to convert to my version of .535/.raw files?
> 
> Thanks,
> Slobodan


You should be able to generate them from the Photoshop files that are posted on the first page of the thread.


----------



## slobodan

thanks kman, photoshop files don't contain all images just some samples, at least file I downloaded. 
Anyway, I just noticed that there are PNG files posted so I should be able to get bmp s out of them.

thank you again..


----------



## hollp

how do I change the temperature unit from F to C?


----------



## kman

deleted...


----------



## fietsenrex

just use search and search for TempC
and change ((tempC*1.8)+32) into (tempC) you're done

only thing is that it stil displays the F symbol if you want that changed you'll need to change that .raw file

Bump: by the way.. 
I have an issue with my dosing... I tapped the fill button and now the Iaqua crashes every time I enter the dosing setting menu.. 

has anyone had that problem as well or does anyone know how to fix it?
I reloaded the code several times also the original Iaqua code and rebooted the device but nothing seems to solve the problem..


----------



## kman

^^ Could you have a short or a problem with one of the pumps? The code seems pretty stable for a number of people, aside from small glitches here and there that aren't substantive.


----------



## fietsenrex

well last week it worked fine while i wass testing the code..
only thing that didn't work were the pumps themself but i didn't have enough juice.. still don't by the way xD
but today i was fooling around in the settings for the dosing amount and the canister quantity and all of the sudden it stopped.. 
I can check for shorts but I haven't touched the hardware since the build.

is it possible that it cant handle a high quantity of remaining doses? higher then 20 for example


----------



## kman

fietsenrex said:


> well last week it worked fine while i wass testing the code..
> only thing that didn't work were the pumps themself but i didn't have enough juice.. still don't by the way xD
> but today i was fooling around in the settings for the dosing amount and the canister quantity and all of the sudden it stopped..
> I can check for shorts but I haven't touched the hardware since the build.
> 
> is it possible that it cant handle a high quantity of remaining doses? higher then 20 for example


Interesting. That's possible, I suppose, but seems improbable that AH would have missed something like that. He used to use larger containers for his auto-dosers, so he is quite familiar with using larger quantities, even if the tubes he and I currently use are smaller. 

You may need to check through the code to see, or else wait until someone else can check it for you. (or AH can answer, when he has time to return to this thread)


----------



## fietsenrex

can't find anything in the code that looks like it's limiting the amount of remaining doses, but I don't know exactly what to look for..
it's powered down for 4 hours now and i'll reboot it in the morning in about 10 hours
hopefully it has lost the hick-up..


----------



## hollp

fietsenrex

thank you, I changed mine to c

check your engine had a similar problem with your


----------



## fietsenrex

well, the problem still excists.. i loaded a random code from the library and loaded the iaqua code again but that didn't solve anything..

wiring seems okay and i touched nothing since it all worked..

reloaded an untouched code still have the same problem...


----------



## robsworld78

Yeah that's an issue, I found it to be if a number went over 99 and into 3 digits it would do this. It also does it on temperature settings, if you go over 99 it will loop and not work. 

To solve this you need to change the eeprom values for the dosing pump settings to numbers under 99. I don't have the sketch in front of me so not sure what spot they are but there are some notes at the top of the sketch saying the eeprom locations. Just be sure not to go extreme on any of the numbers or this will happen. The math also can't exceed 99, so say you have 1000ml reseviour and only pump 10ml per dose that is 100 doses and will break the code.

EDIT: An easier way is to load the eeprom clear sketch under examples and then load iAqua and the first time run will activate again and you should be ok.


----------



## fietsenrex

thanks problem is now solved and now i know how to fix it when i screw up again 

and I did xD same reason.. 
isn't there a way to allow the iaqua to have 3 digit numbers?


----------



## BeachBum2012

Wow. I was pointed towards this thread last week. I finally got around to looking at it yesterday. After reading through the entire thing in one day, I'm thoroughly impressed. I thought about trying something like this a few years back but have no clue about Arduinos. After going through all of this a few more times I might just give it a shot for my upcoming tank build.

The generosity of this community never ceases to amaze me. You guys are truely awesome.


----------



## robsworld78

Glad it worked. I don't think its really a 3 digit issue, I'm not really sure what it is, I discovered this early when I was doing my controller and couldn't figure out why it was doing that. The reservoir setting can accept a 255 value but when it does the math the doses can't go over 99. I couldn't find why it was doing that, didn't make sense, its probably a variable type or something. I didn't care much as those kinds of high settings should never be required, 99 doses is more than a year. So what I did was have it check the dose quantity when changing settings and if my change was going to make the doses go over 99 it won't allow me to make them. I did the same with the heater warning for tank although I'll probably change that as I want warnings on all 3 probes that I'm using and its possible to be over 100 as one is for a light. What I did probably won't work on iAqua as I'm doing my own version. I started with the iAqua sketch and have been butchering since. :hihi:


----------



## Fernando Garcia

fietsenrex said:


> thanks problem is now solved and now i know how to fix it when i screw up again
> 
> and I did xD same reason..
> isn't there a way to allow the iaqua to have 3 digit numbers?



To save values higher than 255 in the EEPROM is needed use this library:

http://playground.arduino.cc/Code/EEPROMWriteAnything

Answering your PM, you can install the code directly from here: 
https://codebender.cc/sketch:78649#IAqua.ino


----------



## fietsenrex

is there anyone who has PH added to the Iaqua?
I've started adding this devicehttp://www.dfrobot.com/index.php?ro...duct_id=1025&search=ph+probe&description=true
but for somebody who is new to arduino and coding it is quite a challenge.. 

edit:
I already created a new page for the PH settings in the menu and al the symbols and buttons work
I also have copied the PH routine example and told the code that pin a10 is the PH sensor pin



Fernando Garcia said:


> To save values higher than 255 in the EEPROM is needed use this library:
> 
> http://playground.arduino.cc/Code/EEPROMWriteAnything
> 
> Answering your PM, you can install the code directly from here:
> https://codebender.cc/sketch:78649#IAqua.ino


thnx fernando.

but I'm getting an error..

fernandoiaqua.ino:114:19: fatal error: SdFat.h: No such file or directory
compilation terminated.
Fout bij compileren.

I've placed all of the files in the same folder, and created and loaded the libraries..


----------



## Fernando Garcia

Add this library: https://github.com/greiman/SdFat/archive/master.zip

You can't install directly from browser on codebender?


----------



## fietsenrex

nope, it says it has an error compiling and that is all..

Bump: and now it works just fine...

Bump: still can't get it to compile on my laptop.. only in the browser..


----------



## fietsenrex

guess I'm stuck with the browser version to upload all the code...

good news is that thanks to fernando I can now load numbers that have more than 2 digits


----------



## kman

So I've had an odd issue the last few days.

Not sure how or why exactly this is happening, because I thought it was a fluke at first, but now, 3 nights in a row, something is clearly up.

For the past 3 nights my iAqua has locked up. The icon for the circulation pump (my surface skimmer) may be the culprit, I'm speculating, due to timing. I'll try to pay closer attention now that I know there is an issue. My skimmer is only on for 2 hours, then shuts off for the rest of the lighting cycle. But late in the evening, at first, I noticed the lights weren't ramping, and the lights were stuck on full daylight mode. The interface was completely unresponsive. I restarted, and all went to normal, and I mentally wrote it off as a fluke. The second night, though, it seems like the same thing happened. I confirmed, last night, that it was stuck on full sun mode, and noticed the only thing "moving" was the circ pump icon, which looks sort of static-y and flickering, like it's continually trying to reload. The only way to fix it, again, since all was unresponsive, was to kill the power (which kills the power to EVERYTHING, of course). Then it started up normally and all was well, again. Once it starts back up, everything goes to normal (although it seems to take a minute for the temp sensor to stabilize, and it starts up at like -196 degrees in alarm mode, and then goes to normal after a few minutes and I have to reset the red warning color). Ramping resumes pursuant to schedule, etc., and all is well for the rest of the night. Everything turns on normally, too. Tonight, though the same thing happened yet again. This time I caught it earlier, and after 3 nights in a row, I know there's an issue. I didn't think to look at the clock to see if that was frozen as well, but I will tomorrow.

Anyone seen anything like this, or have thoughts on how to fix it? I'll do more testing tomorrow evening, when things cycle on again.


----------



## fietsenrex

do you supply the arduino with 12V?
an easy fix could be to put a timer on the power supply to your arduino and switch it of for a minute in order to reboot the arduino.

why don't you set the internal arduino clock to a couple of minutes before it freezes and see what happens?


----------



## kman

fietsenrex said:


> do you supply the arduino with 12V?
> an easy fix could be to put a timer on the power supply to your arduino and switch it of for a minute in order to reboot the arduino.
> 
> why don't you set the internal arduino clock to a couple of minutes before it freezes and see what happens?


I'm not certain what time it's freezing, at this point... I just know it's frozen sometime after the skimmer goes off (because the skimmer is off) and the skimmer/crc pump icon is sketchy, so it's just an educated guess.

I'll hopefully be testing it out tomorrow. With any luck I'll be home in time to catch it and then I can keep an eye as the various timers fire, but I've been getting home late for the past few nights.


----------



## majid_gh7168

*lcd 7 inch*

hi
please link iAqua for lcd 7 inch:help:


----------



## fietsenrex

majid_gh7168 said:


> hi
> please link iAqua for lcd 7 inch:help:


does it run at all on a 7"?


----------



## majid_gh7168

fietsenrex said:


> does it run at all on a 7"?


yes
i can run to lcd 3.2
can not run to lcd 7 inch


----------



## fietsenrex

then you can rescale everything yourself and map out the buttons etc


----------



## majid_gh7168

can not set the size to 7 inches


----------



## fietsenrex

don't know.. but I do know that you can map out everything on the different screens using X and Y coordinates, you can also create new buttons and images etc


----------



## simple

Hey O2surplus, how is the iAqua Shield ver2 coming along? I'd like to build one. 
Also for the parts list, (once you post the new ver) am I correct by opening IAquaShield.sch in Eagle PCB then going to Tools - Statistics - Part - Save Report? Then this would be all the info's that I'd need.


----------



## rottison

majid_gh7168 said:


> can not set the size to 7 inches


 
There isn't a 7 inch version released yet of this


----------



## fietsenrex

I've got an issue
I connected the LDD-H to the PWM outputs and the +/- to the powersupply and the arduino 12v
connected the leds and wanted to test the dimming.. 
but nothing works there isn't even a PWM signal on the pin (assuming you can check for a 5v output signal with a fluke 287)
I didn't build in a pulldown resistor assuming I won't need one

here is the current code I'm using
https://codebender.cc/sketch:78688


----------



## renesis

fietsenrex said:


> I've got an issue
> I connected the LDD-H to the PWM outputs and the +/- to the powersupply and the arduino 12v
> connected the leds and wanted to test the dimming..
> but nothing works there isn't even a PWM signal on the pin (assuming you can check for a 5v output signal with a fluke 287)
> I didn't build in a pulldown resistor assuming I won't need one
> 
> here is the current code I'm using
> https://codebender.cc/sketch:78688


I haven't looked at the code, but how are your power lines connected?

The arduino should have 2 wires going from it to the LDD-H Driver. PWM, and GND. 

The LDD-H driver should have the LED +/- connected (Vout
+/ and Vout- on the datasheet), and then the Vin+ / Vin- for power (both to supply). Vin- should also connect to the Arduino GND. PWM can then be connected to the arduino. 

You can leave the PWM wire disconnected to make sure your wiring is correct, that should turn the LEDs on to full brightness. 

You should also put on pull-DOWN resistors from the PWM channel to GND, this will prevent the lights from going on full brightness when first turned on, or if the Arduino malfunctions. But this won't affect testing the PWM or LEDs.


----------



## fietsenrex

disconected the arduino and both are on full bright... 
what kind of resistor? and will it affect the PWM functionality when it's in normal operation?

I've connected the Vin in series and the Vout + of the RGB in series all other connections have separate wires


----------



## renesis

10k resistor should do fine. It will not affect the PWM operation, it just prevents a 'Full ON' condition if the PWM signal fails.

If they turn on when the PWM cable is disconnected, then that means the Arduino isn't sending out a signal. 

Try one more test, connect the PWM cable to 5V on the Arduino. This should light the LEDs on full. If this works, then I'd suspect it has to do with the code, or an issue with the PWM pin itself. I've had a couple boards that have had pins go bad in the past.

Edit:

Also, what do you mean about the Vin in series? Multiple drivers in series? or the Arduino in series with the driver?

If the Arduino is in series with the Driver, then the PWM will not work as they have different GND references. They need to be in parallel, but only need to share the same GND, and not the +Voltage.


----------



## fietsenrex

nope the arduino an LED have a seperate power supply

but now I've got another issue.. RGB work and white will come soon but my temperature is stuck at -127C....


----------



## renesis

DS18B20 sensor? Do you have the 4K7 resistor installed?


----------



## fietsenrex

yes and yes
and now the internal clock screws up :S

found a lose 5V wire... now everything is sort of normal..


----------



## kman

kman said:


> So I've had an odd issue the last few days.
> 
> Not sure how or why exactly this is happening, because I thought it was a fluke at first, but now, 3 nights in a row, something is clearly up.
> 
> For the past 3 nights my iAqua has locked up. The icon for the circulation pump (my surface skimmer) may be the culprit, I'm speculating, due to timing. I'll try to pay closer attention now that I know there is an issue. My skimmer is only on for 2 hours, then shuts off for the rest of the lighting cycle. But late in the evening, at first, I noticed the lights weren't ramping, and the lights were stuck on full daylight mode. The interface was completely unresponsive. I restarted, and all went to normal, and I mentally wrote it off as a fluke. The second night, though, it seems like the same thing happened. I confirmed, last night, that it was stuck on full sun mode, and noticed the only thing "moving" was the circ pump icon, which looks sort of static-y and flickering, like it's continually trying to reload. The only way to fix it, again, since all was unresponsive, was to kill the power (which kills the power to EVERYTHING, of course). Then it started up normally and all was well, again. Once it starts back up, everything goes to normal (although it seems to take a minute for the temp sensor to stabilize, and it starts up at like -196 degrees in alarm mode, and then goes to normal after a few minutes and I have to reset the red warning color). Ramping resumes pursuant to schedule, etc., and all is well for the rest of the night. Everything turns on normally, too. Tonight, though the same thing happened yet again. This time I caught it earlier, and after 3 nights in a row, I know there's an issue. I didn't think to look at the clock to see if that was frozen as well, but I will tomorrow.
> 
> Anyone seen anything like this, or have thoughts on how to fix it? I'll do more testing tomorrow evening, when things cycle on again.


So I wrote the above post on 1/29 (Thursday). That evening, everything worked totally normally with the iAqua. No lockups, everything worked as it's supposed to. See photos taken at 7:02pm and 9:48pm Thursday (which brackets the "problem time") (ignore the temp issue for now, more on that below):

















Friday evening it locked up again. This photo was taken shortly after midnight (so technically Saturday), and you can see the display is still showing 8:59pm on Friday. You can also see the distortion in fan icon (Circ Pump) (live it looks almost like static, with the display repeatedly trying to refresh and redraw that icon but failing). Recall my circ pump is set to turn off at 9pm, so this freeze seems to happen (sometimes) around the time it is trying to change states. The Circ Pump switches off, and that's when things go wonky. Sometimes.










Saturday evening, everything was fine. No lockup at all.

Sunday evening, it locked up again. Same distortion on the Circ icon, and same time: 8:59pm:










I happened to be standing right over it when it happened. I restarted it immediately, and you can see all is normal at 9:01pm:










I haven't had a chance to see if the lockup is consistent on specific days of the week (if it's happening M-W-F-Sun, for instance), but I'll continue to monitor it.

There's another issue where it keeps losing connection to the temp probe, or something, and defaults to -196.6 degrees, but that's way less important. Obviously I want that to be reliable as well, but it's only a backup to the heater's built-in temp controls anyway. The full system freeze is a much bigger issue, because once frozen, the lights stay on full blast, co2 stays on, etc., until I power cycle the whole system.


----------



## fietsenrex

have you tried switching the skimmer to AUX1 or 2 if the sockets are free and clear the circulation schedule and let the AUX control your skimmer?

I notice that the failure occurs on odd days (1st, 3rd, 5th, 7th day of the week) is there something else those days that might disrupt the schedule?

does the dosing work correctly? or do you dose your ferts daily?

Bump: have you treid switching the skimmer to AUX1 or 2 if the sockets are free and clear the circulation schedule and let the AUX control your skimmer?

I notice that the failure occurs on odd days (1st, 3rd, 5th, 7th day of the week) is there something else those days that might disrupt the schedule?

does the dosing work correctly? or do you dose your ferts daily?


----------



## O2surplus

kman said:


> So I wrote the above post on 1/29 (Thursday). That evening, everything worked totally normally with the iAqua. No lockups, everything worked as it's supposed to. See photos taken at 7:02pm and 9:48pm Thursday (which brackets the "problem time") (ignore the temp issue for now, more on that below):
> 
> 
> 
> Friday evening it locked up again. This photo was taken shortly after midnight (so technically Saturday), and you can see the display is still showing 8:59pm on Friday. You can also see the distortion in fan icon (Circ Pump) (live it looks almost like static, with the display repeatedly trying to refresh and redraw that icon but failing). Recall my circ pump is set to turn off at 9pm, so this freeze seems to happen (sometimes) around the time it is trying to change states. The Circ Pump switches off, and that's when things go wonky. Sometimes.
> 
> 
> 
> Saturday evening, everything was fine. No lockup at all.
> 
> Sunday evening, it locked up again. Same distortion on the Circ icon, and same time: 8:59pm:
> 
> 
> 
> I happened to be standing right over it when it happened. I restarted it immediately, and you can see all is normal at 9:01pm:
> 
> 
> 
> I haven't had a chance to see if the lockup is consistent on specific days of the week (if it's happening M-W-F-Sun, for instance), but I'll continue to monitor it.
> 
> There's another issue where it keeps losing connection to the temp probe, or something, and defaults to -196.6 degrees, but that's way less important. Obviously I want that to be reliable as well, but it's only a backup to the heater's built-in temp controls anyway. The full system freeze is a much bigger issue, because once frozen, the lights stay on full blast, co2 stays on, etc., until I power cycle the whole system.



That's some odd behavior? I've never experienced any thing like that with my iAqua builds. I'm stuck wondering what the source of your problem could be? Is it hardware related? or software? Have you checked your "schedule" to make sure there are no timing "overlaps"? That's all I can come up with right now.


----------



## kman

fietsenrex said:


> have you treid switching the skimmer to AUX1 or 2 if the sockets are free and clear the circulation schedule and let the AUX control your skimmer?
> 
> I notice that the failure occurs on odd days (1st, 3rd, 5th, 7th day of the week) is there something else those days that might disrupt the schedule?
> 
> does the dosing work correctly? or do you dose your ferts daily?





O2surplus said:


> That's some odd behavior? I've never experienced any thing like that with my iAqua builds. I'm stuck wondering what the source of your problem could be? Is it hardware related? or software? Have you checked your "schedule" to make sure there are no timing "overlaps"? That's all I can come up with right now.


Strange, for sure.

This is the first time I've been monitoring the issue long enough to notice the "every other day" aspect. Still hasn't been a full week, so hard to say for sure.

The power schedule shouldn't really offer any opportunity for overlaps that would affect the circ pumps. (I think I tweaked it slightly after this shot was taken, but you see what I mean)










I think I'm going to watch it for the rest of this week, and see if the "every other day thing" continues... and what happens on Friday, since there's an odd number of days in the week and it can't stay M-W-F-Sun if it's actually alternating.

My ferts fire off perfectly, every time. No problems there. They go at 9:45am, so no overlap, from a scheduling point. M-W-F for Macros, Tu-Th-Sat for Micros, and nothing on Sunday.

I can try moving it to Aux1, for sure, but first I want to monitor it this week to see if the alternating days thing continues. If Aux1 fixes it, though, I suppose that means there's something wrong with the Circ pump channel? Actually, (again, I'll wait) an interesting test would be to swap the wires running to the AC relay board (Aux1 and Circ) because that at least would let the same fan icon be used for the skimmer.


----------



## fietsenrex

I would just plug it in one of the AUX sockets and change it in the IAqua and see what happens or change the pins (in the code or physically for the coupler) 
if you swap wires in the AC sockets maybe you rule out a faulty socket


----------



## kman

fietsenrex said:


> I would just plug it in one of the AUX sockets and change it in the IAqua and see what happens or change the pins (in the code or physically for the coupler)
> if you swap wires in the AC sockets maybe you rule out a faulty socket


Yeah, that's pretty much the plan. I assume there's something faulty in there that's only affecting the Circ channel, but it's REALLY bizarre that it's only happening on alternate days (so far... it's been less than a week, so no way to know just yet). That would tend to implicate software somehow, I just don't get how that could be.

But after I give it a few more days to see if the alternate days pattern continues, I'll swap move it to Aux 1 to see that helps, and if so, I'll start swapping wires around to further isolate the issue to a bad relay board channel, bad outlet, or bad iAqua shield port. If it's solely a faulty wire, though, I can't see how it can continue on a rigid alternate day schedule, so I want to nail down that further, first.


----------



## robsworld78

That's odd kman, it certainly seems to be circulation off alarm that is causing the issues as it happens at 8:59 and probably 59 seconds. 

Any chance a ramp is going on at this time? I hope so cause then maybe I have the solution but again it still doesn't make sense its locking up, what I'm thinking it should miss the alarm and the circ just stays on, but its possible it locks as well.

Anyways there is a delay in the ramping as it needs time to send the IR signal to your lights, plus there are a couple other very short delays in the main loop. The ramping delay is 333 milliseconds, which is quite long and it will always be hitting this delay while fading. So during this period (if you're using IR lights) the processor is quite busy with that task. Technically when a delay is running the controller is locked at that delay and not reading any other code, so if something was to happen and it was stuck at that delay it could skip it.

The code is delay(333); when it should be Alarm.delay(333). The Alarm part comes from the alarm library and should be used with all delays, using this ensures an alarm will never be skipped because of a delay. Its a very nice feature. It's an easy change if you want to try that.

EDIT: just noticed in your picture when locked the light schedule had a ?. Do you know why?

Bump:


fietsenrex said:


> here is the current code I'm using
> https://codebender.cc/sketch:78688


I don't think that was very nice uploading AnotherHobby's hard work and removing his name from it?


----------



## kman

robsworld78 said:


> That's odd kman, it certainly seems to be circulation off alarm that is causing the issues as it happens at 8:59 and probably 59 seconds.
> 
> Any chance a ramp is going on at this time? I hope so cause then maybe I have the solution but again it still doesn't make sense its locking up, what I'm thinking it should miss the alarm and the circ just stays on, but its possible it locks as well.
> 
> Anyways there is a delay in the ramping as it needs time to send the IR signal to your lights, plus there are a couple other very short delays in the main loop. The ramping delay is 333 milliseconds, which is quite long and it will always be hitting this delay while fading. So during this period (if you're using IR lights) the processor is quite busy with that task. Technically when a delay is running the controller is locked at that delay and not reading any other code, so if something was to happen and it was stuck at that delay it could skip it.
> 
> The code is delay(333); when it should be Alarm.delay(333). The Alarm part comes from the alarm library and should be used with all delays, using this ensures an alarm will never be skipped because of a delay. Its a very nice feature. It's an easy change if you want to try that.
> 
> EDIT: just noticed in your picture when locked the light schedule had a ?. Do you know why?


Sometimes after a restart it doesn't know what the light state is so unless I manually resync it shows the ? until the next timer fires and the graphics update.

Interesting point about the ramp. There may indeed be a ramp starting up around that time. Perhaps I'll tweak my runtime to start and end at a time where there is definitely no ramping happening, just for kicks.


----------



## Fernando Garcia

Hi!

You can try add a watchdog while can't find the problem so, when the board hangs after some seconds will restart.

Here an example.

https://codebender.cc/sketch:80258

Best regards.


----------



## robsworld78

That's disappointing, I redid the startup so it always knew or was suppose to. I've never had an issue like that so maybe that's because of the IR lights.

If you placed the line below at the top of your loop() function, open the serial monitor in the IDE and run a ramp, it would be interesting to see how long it takes to rewrite this line.



Code:


Serial.println("New Loop");


----------



## kman

I'm loathe to make too many changes to AH's code, because I feel like at some point he's going to swing back by and make some updates and improvements, and then I'll have to keep track and recreate all the changes again!

I'll take a look at this tonight, though.


----------



## robsworld78

I understand and that's why I don't mention these little things as they aren't very important but thought it could be why you are having issues. Plus its a very small change and the 2nd thought was just a test to can see if fading is slowing things down. After testing you will want to remove that line. It definitely sounds like software, can't imagine the hardware would do this.


----------



## kman

Minor Point of interest re my freezing issue:

No freeze tonight. Normal operation. This continues the alternate-days theory.










Also: The time cut-off for the circ pump (21:00) is NOT during a ramp.


----------



## fietsenrex

robsworld, i removed some comments etc becuase I didn't need them and that was one of them.. 
small mods to the code to make it more convenient for me to work with 

I meant no offense in any way.

Bump: the circ switches on while ramping, but the switch off is way clear of any ramping..


----------



## kman

fietsenrex said:


> the circ switches on while ramping, but the switch off is way clear of any ramping..


Right. The "off" timer is what's freezing things up, and there's no ramping around the off time. The switch on _does_ coincide with an earlier ramp, but it's long over by the time the time to shut off rolls around.

I suppose I could adjust the start time to a few minutes later, which would entirely avoid the ramp, but I doubt a ramping start is what's interfering with the shut off.


----------



## robsworld78

I didn't mean to come of harsh fietsenrex, but the first 5 lines should be there or at least some recognition to AH, just my opinion. 

Don't know what to think kman, its probably nothing to do with the delay as it should just skip the event. Every 2nd day is the killer, should happen every day or not all. Maybe to do with dosing as that's every 2nd day but doesn't make sense either.

I see your circ image is still messed up, maybe its slightly corrupt if that's possible. Its worth a shot to reformat the card and load the images again.


----------



## kman

robsworld78 said:


> I what to think kman, its probably nothing to do with the delay as it should just skip the event. Every 2nd day is the killer, should happen every day or not all. Maybe to do with dosing as that's every 2nd day but doesn't make sense either.
> 
> I see your circ image is still messed up, maybe its slightly corrupt if that's possible. Its worth a shot to reformat the card and load the images again.


I know, it's crazy, right? Yeah, reloading the card is definitely on my list. Although you'd think that would be all or nothing.

The every other day thing is killing me. Now I kinda want to see how long it continues like this.  I'm curious about what will happen when the days overlap...

As to the iAqua code, I agree. It's open source, but as a courtesy the original author who did the lion's share of work and design should have a credit in the comments at the top.


----------



## robsworld78

Yes, I think we need a few more clues to figure this one out, least you have a good spirit about it. :hihi:


----------



## jmh474

So iv finely got my screen, as some people my know i was sent the wrong screen a 32 pin but iv now got my 40 pin every thing is put together iv just got to up load the code to the sd and arduino, so i know what im doing tonight wish me luck lol

Sent from my GT-S5360 using Tapatalk 2


----------



## fietsenrex

good luck 

I've got an issue with my leds to figure out... none are responding and green is allways on full bright and white is sometimes off and sometimes in dim the other drivers don't respond to removing the pwm wire.. 
allready removed the pull down resistors

ugh yesterday I had a working system.. today i placed everything the way i wanted it and nothing happens... 
I accedently swapped the positive and negative lead on my power supply so I hope I didn't fry my drivers.
swapped some PWM pins in the code but that doesn't work

I also added the credits back in


----------



## mistergreen

Any while() loops in this code?
Usually freezing occurs inside an infinite loop or the arduino crashed due of memory leaks.


----------



## robsworld78

Not really to many while()'s, a couple in fading. I was thinking about the memory but there's lots left. Funny things don't start happening until 75% full. I've run it as high as 85% and never had any lockups, just strange behavior.


----------



## jmh474

please help im getting this error 

Arduino: 1.5.8 (Windows 7), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

sketch_feb04a.ino:6:1: error: 'time_t' does not name a type
sketch_feb04a.ino:37:1: error: 'time_t' does not name a type
sketch_feb04a.ino:40:1: error: 'time_t' does not name a type
iAqua.ino:157:1: error: 'IRsend' does not name a type
iAqua.ino: In function 'void setup()':
iAqua.ino:464:6: error: redefinition of 'void setup()'
sketch_feb04a.ino:1:6: error: 'void setup()' previously defined here
iAqua.ino:495:19: error: 'syncProvider' was not declared in this scope
iAqua.ino: In function 'void loop()':
iAqua.ino:656:6: error: redefinition of 'void loop()'
sketch_feb04a.ino:6:6: error: 'void loop()' previously defined here
iAqua.ino:758:36: error: 'irsend' was not declared in this scope
iAqua.ino:759:41: error: 'irsend' was not declared in this scope
iAqua.ino:760:41: error: 'irsend' was not declared in this scope
iAqua.ino:761:41: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void processMyTouch()':
iAqua.ino:3088:29: error: 'irsend' was not declared in this scope
iAqua.ino:3106:29: error: 'irsend' was not declared in this scope
iAqua.ino:3123:29: error: 'irsend' was not declared in this scope
iAqua.ino:3140:29: error: 'irsend' was not declared in this scope
iAqua.ino:3244:31: error: 'irsend' was not declared in this scope
iAqua.ino:3245:31: error: 'irsend' was not declared in this scope
iAqua.ino:3253:31: error: 'irsend' was not declared in this scope
iAqua.ino:3254:31: error: 'irsend' was not declared in this scope
iAqua.ino:3262:31: error: 'irsend' was not declared in this scope
iAqua.ino:3263:31: error: 'irsend' was not declared in this scope
iAqua.ino:3271:31: error: 'irsend' was not declared in this scope
iAqua.ino:3272:31: error: 'irsend' was not declared in this scope
iAqua.ino:3282:13: error: 'irsend' was not declared in this scope
iAqua.ino:3301:36: error: 'irsend' was not declared in this scope
iAqua.ino:3302:41: error: 'irsend' was not declared in this scope
iAqua.ino:3303:41: error: 'irsend' was not declared in this scope
iAqua.ino:3304:41: error: 'irsend' was not declared in this scope
iAqua.ino:3325:31: error: 'irsend' was not declared in this scope
iAqua.ino:3330:31: error: 'irsend' was not declared in this scope
iAqua.ino:3335:31: error: 'irsend' was not declared in this scope
iAqua.ino:3340:31: error: 'irsend' was not declared in this scope
iAqua.ino:3375:13: error: 'irsend' was not declared in this scope
iAqua.ino:3397:13: error: 'irsend' was not declared in this scope
iAqua.ino:3419:13: error: 'irsend' was not declared in this scope
iAqua.ino:3441:13: error: 'irsend' was not declared in this scope
iAqua.ino:3463:13: error: 'irsend' was not declared in this scope
iAqua.ino:3485:13: error: 'irsend' was not declared in this scope
iAqua.ino:3507:13: error: 'irsend' was not declared in this scope
iAqua.ino:3529:13: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void checkFeeding()':
iAqua.ino:5619:34: error: 'calcFeeding' was not declared in this scope
iAqua.ino: In function 'void resyncLights()':
iAqua.ino:5858:5: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void smartStartup()':
iAqua.ino:6469:7: error: 'irsend' was not declared in this scope
iAqua.ino:6474:7: error: 'irsend' was not declared in this scope
iAqua.ino:6479:7: error: 'irsend' was not declared in this scope
iAqua.ino:6484:7: error: 'irsend' was not declared in this scope
iAqua.ino:6489:7: error: 'irsend' was not declared in this scope
iAqua.ino:6494:7: error: 'irsend' was not declared in this scope
iAqua.ino:6501:7: error: 'irsend' was not declared in this scope
iAqua.ino:6506:7: error: 'irsend' was not declared in this scope
iAqua.ino:6511:7: error: 'irsend' was not declared in this scope
iAqua.ino:6516:7: error: 'irsend' was not declared in this scope
iAqua.ino:6521:7: error: 'irsend' was not declared in this scope
iAqua.ino:6528:7: error: 'irsend' was not declared in this scope
iAqua.ino:6533:7: error: 'irsend' was not declared in this scope
iAqua.ino:6538:7: error: 'irsend' was not declared in this scope
iAqua.ino:6543:7: error: 'irsend' was not declared in this scope
iAqua.ino:6550:7: error: 'irsend' was not declared in this scope
iAqua.ino:6555:7: error: 'irsend' was not declared in this scope
iAqua.ino:6560:7: error: 'irsend' was not declared in this scope
iAqua.ino:6567:7: error: 'irsend' was not declared in this scope
iAqua.ino:6572:7: error: 'irsend' was not declared in this scope
iAqua.ino:6577:7: error: 'irsend' was not declared in this scope
iAqua.ino:6584:7: error: 'irsend' was not declared in this scope
iAqua.ino:6589:7: error: 'irsend' was not declared in this scope
iAqua.ino:6594:7: error: 'irsend' was not declared in this scope
iAqua.ino:6599:7: error: 'irsend' was not declared in this scope
iAqua.ino:6604:7: error: 'irsend' was not declared in this scope
iAqua.ino:6609:7: error: 'irsend' was not declared in this scope
iAqua.ino:6614:7: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void checkLightFade(int, int)':
iAqua.ino:7205:13: error: 'irsend' was not declared in this scope
iAqua.ino:7225:13: error: 'irsend' was not declared in this scope
iAqua.ino:7256:13: error: 'irsend' was not declared in this scope
iAqua.ino:7276:13: error: 'irsend' was not declared in this scope
iAqua.ino:7307:13: error: 'irsend' was not declared in this scope
iAqua.ino:7327:13: error: 'irsend' was not declared in this scope
iAqua.ino:7358:13: error: 'irsend' was not declared in this scope
iAqua.ino:7378:13: error: 'irsend' was not declared in this scope
Error compiling.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.


----------



## robsworld78

Looks like its the IDE your using, download v1.0.6 and try that.

http://arduino.cc/en/Main/Software


----------



## jmh474

ok so now im getting this

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
sketch_feb04a.cpp.o: In function `checkLightFade(int, int)':
C:\Program Files\Arduino/iAqua.ino:7177: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:7177: undefined reference to `Sinclair_S'
sketch_feb04a.cpp.o: In function `checkLighting()':
C:\Program Files\Arduino/iAqua.ino:5781: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:5781: undefined reference to `Sinclair_S'
sketch_feb04a.cpp.o: In function `updateTimeDate()':
C:\Program Files\Arduino/iAqua.ino:6015: undefined reference to `Sinclair_S'
sketch_feb04a.cpp.o:C:\Program Files\Arduino/iAqua.ino:6015: more undefined references to `Sinclair_S' follow
sketch_feb04a.cpp.o: In function `checkFeeding()':
C:\Program Files\Arduino/iAqua.ino:5612: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:5612: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `checkTemp()':
C:\Program Files\Arduino/iAqua.ino:5604: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:5604: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `screenScreen()':
C:\Program Files\Arduino/iAqua.ino:2766: undefined reference to `arial_bold'
sketch_feb04a.cpp.o:C:\Program Files\Arduino/iAqua.ino:2766: more undefined references to `arial_bold' follow
sketch_feb04a.cpp.o: In function `screenScreen()':
C:\Program Files\Arduino/iAqua.ino:2782: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:2782: undefined reference to `Sinclair_S'
sketch_feb04a.cpp.o: In function `screenDosingSched(unsigned char)':
C:\Program Files\Arduino/iAqua.ino:2653: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2653: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2728: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:2728: undefined reference to `Sinclair_S'
sketch_feb04a.cpp.o: In function `screenLightRampItem(unsigned char)':
C:\Program Files\Arduino/iAqua.ino:2484: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2484: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2510: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:2510: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:2597: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2597: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `screenLightRamps()':
C:\Program Files\Arduino/iAqua.ino:2122: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2122: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2145: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:2145: undefined reference to `Sinclair_S'
sketch_feb04a.cpp.o: In function `screenResyncLights()':
C:\Program Files\Arduino/iAqua.ino:2098: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2098: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `screenPwrScheduleItem(int)':
C:\Program Files\Arduino/iAqua.ino:1942: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1942: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1961: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1961: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1985: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1985: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2046: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:2046: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `screenPwrSchedule()':
C:\Program Files\Arduino/iAqua.ino:1606: undefined reference to `arial_bold'
sketch_feb04a.cpp.o:C:\Program Files\Arduino/iAqua.ino:1606: more undefined references to `arial_bold' follow
sketch_feb04a.cpp.o: In function `screenPwrSchedule()':
C:\Program Files\Arduino/iAqua.ino:1629: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1629: undefined reference to `Sinclair_S'
sketch_feb04a.cpp.o: In function `screenDosing()':
C:\Program Files\Arduino/iAqua.ino:1474: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1474: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1505: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1505: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1530: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1530: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1537: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1537: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1551: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1551: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1561: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1561: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1575: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1575: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1582: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1582: undefined reference to `Sinclair_S'
sketch_feb04a.cpp.o: In function `screenSchedule()':
C:\Program Files\Arduino/iAqua.ino:1445: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1445: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `screenHeater()':
C:\Program Files\Arduino/iAqua.ino:1371: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1371: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `screenFeedSettings()':
C:\Program Files\Arduino/iAqua.ino:1300: undefined reference to `arial_bold'
sketch_feb04a.cpp.o:C:\Program Files\Arduino/iAqua.ino:1300: more undefined references to `arial_bold' follow
sketch_feb04a.cpp.o: In function `screenClock()':
C:\Program Files\Arduino/iAqua.ino:1189: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1189: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1214: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1214: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `screenLights()':
C:\Program Files\Arduino/iAqua.ino:1026: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1026: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:1126: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:1126: undefined reference to `Sinclair_S'
sketch_feb04a.cpp.o: In function `screenSettings()':
C:\Program Files\Arduino/iAqua.ino:992: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:992: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `screenPower()':
C:\Program Files\Arduino/iAqua.ino:953: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:953: undefined reference to `arial_bold'
sketch_feb04a.cpp.o: In function `screenHome()':
C:\Program Files\Arduino/iAqua.ino:790: undefined reference to `arial_bold'
sketch_feb04a.cpp.o:C:\Program Files\Arduino/iAqua.ino:790: more undefined references to `arial_bold' follow
sketch_feb04a.cpp.o: In function `processMyTouch()':
C:\Program Files\Arduino/iAqua.ino:3152: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:3152: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:3359: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:3359: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:3543: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:3550: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:3727: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:3727: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:3742: undefined reference to `arial_bold'
sketch_feb04a.cpp.o:C:\Program Files\Arduino/iAqua.ino:3742: more undefined references to `arial_bold' follow
sketch_feb04a.cpp.o: In function `processMyTouch()':
C:\Program Files\Arduino/iAqua.ino:3963: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:3963: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:3980: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:3980: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:3991: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:3991: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:4006: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:4006: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:4017: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:4017: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:4033: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:4033: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:4045: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:4045: undefined reference to `Sinclair_S'
C:\Program Files\Arduino/iAqua.ino:4059: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:4059: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:4074: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:4074: undefined reference to `arial_bold'
C:\Program Files\Arduino/iAqua.ino:4086: undefined reference to `arial_bold'
sketch_feb04a.cpp.o:C:\Program Files\Arduino/iAqua.ino:4086: more undefined references to `arial_bold' follow

sorry to be a pain but never done this befor


----------



## kman

Looks like you should check that your libraries and fonts are in the right place. Fonts specifically.


----------



## robsworld78

Do this now. In the IDE you will see tabs at the top, one is Sinclair_S and the other is arial_bold. In sinclair_s change line 8 to the following.



Code:


const uint8_t Sinclair_S[764] PROGMEM={

In arial_bold change line 9 to



Code:


const uint8_t arial_bold[3044] PROGMEM={

I have $2 that says your good to go. :hihi:


----------



## jmh474

Fonts?? i only where to put the libraries, iv got to say it im lost lol


----------



## kman

jmh474 said:


> Fonts?? i only where to put the libraries, iv got to say it im lost lol


They're in the iAqua zip file you probably downloaded on Page 1.

Put them in the same folder as iAqua.ino.


----------



## robsworld78

They are in the right location, he would get a different error if they weren't.


----------



## jmh474

right im going to be doing peoples head in now so placed the fonts uploaded the sketch but im only getting blank screen now lol


----------



## robsworld78

Have you tried any other sketches? Did you run the uTouch calibration sketch? That's a good sketch to load to make sure everything is working on the hardware side.


----------



## jmh474

robsworld78 said:


> Have you tried any other sketches? Did you run the uTouch calibration sketch? That's a good sketch to load to make sure everything is working on the hardware side.


no lol i think its something to do with sd card as iv reset the arduino a few times and it keep gliching on the screen


----------



## robsworld78

Start with that sketch, it may just be that you need to set the display type. That will depend on what screen you have. When you get that working you can set iAqua with your display and it should work.

The sketch is located in the IDE under file>examples>uTouch>arduino>UTouch_Calibration


----------



## jmh474

starting to think its going to be a long night trying to up load UTouch_Calibration sketch but now im getting this lol

Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
UTouch_Calibration.cpp.o: In function `setup':
C:\Program Files\Arduino/UTouch_Calibration.ino:342: undefined reference to `SmallFont'
C:\Program Files\Arduino/UTouch_Calibration.ino:342: undefined reference to `SmallFont'


----------



## robsworld78

Yes sometimes this stuff can be frustrating. That font is part of the UTFT library, I had something like that once, I had to download the UTFT library again and change that file. You can change replace the whole library as well which is easier.

http://henningkarlsen.com/electronics/library.php?id=51


----------



## jmh474

So iv got the iaqua loaded up all the touch is working fine now but the images are fuzzy on the screen every time i refresh the screen the images change eg one image that was fuzzy is no longer fuzzy but another image is so could this be the SD card?


----------



## majid_gh7168

jmh474 said:


> So iv got the iaqua loaded up all the touch is working fine now but the images are fuzzy on the screen every time i refresh the screen the images change eg one image that was fuzzy is no longer fuzzy but another image is so could this be the SD card?


Dear friend
Is described on pages


----------



## robsworld78

Your SD card needs to be 2gb or less and formatted at FAT type. Or you can switch SD libraries if you want, the info how to do that is back a few pages.


----------



## Marspeed

Question 
Where is this faster larger more lighting channels version I see in the videos


----------



## rottison

Good Morning Mars


----------



## Notorious93

anyone ever thought of adding a flow meter to this?

http://www.adafruit.com/products/82...bvnNj5m8L2_eMFMz4hhRiGY941fm149JZtRoCg5_w_wcB

its only $10 for the part and a couple $ in pvc tubing to hook it inline to a canister filter


----------



## kman

^^ I think there were discussions at one point, but the consensus (at the time) was that the flow meters (at the time... not that we're talking about more than a month or two) impact the flow rate too much, until you get into the really expensive ones. I don't know if that specific sensor was among those tested, though.


----------



## mistergreen

Notorious93 said:


> anyone ever thought of adding a flow meter to this?
> 
> http://www.adafruit.com/products/82...bvnNj5m8L2_eMFMz4hhRiGY941fm149JZtRoCg5_w_wcB
> 
> its only $10 for the part and a couple $ in pvc tubing to hook it inline to a canister filter


I'm thinking of putting it at the end of spray bar rather than inline since it does impede flow according to a user here.


----------



## Notorious93

i wouldnt mind. im hopefully getting a Fluval 206 for my 12g long. even with a slow down in flow rates i'd be above 10x turnover rate. I guess its different for each of us

with my current fluval 106 im sitting right at 121gph so itd be a no go


----------



## fietsenrex

I think I have an issue with the ramping where the ramp 3 (mid sun to full bright) doesn't work..
Also the ramp 4 doesn't seem to function.

If I restart the IAqua it starts up in the correct light mode accordeonvereniging to the schedule

I loaded the original code and cleared the EEPROM 
All SD images are in 

There is no overlap in the ramping schedule

I have no lights attached since my drivers are fryed and I'm waiting for new drivers.


----------



## kman

fietsenrex said:


> I think I have an issue with the ramping where the ramp 3 (mid sun to full bright) doesn't work..
> Also the ramp 4 doesn't seem to function.
> 
> If I restart the IAqua it starts up in the correct light mode accordeonvereniging to the schedule
> 
> I loaded the original code and cleared the EEPROM
> All SD images are in
> 
> There is no overlap in the ramping schedule
> 
> I have no lights attached since my drivers are fryed and I'm waiting for new drivers.


Just a thought, check to make sure you have enough timers allocated? I had what sounds like a similar problem, and RobsWorld78 nailed the issue. I think it's a line in TimeAlarms.h that be default limits the numbers of timers too low. Check the line dtNBR_ALARMS and make sure the value is 6 and needs to be 30:

See Rob's instructions here:
http://www.plantedtank.net/forums/showthread.php?p=7255546#post7255546


----------



## rottison

So after putting every thing together I found out a have a bad relay board and after trouble shooting it by accident I killed the led on relay 7 that tells when it has power bought it 4 months ago and the guy is still sending me a new one to replace it the power of buying from American sellers


----------



## robsworld78

Does anyone have a good picture of the wiring for the dosing pumps? I wired mine like the breadboard view but the transistors get quite hot and the pump only seems to run on half power. When I power directly to the pumps they work great.

EDIT:

This is how I have it wired. Common ground from arduino goes to pin 3 on transistor (can't see it but it's there), then that pin hooks to diode, diode then goes to pin 2 on transistor.

The I have the resistor between pin 1 on the transistor and the signal wire from arduino. 

Then I tried hooking up the dosing pumps ground to various areas but it either works and gets hot or doesn't work.


----------



## kman

robsworld78 said:


> Does anyone have a good picture of the wiring for the dosing pumps? I wired mine like the schematic but the transistors get quite hot and the pump only seems to run on half power. When I power directly to the pumps they work great.


I'm using o2's board, so there's no wiring worth speaking of. Have you looked at the original Arduino dosing pump threads? I think AH used that general design.


----------



## robsworld78

No I haven't, any chance you have a link to that?


----------



## kman

robsworld78 said:


> No I haven't, any chance you have a link to that?


It's Shift's original design, not sure if AH tinkered much with it or not:

http://www.plantedtank.net/forums/showthread.php?t=314009


----------



## O2surplus

Here's a little snipet of my schematic showing how the dosing pumps are wired.


----------



## renesis

robsworld78 said:


> This is how I have it wired. Common ground from arduino goes to pin 3 on transistor (can't see it but it's there), then that pin hooks to diode, diode then goes to pin 2 on transistor.
> 
> The I have the resistor between pin 1 on the transistor and the signal wire from arduino.
> 
> Then I tried hooking up the dosing pumps ground to various areas but it either works and gets hot or doesn't work.


I'm not sure what the purpose of the diode is wired like that. I believe it should be like this image:










Also, can't see what transistor model you are using in the picture, so can't confirm the pins.

EDIT:

On second thought, that diode shouldn't affect anything like that. Which transistor are you using?


----------



## robsworld78

I'm using the IRFZ44N. I can't read your schematic o2, I found another that's the same but more notes but its just heating up the transistor as well. I'll try what you posted renesis.


----------



## renesis

According to the datasheet, that's a MOSFET which requires 10-20V at the Gate pin, would be difficult to fully turn it on using the 5V from the Arduino. Really surprised it worked for others as posted in the other thread linked... unless I'm missing something.

If all you are trying to do is turn on and off the pump and don't need MOSFET to control voltage (PWM), then I would suggest replacing it with a transistor such as the TIP120, it will work with the arduino and should still pull enough current for the motors.

If using a MOSFET, it needs to be a logic level unit to switch at 5V.


----------



## robsworld78

These parts have to work, it's what everyone here is using without problems.


----------



## mistergreen

robsworld78 said:


> These parts have to work, it's what everyone here is using without problems.


What's your power supply? Too much amp? One possible thing for it to run hot because of too much power (Volts x amp)

It's as easy as changing the power. Oh check for shorts too.

Sent from my iPad using Tapatalk HD


----------



## Marspeed

You need a logic level mosfet they are made to be triggered with 5 volts can handle up to 60 volts 2 amps with no heat sink more amps with heat sink


----------



## Marspeed

Bump:









Bump: https://www.sparkfun.com/products/10213

Like this one

Bump: https://www.sparkfun.com/products/10213

Like this one


----------



## robsworld78

Looks like my cat5 cable to the pumps is shorted somewhere in the line, the cable was fine but now its not. The hell with it, I'm done for today. :hihi:


----------



## Marspeed

Good night


----------



## robsworld78

Well I'm not done completely, gonna work on the sketch a bit. :hihi:

I like your board Marspeed, what's the dimensions? Would you have any extras to sell or the build file to get some printed? That's exactly what I want for my dosing pumps but I don't know how to design them.


----------



## Marspeed

I have a couple extras I made them for dosing pumps but you can use them for lots of things pm me your address I can't remember the dimensions right now but they are small


----------



## kman

Just a quick update. 










I'm not going to bother uploading more pictures than this, because you've seen them all before... the only difference is the date. Same time (8:59pm, right when the Circ pump goes off), same static-y fan icon.

Here's the interesting pattern:

1/28 Freeze (Wed)
1/29 No freeze (Thu)
1/30 Freeze (Fri)
1/31 No freeze (Sat)
2/1 Freeze (Sun)
2/2 No freeze (Mon
2/3 No Freeze (Tue)
2/4 Freeze (Wed)
2/5 No freeze (Thu)
2/6 Freeze (Fri)

I'm REALLY interested to see if it continues into next week. Meanwhile, I look forward to trouble-free operation tomorrow, and a lockup at 9pm on Sunday  Monday through Wednesday will be the big tests, I think, to see if the double-day repeat happens again. I'll continue tracking...


----------



## Fernando Garcia

Hi!

A circuit more simple for dosing pumps.










If you want can connect +12V to pin 9 on ULN2003 to prevent reverse voltage. But, I never had this problem.

PWM pin is needed only if you want control the speed.

Best regards.


----------



## robsworld78

There seems to be lots of options for the dosing pumps, to bad I don't have any of these other parts or the patience to work on them right now. They can sit on the shelf for a few days. :hihi:


----------



## rottison

Kman don't turn that fan off no more 

there has got to be some thing about the way you have your program setup or some thing that doesn't happen on Mon Tues that does every other day.. have you tried deleting every thing else off then just set up a simple turn light on at 7 am turn light off at 10 pm nothing else no feed no temp stuff no ramps nothing then let it run for several days to see if that will freeze up if not just add 1 thing a week till it does freeze


----------



## kman

rottison said:


> Kman don't turn that fan off no more
> 
> there has got to be some thing about the way you have your program setup or some thing that doesn't happen on Mon Tues that does every other day.. have you tried deleting every thing else off then just set up a simple turn light on at 7 am turn light off at 10 pm nothing else no feed no temp stuff no ramps nothing then let it run for several days to see if that will freeze up if not just add 1 thing a week till it does freeze


Yeah, that's the plan, I think.... eventually, at least. I'm going to let it run a little while longer and just continue keeping a close eye on it around 8:59pm.  I want to see if I get that funny repeat on Monday & Tuesday like what happened last week.

Then I'll try to just move the pump to a different channel (I'll try Aux1 and see if the same thing happens there), and tinker like that a bit.

Is there a simple way to nuke a setup back to defaults? Not that I look forward to resetting all those light values and times again.


----------



## MrMan

robsworld78 said:


> Looks like my cat5 cable to the pumps is shorted somewhere in the line, the cable was fine but now its not. The hell with it, I'm done for today. :hihi:


The cable may have been the reason the pumps didn't seem to run normally. If the wires are to small you would get a lot of voltage drop from the current draw of the pumps. If it's bad enough they could overheat/melt which might be why they appear to be shorted now.


----------



## rottison

there is a real easy way just delete a bunch of stuff then its gone 

Bump: rob I use the 24awg wire I believe it is in my iAqua set up for pumps I tested them at12v for 5 min and nothing got hot wire wise. but I didn't think it was good to just run that little pump for more than 5 minutes

fleabay part number 201132438422


----------



## robsworld78

MrMan said:


> The cable may have been the reason the pumps didn't seem to run normally. If the wires are to small you would get a lot of voltage drop from the current draw of the pumps. If it's bad enough they could overheat/melt which might be why they appear to be shorted now.


Yeah I don't know, my wire is standard cat5e 24awg. Before starting I ran the 12v down the line and I think I got almost 12v out the other end. I left it for a while but with no load. I'm pretty sure the cable was good when I started as I had all 4 pumps running through the cable and had good voltage. When I first tried it the pumps would always run when plugged in, wouldn't stop so I definitely had something wired wrong and started playing and touching from there. Now I understand the circuit, just a switch really, next go should be better. 

I'm confused though, all my reading most people are advised against using the IRFZ44N because its not designed for 5v like a lot of you have mentioned. Most say to use the TIP120. So my question is why does the IRFZ44N work for everyone here when it shouldn't? Would it be better to use the TIP120, they are very cheap so its not a problem, just the waiting that hurts. For those using the IRFZ44N does it get warm when its working? I would think it should put off no heat.

Personally I don't think its the wire, I think it was me. :hihi: This stuff should easily be good for 1amp, probably 2-3. When I was doing this I was only using 9v as my other power supply was busy but can't see that being a problem as voltage don't go into the transistor. I have verified I did run one of the transistors, its always open now so maybe that caused the excess heat and melted the wires.

Bump:


kman said:


> Yeah, that's the plan, I think.... eventually, at least. I'm going to let it run a little while longer and just continue keeping a close eye on it around 8:59pm.  I want to see if I get that funny repeat on Monday & Tuesday like what happened last week.
> 
> Then I'll try to just move the pump to a different channel (I'll try Aux1 and see if the same thing happens there), and tinker like that a bit.
> 
> Is there a simple way to nuke a setup back to defaults? Not that I look forward to resetting all those light values and times again.


Here's a sketch that will reset all the defaults. Only need to upload and it did its job.


----------



## kman

Thx, Rob!


----------



## renesis

robsworld78 said:


> I'm confused though, all my reading most people are advised against using the IRFZ44N because its not designed for 5v like a lot of you have mentioned. Most say to use the TIP120. So my question is why does the IRFZ44N work for everyone here when it shouldn't? Would it be better to use the TIP120, they are very cheap so its not a problem, just the waiting that hurts. For those using the IRFZ44N does it get warm when its working? I would think it should put off no heat.


Yeah, not sure why it works for some... 

Where do you order parts from? Being in Canada as well, I usually go with digikey.ca, $8 flat rate shipping and in my experience, if you order by noon, it shows up the very next day via FedEx. Love them.


----------



## Marspeed

this is what i use (FQP30N06L) very easy to use or you could use an ic like a uln like in fernando's diagram 
either way you are switching the (negative) side of the pump


----------



## mistergreen

As long as its Vgs is less than 5V. It is logic level transistor. It looks like the IRFZ44N is. There's no reason not to use it.

this explain it.
https://www.youtube.com/watch?v=GrvvkYTW_0

The video will tell you if you need a heat sink or not too. If the temperature in your box gets hot, say over 25C, components might have issues. Do you guys have a fan in your box?


----------



## Marspeed

if he is switching the positive side some will over heat and let the smoke out the FQP30N06L will die in less than the blink of an eye

Bump: the gate voltage for the IRFZ44N is +- 20 volts


----------



## fietsenrex

Thanks for the hint referring to the time alarms library, ramping is now functioning as it should 

My dosing pumps work fine, but I'm not using the one specified by AH. 
I don't know What I'm using, I asked for a MOSFET at a local shop wich would do the job.


----------



## robsworld78

renesis said:


> Yeah, not sure why it works for some...
> 
> Where do you order parts from? Being in Canada as well, I usually go with digikey.ca, $8 flat rate shipping and in my experience, if you order by noon, it shows up the very next day via FedEx. Love them.


I prefer to get my stuff from China, I can get 10 for under $6 do the door, just have to be patient. I hate getting this stuff locally. A while back I needed a couple resistors paid close to $3 for 2 and since I ordered 1000 pack I think from China for $5. 

I am only switching the ground, I never had power go into it, that's why it didn't make sense. I'm getting more stuff so I'll order some TIP120's they are cheap, but I'm still going to try and get these going, I don't really see why they shouldn't. I'm going to make a couple of these at least so I want the parts best suited, the TIP120 sounds like it is.


----------



## Marspeed

i have burnt out a TIP120 at 5 amps which is it's max amps unless pulsed wich is not the case here the FQP30N06L is rated at 60v and 32 amps i could see one of those pumps pulling 5 amps at a stall or when it comes on a little head room on the amps is nice


----------



## O2surplus

robsworld78 said:


> I prefer to get my stuff from China, I can get 10 for under $6 do the door, just have to be patient. I hate getting this stuff locally. A while back I needed a couple resistors paid close to $3 for 2 and since I ordered 1000 pack I think from China for $5.
> 
> I am only switching the ground, I never had power go into it, that's why it didn't make sense. I'm getting more stuff so I'll order some TIP120's they are cheap, but I'm still going to try and get these going, I don't really see why they shouldn't. I'm going to make a couple of these at least so I want the parts best suited, the TIP120 sounds like it is.


:hihi: order some "fast-blow" 1amp fuses while you're at it.


----------



## robsworld78

There shouldn't be 5amps going through this, the regulators are only good for just over an amp. I'm putting 4 regulators so they stay cool and not heat up the box.



O2surplus said:


> :hihi: order some "fast-blow" 1amp fuses while you're at it.


Yeah more things I don't really need, I have so much crap I'll probably never use. :hihi:


----------



## O2surplus

robsworld78 said:


> Yeah more things I don't really need, I have so much crap I'll probably never use. :hihi:


Oh, You're "preachin' to the choir" now- LOL. Seriously though, fuses are cheap insurance.


----------



## mistergreen

O2surplus said:


> Oh, You're "preachin' to the choir" now- LOL. Seriously though, fuses are cheap insurance.


Where would you put the fuse? At the arduino's power to protect it?


Sent from my iPad using Tapatalk HD


----------



## robsworld78

O2surplus said:


> Oh, You're "preachin' to the choir" now- LOL. Seriously though, fuses are cheap insurance.


lol, yes, I did add a 10amp circuit breaker for 120v, so I guess a fuse won't hurt either. :hihi:


----------



## robsworld78

O2surplus, what capacitor values are you using for filters on your board?


----------



## O2surplus

robsworld78 said:


> O2surplus, what capacitor values are you using for filters on your board?



To be honest, using caps with an exact value has never been a real concern. They're only needed as "noise filters", _incase_ of a "noisy power supply". The Meanwell power supplies, that I normally use, have plenty of output filtering built in. Because of this, "noise" has never been an issue for me. But if I'm designing a project meant for the masses, I use whatever cap value the voltage regulator manufacturer recommends. Most of the time it's a value between 1 & 10mf. :hihi: I fret more about adding reverse polarity protection. It's incredibly common for people unfamiliar with electronics to cross up their power connections -LOL


----------



## robsworld78

I use to fix two-way radios and one of the common repairs was replacing a reverse polarity diode, people just don't understand black is ground. :hihi: But I have to admit I need to be careful around AC because I see black and think ground.  Must be why people do it on DC.

Reason I'm asking for caps is for the L7805 and L7812 regulators, I was going to order a variety pack but they start at .1uf to 220uf, 25-50v, can I make do with these?


----------



## jmh474

just to ask, i may have missed it but as AH said this is based on a phone setup is there a way we can lock the screen like a phone as well as???

Sent from my GT-S5360 using Tapatalk 2


----------



## O2surplus

robsworld78 said:


> I use to fix two-way radios and one of the common repairs was replacing a reverse polarity diode, people just don't understand black is ground. :hihi: But I have to admit I need to be careful around AC because I see black and think ground.  Must be why people do it on DC.
> 
> Reason I'm asking for caps is for the L7805 and L7812 regulators, I was going to order a variety pack but they start at .1uf to 220uf, 25-50v, can I make do with these?


The variety pack will serve you well.:hihi:


----------



## kman

jmh474 said:


> just to ask, i may have missed it but as AH said this is based on a phone setup is there a way we can lock the screen like a phone as well as???


No way to lock the screen. I'm not sure where it was said this is based on a phone setup, other than the fact the a touchscreen interface is sort of like a touchscreen phone interface, in that they are both graphical touchscreen interfaces, but there the similarities end.


----------



## jmh474

kman said:


> No way to lock the screen. I'm not sure where it was said this is based on a phone setup, other than the fact the a touchscreen interface is sort of like a touchscreen phone interface, in that they are both graphical touchscreen interfaces, but there the similarities end.


look at the top of the key features on the first page lol

Sent from my GT-S5360 using Tapatalk 2


----------



## kman

jmh474 said:


> look at the top of the key features on the first page lol


"iPhone inspired touch interface"

Not the same thing as a full-blown iOS implementation.


----------



## jmh474

ok so i used the wrong choice of words i guess lol

Sent from my GT-S5360 using Tapatalk 2


----------



## robsworld78

Just wanted to add this on the IRFZ44N vs TIP120. I was starting to think the IRFZ44N was not the best part for the pumps but now I believe it is.  I've been watching some videos trying to wrap my head around these components and found this really good video explaining and he actually uses a IRFZ44N in the video.

https://www.youtube.com/watch?v=Te5YYVZiOKs


----------



## renesis

IRFZ44N, while it seems to be working for some really isn't the best choice as its gate voltage is too high. If you want to go with a MOSFET over a traditional transistor, choose one that is 'logic-level'.

See here:


> To use a MOSFET as a switch, you have to have its gate voltage (Vgs) higher than the source. If you connect the gate to the source (Vgs=0) it is turned off.
> 
> For example we have a IRFZ44N which is a “standard” MOSFET and only turns on when Vgs=10V – 20V. But usually we try not to push it too hard so 10V-15V is common for Vgs for this type of MOSFET.
> 
> However if you want to drive this from an Arduino which is running at 5V, you will need a “logic-level” MOSFET that can be turned on at 5V (Vgs = 5V). For example, the ST STP55NF06L. You should also have a resistor in series with the Arduino output to limit the current, since the gate is highly capacitive and can draw a big instantaneous current when you try to turn it on. Around 220 ohms is a good value.
> 
> http://blog.oscarliang.net/how-to-use-mosfet-beginner-tutorial/


Also, there is a great answer here on how to choose a MOSFET : http://electronics.stackexchange.com/questions/71378/what-to-look-for-in-the-datasheet-when-choosing-a-mosfet

EDIT: IRLZ44 is logic level, while IRFZ44 is not.


----------



## fietsenrex

kman, you're not alone anymore!
I got a freezed screen as well, but is wasn't just the home screen.. it locked up on my feeding page and on my lighting page..

also, does anyone work with codebender? if yes do you know how to modify the time alarms library? or to add a modified library?


----------



## jmh474

ok so hoping someone out there can help got a strange one here, the images where loading up on the screen but now there not?? iv tried changing the SD card but still nothing every thing else works like the touch ect any help please


----------



## kman

jmh474 said:


> ok so hoping someone out there can help got a strange one here, the images where loading up on the screen but now there not?? iv tried changing the SD card but still nothing every thing else works like the touch ect any help please


Sounds like what was happening to me, when I was first trying to get it all running. It just decided it did not want to load images off the SD card anymore (where previously no problem).

Try using the new library and small code changes RobsWorld offered for me. You'll need to read back a little ways, but that was the only thing that seemed to fix the problem for me. The new SD card library is MUCH more robust, apparently, as well as faster.


----------



## jmh474

thanks i might change the library but its started working again now so don't know what happened there, but now its resting its self, its something to do with the feeding and i get strange readings on home screen, its saying 56289 hrs till next feed and where you set the time for the feeding its stuck at 105 mins. starting to think as well AH has alot of reading to do when he gets back lol

Sent from my GT-S5360 using Tapatalk 2


----------



## robsworld78

renesis said:


> IRFZ44N, while it seems to be working for some really isn't the best choice as its gate voltage is too high. If you want to go with a MOSFET over a traditional transistor, choose one that is 'logic-level'.
> 
> See here:
> 
> 
> Also, there is a great answer here on how to choose a MOSFET : http://electronics.stackexchange.com/questions/71378/what-to-look-for-in-the-datasheet-when-choosing-a-mosfet
> 
> EDIT: IRLZ44 is logic level, while IRFZ44 is not.


Thanks, looks like I'm still wrong. :hihi: In that video I posted the mosfet he shows is the IRFZ44 and then says 0-5v will trigger it. The internet is great for information but when you really don't know its hard to sort the good and bad info.

Now I'm thinking the IRFZ44 would be good for reverse polarity? I saw a tutorial how to use a mosfet but I wasn't able to choose the correct one. I was looking at 

http://www.taydaelectronics.com/irf9640-power-mosfet-p-channel-11a-200v.html

but maybe the IRFZ44 will work. I have some so maybe I'll give it a go and see if I get smoke or not. :hihi:


----------



## O2surplus

robsworld78 said:


> Thanks, looks like I'm still wrong. :hihi: In that video I posted the mosfet he shows is the IRFZ44 and then says 0-5v will trigger it. The internet is great for information but when you really don't know its hard to sort the good and bad info.
> 
> Now I'm thinking the IRFZ44 would be good for reverse polarity? I saw a tutorial how to use a mosfet but I wasn't able to choose the correct one. I was looking at
> 
> http://www.taydaelectronics.com/irf9640-power-mosfet-p-channel-11a-200v.html
> 
> but maybe the IRFZ44 will work. I have some so maybe I'll give it a go and see if I get smoke or not. :hihi:


Rob-

Take a look at the ULN2003A. It's the chip that Fernando posted about a few pages back. It's a 7 channel Darlington pair transistor array with flyback diodes and base leg bias resistors all built in. It maybe a little late for you to use in your current build, but I'll be adding it to mine. Each channels good for 500ma, so using it to power 4 dosing pumps, 2 cooling fans, and a fish feeder, will work awesome.


----------



## robsworld78

I will, is that more efficient than the 7805? 

Its never to late for me. :hihi:


----------



## MrMan

robsworld78 said:


> I will, is that more efficient than the 7805?
> 
> Its never to late for me. :hihi:


It wouldn't replace the 7805, replaces the mosfets used to run the pumps. It's a nice chip but as you run more channels at the same time the 500mA per channel derates


----------



## O2surplus

MrMan said:


> It wouldn't replace the 7805, replaces the mosfets used to run the pumps. It's a nice chip but as you run more channels at the same time the 500mA per channel derates



Yeah- luckily for us, the pumps only draw 200ma(at least that's what I've measured when they're pushing against 5' of head pressure.):hihi:


----------



## robsworld78

oh ok, I was looking at the datasheet and it didn't make sense that it was a regulator. :hihi: Also there would only be one pump running at a time if that helps prolong the life.

MrMan, what component would you use for the dosing pumps?


----------



## MrMan

robsworld78 said:


> oh ok, I was looking at the datasheet and it didn't make sense that it was a regulator. :hihi: Also there would only be one pump running at a time if that helps prolong the life.
> 
> MrMan, what component would you use for the dosing pumps?


I was planning to use the uln2003 ;-) it's easy and has built in diodes. I only commented on the derating since O2 was talking about using it for pumps and fans and a feeder.


----------



## robsworld78

Was just curious as there are so many ways to do this. Well if all the pros here are saying uln2003, so be it. 

Which one?

uln2003ad
uln2003an
uln2003apg


----------



## MrMan

robsworld78 said:


> Was just curious as there are so many ways to do this. Well if all the pros here are saying uln2003, so be it.
> 
> Which one?
> 
> uln2003ad
> uln2003an
> uln2003apg


ULN2003AD if you want surface mount, ULN2003AN if you want through hole. Personally i like surface mount better but it can be harder to solder. Either way just check the datasheet to make sure your footprint matches the drawing.


----------



## saiko

might not be as simple as 500ma x NO of channels.

ULN2003 is actually limited to 1A max. So at any instant total consumption by complete IC must not exceed 1000ma. Such scenario I guess wd be rare, but still a headsup before any experiment.


Also you could look at L293D or L298 which are better fit for DC continuous running motors.


----------



## hollp

I need pcb iAqua in full size. does anyone have the file?


----------



## rottison

what is full size is there more than one ?


----------



## jmh474

ok so im a bit lost, on the wiring digram it shows the back light going to arduino pin pmw 8, but on the shield pic it say's back light going to arduino pin 13, for controlling back light brightness so dose anyone know which is it please thanks.


----------



## jmh474

not to worry got it lol

Sent from my GT-S5360 using Tapatalk 2


----------



## fietsenrex

how did you solve it?


----------



## jmh474

well i think its pin 8 but i my be wrong lol as i dint give the screen chance to dim lol

Sent from my GT-S5360 using Tapatalk 2


----------



## fietsenrex

haha nice 
I've changed the pin number in the code and going to try it next weekend.


----------



## sushant

jmh474 said:


> well i think its pin 8 but i my be wrong lol as i dint give the screen chance to dim lol
> 
> Sent from my GT-S5360 using Tapatalk 2


Just have a close look at the display shield,pin number 8 and 9 are blank(not connected to arduino pins or anything on the board).

AnotherHobby have given a detailed explaination of the procedure.To make it easier, i have attached the part he described it.



AnotherHobby said:


> From there I ran a separate jumper from the LED backlight pin on the display to a header pin that I mounted on the ElecFreaks shield. That header pin goes through a transistor and eventually do PWM pin 13 so I can control the backlight.


----------



## sushant

attached the wrong image, here is the correct one


----------



## cooldex

Hi I am back, been very busy with work and no time to complete my project. Well I have had fun and games, first of all the regulators were heating up, real hot, I found that there was a short. So I built another all worked and was ready to put it together when I found out that the output voltage was not consistence so I poked around and blew my diodes. :hihi::hihi:
I decided to test the 7812 regulator on a breadboard and found it was giving out 12v as expected, then I soldered the regulator circuit only and found that the voltage output from the same 7812 was 21+ V. 
Wanted to share this is O2 or anyone else here who as the same issue. I think it my boards are faulty. I checked for any short circuit and found none. Apparently the 7812 gets warm outside the board but on it is cold, from this I gathered that the regulator is not regulating. So any help? Here is a photo.

Bump: This was my PCB order:
1 x Fusion PCB (PCB08511P)

File D144470_73562_new_shield.rar
Layer 2
PCB Dimension 10cm Max*10cm Max
PCB Thickness 1.6mm
PCB Qty. 5
PCB Color White
Surface Finish Hasl(Lead Free)
Copper Weight 1oz.
Panelized PCBs 1


----------



## O2surplus

cooldex said:


> Hi I am back, been very busy with work and no time to complete my project. Well I have had fun and games, first of all the regulators were heating up, real hot, I found that there was a short. So I built another all worked and was ready to put it together when I found out that the output voltage was not consistence so I poked around and blew my diodes. :hihi::hihi:
> I decided to test the 7812 regulator on a breadboard and found it was giving out 12v as expected, then I soldered the regulator circuit only and found that the voltage output from the same 7812 was 21+ V.
> Wanted to share this is O2 or anyone else here who as the same issue. I think it my boards are faulty. I checked for any short circuit and found none. Apparently the 7812 gets warm outside the board but on it is cold, from this I gathered that the regulator is not regulating. So any help? Here is a photo.
> 
> Bump: This was my PCB order:
> 1 x Fusion PCB (PCB08511P)
> 
> File D144470_73562_new_shield.rar
> Layer 2
> PCB Dimension 10cm Max*10cm Max
> PCB Thickness 1.6mm
> PCB Qty. 5
> PCB Color White
> Surface Finish Hasl(Lead Free)
> Copper Weight 1oz.
> Panelized PCBs 1




Cooldex

Are you using a UA7812? The UA7812 needs the tab soldered to the PcB in addition to the 3 pins. A bad solder joint under the tab will cause the regulator to malfunction. Check that. If the solder joint is OK, chances are good that the regulator is bad OR the protection diode for the UA7812 is soldered in backwards. If the diode is installed backwards you'll see 21V+ at the output side of the 12V reg. Let me know what you find?


----------



## cooldex

Hey O2 thanks man! That worked, a little solder at the back of the regulators did the job. Yes I am using UA78* reg's. Perfect output. Top man! roud:
No wonder I was blowing my diodes too much voltage.. :hihi::hihi::hihi:

Photos:


----------



## O2surplus

cooldex said:


> Hey O2 thanks man! That worked, a little solder at the back of the regulators did the job. Yes I am using UA78* reg's. Perfect output. Top man! roud:
> No wonder I was blowing my diodes too much voltage.. :hihi::hihi::hihi:
> 
> Photos:



Nice! I'm glad that I was able to help! LOL- I had a sneaking suspicion that un-soldered regulator tab was the problem. I've "been there- done that" a few times myself.:hihi:


----------



## rottison

o2 you still here


----------



## rottison

you have any boards that would let me adjust down the voltage from a 12v or higher down to run my arduino with a 7" screen ?not sure how much power I do need maybe even some thing I can see the output on a read out or not I can use a meter to set it just know 5v wont run it and 9v the regulator gets so hot you cant touch it or if you have a different idea


----------



## O2surplus

rottison said:


> o2 you still here


Yeah- I'm either here, RC or a few other Online hangouts. What's up Dale?


----------



## rottison

regulator over heating


----------



## O2surplus

rottison said:


> you have any boards that would let me adjust down the voltage from a 12v or higher down to run my arduino with a 7" screen ?not sure how much power I do need maybe even some thing I can see the output on a read out or not I can use a meter to set it just know 5v wont run it and 9v the regulator gets so hot you cant touch it or if you have a different idea



What voltage does the LCD screen run on?


----------



## rottison

when I bought it said 3.3 then I got it says 5 I have it hooked up to arduino now hooked up to a 5v 6A psu and it over heats the arduinos regulator right next to the barrel connector and the screen starts to degrade and flicker and get all weird because it cant get all the power it needs

Bump: I have to look but I think I might have maybe 2 old LM2596 from my first arduino controller build


----------



## rottison

going to have to make a new a screw shield like the one's Marc did with the extra terminals in them just for this. Going to have run him down and see if there was in protection built in for revers power feed.


----------



## O2surplus

rottison said:


> when I bought it said 3.3 then I got it says 5 I have it hooked up to arduino now hooked up to a 5v 6A psu and it over heats the arduinos regulator right next to the barrel connector and the screen starts to degrade and flicker and get all weird because it cant get all the power it needs
> 
> Bump: I have to look but I think I might have maybe 2 old LM2596 from my first arduino controller build



OK - I know how to fix this! Since you already have a 5V PSU this won't be difficult. Chances are good that the back light circuit for the LCD is causing the problem. The Back light is pulling more current than the tiny 5V reg on the arduino can provide, causing the reg to overheat. You need to move the LCD's current demand to your 5V PSU and away from the Arduino. The arduino only needs to provide the data to the LCD. It doesn't need to provide the actual current to run the screen. See if there's a way to "break out" the arduino's 5V connection to the back light, and make that 5V connection directly to your 5V 6amp supply. Problem solved.:hihi:


----------



## rottison

ya no crap lol

Bump: http://www.sainsmart.com/arduino/arduino-shields/lcd-shields/sainsmart-7-7-inch-tft-lcd-480x800-arduino-due-mega2560-r3-raspberry-pi.html

Bump: and what I was told this is not on there either
◾On board 64Mbit SPI Flash for storing fonts of 10 sizes and 236 icons for custom application development

but it is there selling point


----------



## kman

I was gonna say that, too. Just need to find out which pins carry the voltage to the LCD, and power it directly from the PSU. From the photos it looks like the pin assignments are silkscreened right onto the board?


----------



## rottison

if I was to do that is that safe for the lcd ?


----------



## renesis

Yes, if it is a 5V supply.

However, you are under-powering the Mega if using a 5V supply. Its recommended they have a 7-12V supply, especially when using the 5V on board regulator. See the specs here: http://arduino.cc/en/Main/arduinoBoardMega

If the only item you are powering with 5V is the LCD, then it may be ok...



> The board can operate on an external supply of 6 to 20 volts. If supplied with less than 7V, however, the 5V pin may supply less than five volts and the board may be unstable. If using more than 12V, the voltage regulator may overheat and damage the board. The recommended range is 7 to 12 volts.


----------



## rottison

renesis the problem is if I do give it 12v or even 9v the draw threw it to power the large screen is over heating the arduino causing it to power down rom the over heating

Bump:


----------



## renesis

Do you have a voltmeter? Can you measure how much voltage is actually coming out of the 5V pin with the 5V power supply?

Your best bet is to try what the guys said above and power it straight from 5V. The Arduino has a max current of 900ma when powered through a wall adapter. 

Otherwise, use a higher voltage supply to power the arduino and a separate regulator to step it down to 5V and supply the LCD with that.


----------



## rottison

yup and my screen takes 500ma alone @5v

Bump: I need to get a step down that was what I originally was asking 02 for at he start of this thinking if he did I could get it a lot fast in mail then waiting for Chinese new year to end and shipping to get back to normal

Bump:


----------



## renesis

But if your power supply is 5A, you can pull the power from there directly to supply the arduino and the screen, basically bypass the arduino.


----------



## rottison

Bump: guess I am a little nervous about it use 500ma and connecting it to a 6A psu


----------



## rottison

I use a ribbon cable from an old cd drive to connect the screen to the arduino any ideas on how to get a single wire to that pin?


----------



## O2surplus

rottison said:


> Bump: guess I am a little nervous about it use 500ma and connecting it to a 6A psu


There's no reason to be nervous. You can power the Arduino & the LCD directly from your 5V 6amp supply. You can bypass the Arduino's on board 5V regulator by connecting your 5V supply directly to the 5V pin at your LCD shield. Simply solder a separate wire to the backside of the 5V pin that feeds the LCD, and connect the other end of the wire to your 5V supply. This new wire will back feed straight 5V power into the LCD and the Arduino. That's basically the same thing I did with my iAqua Shield design. My Shield powers the Mega, not the other way around. The Mega's on board regulator never gets hot because it's not being used. :hihi:

Bump:


rottison said:


> I use a ribbon cable from an old cd drive to connect the screen to the arduino any ideas on how to get a single wire to that pin?



Solder a new wire directly to the backside of the 5V pin at the LCD shield. Easy Peasy:hihi:


----------



## rottison

yup till I frigged up and for got the last psu I used last night was a 12 and just hooked that right to the 5v pin guess what happen next


----------



## rottison

well replace it when I can


----------



## O2surplus

rottison said:


> yup till I frigged up and for got the last psu I used last night was a 12 and just hooked that right to the 5v pin guess what happen next



(super slo-mo) OHHHHHHHHHHHHHH NNNNNNNNOOOOOOOO!:frown:


----------



## mistergreen

ouch


----------



## rottison

yup


----------



## rottison

ok just ordered a new one and took the other one from a different build. tank didn't need it anyway


----------



## rottison

so you just soldered a wire to the lcd shield 5v vcc and connected it to the 5v psu and that's how you powered every thing.


----------



## kman

rottison said:


> yup and my screen takes 500ma alone @5v
> 
> Bump: I need to get a step down that was what I originally was asking 02 for at he start of this thinking if he did I could get it a lot fast in mail then waiting for Chinese new year to end and shipping to get back to normal


There are plenty of US-based suppliers for simple step-down boards. I bought one from EvilBay when I found out my relay needed 5v instead of 12, and had it in about 3 days. Just specify a US-based source. It will be a few bucks more than the Chinese ones, but you'll have it 3 weeks faster! (or more, considering the holiday) Check EvilBay for item #121171591143 (US-based seller). Under $5, so cheaper than Starbucks.


----------



## kman

kman said:


> Just a quick update.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> I'm not going to bother uploading more pictures than this, because you've seen them all before... the only difference is the date. Same time (8:59pm, right when the Circ pump goes off), same static-y fan icon.
> 
> Here's the interesting pattern:
> 
> 1/28 *Freeze *(Wed)
> 1/29 No freeze (Thu)
> 1/30 *Freeze *(Fri)
> 1/31 No freeze (Sat)
> 2/1 *Freeze *(Sun)
> 2/2 No freeze (Mon
> 2/3 No Freeze (Tue)
> 2/4 *Freeze *(Wed)
> 2/5 No freeze (Thu)
> 2/6 *Freeze *(Fri)
> 
> I'm REALLY interested to see if it continues into next week. Meanwhile, I look forward to trouble-free operation tomorrow, and a lockup at 9pm on Sunday  Monday through Wednesday will be the big tests, I think, to see if the double-day repeat happens again. I'll continue tracking...


So to continue the saga, here are some stats:

2/7 No Freeze (Sat)
2/8 No Freeze (Sun)
2/9 No Freeze (Mon)
2/10 No Freeze (Tue) (_started to get excited here!_)
2/11 *Freeze *(Wed) (DOH!)
2/12 No Freeze (Thu)
2/13 No Freeze (Fri)
2/14 No Freeze (Sat) (_I think... I didn't photograph it, got busy, but I think I would have had it frozen_)
2/15 No Freeze (Sun) (_I think... I didn't photograph it, got busy, but I think I would have had it frozen_)
2/16 No Freeze (Mon)
2/17 No Freeze (Tue)
2/18 *Freeze *(Wed) (DOH!)

So interesting that I'm having fewer freezes? One thing I did, just this week, either Mon or Tues evening (can't recall which), is change the OFF time for the pump that seems to trigger the freezes. I changed it from 9:00pm to 8:45pm. And guess what time the freeze occurred last night? If you guessed 8:44pm, give yourself a pat on the back.

I'll add a photo here when ImageShack is back online (wtf?), but it's basically the same as above, except with the different time.

So whatever is going on is clearly related to when that pump shuts off. Tonight, I'm going to move the pump to Aux 1 and run it there for a week or so, to see if it makes any difference.


----------



## rottison

sorry to hear you still having that freeze problem


----------



## kman

rottison said:


> sorry to hear you still having that freeze problem


Thx. It's pretty easy to deal with as long as I'm home, even if not home until late, so I have time to deal with it. Just have to have problems handled before I go on vacation again!


----------



## mistergreen

Try leaving the pump off completely. do it by hand for now. I wonder if it's hardware, some sort of surge when it runs & shuts off.


----------



## kman

mistergreen said:


> Try leaving the pump off completely. do it by hand for now. I wonder if it's hardware, some sort of surge when it runs & shuts off.


It's a tiny skimmer (Eheim Skim350) so there can't be that much juice pulled. If there's just something funky with that outlet or relay port, changing to Aux 1 should solve the issue, which may be good enough. I'll find out soon.


----------



## rottison

I was thinking the same thing or use a different pump if it a critical one to have

Bump: I would just try and leave it off disconnected then you will know it is that skimmer or not then you don't have to wait on trying the AUX channel


----------



## kman

rottison said:


> I was thinking the same thing or use a different pump if it a critical one to have
> 
> Bump: I would just try and leave it off disconnected then you will know it is that skimmer or not then you don't have to wait on trying the AUX channel


I used the skimmer for a year on a regular mechanical timer with no issues. If the tiny pump on the skimmer is causing an issue with the iAqua, I need to know, because the problem is something in my iAqua setup, not the skimmer.

Actually, just for fun I could plug in a small LED light (plugged into a cellphone charger, very little power draw) into the Skimmer outlet, and see if it still freezes up.


----------



## rottison

what I was getting at is weather it is the skimmer or the socket at least you know that is the problem if you thinking it is all this time and unplug it and it still freezes on you then you know it has nothing to do with the skimmer that is what I was thinking in a round about way


----------



## kman

rottison said:


> what I was getting at is weather it is the skimmer or the socket at least you know that is the problem if you thinking it is all this time and unplug it and it still freezes on you then you know it has nothing to do with the skimmer that is what I was thinking in a round about way


True, but since the freezing has been happening on fairly random days, it would be hard to eliminate. OTOH, if the freeze happens at the same designated time with just a little LED light plugged in, instead of the skimmer, at least then we know it's not the skimmer's fault.


----------



## NatroN

ever thought on just activating a watchdog stop to care about the freezes?


----------



## cooldex

Hey O2
I have completed the build and put everything together, but disappointed to find that with the iAqua shield I get a white screen and without it works fine as per photos. Is there something more I have to do on my LCD shield?


----------



## O2surplus

cooldex said:


> Hey O2
> I have completed the build and put everything together, but disappointed to find that with the iAqua shield I get a white screen and without it works fine as per photos. Is there something more I have to do on my LCD shield?


Nice work on the shield! The problem your experiencing is probably due to a loose connection at the 36 pin header between the Mega and the iAqua shield. The iAqua shield's 36 pin "stackable" header uses flat male pins instead of the more common square pins found on the rest of the shield. As a result the flat style pins don't tend to fit as tight as the square style pins. I ran into the same problem with mine, but the fix is fairly straight forward. You need to bend the flat male pins just slightly (use a straight edged tool inserted between the rows to bend them evenly). The slight bend will add some tension to the pins causing them to make better contact with the female header on the Mega. Give that a try and let me know if you need anymore help.


----------



## aechild

*Total newb here*

Im trying to get the code to verify but I continue to get the following error 

Arduino: 1.5.8 (Windows 7), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from C:\Program Files\Arduino\libraries\Time\DateStrings.cpp:11:0:
C:\Program Files\Arduino\libraries\Time\DateStrings.cpp:41:22: error: variable 'monthNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
PGM_P monthNames_P[] PROGMEM = 
^
C:\Program Files\Arduino\libraries\Time\DateStrings.cpp:58:20: error: variable 'dayNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
PGM_P dayNames_P[] PROGMEM = { dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7};
^
C:\Program Files\Arduino\libraries\Time\DateStrings.cpp:59:24: error: variable 'dayShortNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThrFriSat";
^
Error compiling.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.


----------



## robsworld78

O2surplus said:


> Nice work on the shield! The problem your experiencing is probably due to a loose connection at the 36 pin header between the Mega and the iAqua shield. The iAqua shield's 36 pin "stackable" header uses flat male pins instead of the more common square pins found on the rest of the shield. As a result the flat style pins don't tend to fit as tight as the square style pins. I ran into the same problem with mine, but the fix is fairly straight forward. You need to bend the flat male pins just slightly (use a straight edged tool inserted between the rows to bend them evenly). The slight bend will add some tension to the pins causing them to make better contact with the female header on the Mega. Give that a try and let me know if you need anymore help.


I always tin the pins with solder to thicken them up so there nice and tight, never thought of bending the tips. :hihi:

aechild not sure about those errors, make sure you have the correct library where it should be. Use the ones in the download package as they are lots of versions.


----------



## O2surplus

aechild said:


> Im trying to get the code to verify but I continue to get the following error
> 
> Arduino: 1.5.8 (Windows 7), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"
> 
> In file included from C:\Program Files\Arduino\libraries\Time\DateStrings.cpp:11:0:
> C:\Program Files\Arduino\libraries\Time\DateStrings.cpp:41:22: error: variable 'monthNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
> PGM_P monthNames_P[] PROGMEM =
> ^
> C:\Program Files\Arduino\libraries\Time\DateStrings.cpp:58:20: error: variable 'dayNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
> PGM_P dayNames_P[] PROGMEM = { dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7};
> ^
> C:\Program Files\Arduino\libraries\Time\DateStrings.cpp:59:24: error: variable 'dayShortNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
> char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThrFriSat";
> ^
> Error compiling.
> 
> This report would have more information with
> "Show verbose output during compilation"
> enabled in File > Preferences.



If you go back to Arduino 1.0.6 instead of the version you're using now, you shouldn't have any problems getting the code to compile. It seems that every time the Arduino IDE gets an upgrade, it creates headaches like this....:hihi:


----------



## aechild

Awesome that seemed to work now I got a new one

Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
iAqua:157: error: 'IRsend' does not name a type

I have IRsend-Demo in my Library any ideas?


----------



## rick dale

*wow*

Mind boggling !


----------



## O2surplus

aechild said:


> Awesome that seemed to work now I got a new one
> 
> Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
> iAqua:157: error: 'IRsend' does not name a type
> 
> I have IRsend-Demo in my Library any ideas?


You need the "IRremote" Library. Once you have that, you should be home free.


----------



## rottison

version can make all the difference in compiling or not


----------



## aechild

Thats the weird thing I have it in my library does the old version not use the key word part of the library. ( I posted a screen shot f what my library looks like incase Im doing something wrong)


----------



## aechild

GOT it!! I needed 1.0.5 Rev 2!!


----------



## fietsenrex

time to show you guys how far I've gotten 
don't mind the PH I'm still not sure if I'm going to implement it but I created the symbol and an empty menu page just to see if I understand coding a little bit 

thanks guys for the help and support


----------



## rottison

very nice tank setup


----------



## robsworld78

Nicely done fietsenrex!


----------



## kman

kman said:


> kman said:
> 
> 
> 
> Just a quick update.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> <snip>
> 
> 1/28 *Freeze *(Wed)
> 1/29 No freeze (Thu)
> 1/30 *Freeze *(Fri)
> 1/31 No freeze (Sat)
> 2/1 *Freeze *(Sun)
> 2/2 No freeze (Mon
> 2/3 No Freeze (Tue)
> 2/4 *Freeze *(Wed)
> 2/5 No freeze (Thu)
> 2/6 *Freeze *(Fri)
> 
> 
> 
> <snip>
> 2/7 No Freeze (Sat)
> 2/8 No Freeze (Sun)
> 2/9 No Freeze (Mon)
> 2/10 No Freeze (Tue) (_started to get excited here!_)
> 2/11 *Freeze *(Wed) (DOH!)
> 2/12 No Freeze (Thu)
> 2/13 No Freeze (Fri)
> 2/14 No Freeze (Sat) (_I think... I didn't photograph it, got busy, but I think I would have had it frozen_)
> 2/15 No Freeze (Sun) (_I think... I didn't photograph it, got busy, but I think I would have had it frozen_)
> 2/16 No Freeze (Mon)
> 2/17 No Freeze (Tue)
> 2/18 *Freeze *(Wed) (DOH!)
> 
> <snip>
> 
> So whatever is going on is clearly related to when that pump shuts off. Tonight, I'm going to move the pump to Aux 1 and run it there for a week or so, to see if it makes any difference.
Click to expand...

So here's news:

2/19: No freeze.
2/20: No freeze. 
2/21: *FREEZE*... at 8:44 pm! Moved the skimmer to Aux1
2/22: No idea... I had the system off for a while because reasons.
2/23: *FREEZE*... _with Aux1 static'd out_!

So on the 20th I experimented with moving the start time. (to 8:45 instead of 9:00) 

Sure enough, at 8:44, the next day (2/21), the system locked up again! So actual time doesn't appear to be a factor. So my next step was moving the skimmer to Aux1 (and resetting the start/stop times for each). 

On 2/22 I had the system disconnected for a significant stretch as I was moving to a new canister filter, and had most things off for quite a while. No freezes, but things were off (manually), disconnected, etc., so no reliable data for this date. _I also moved the skimmer to Aux 1 while I was moving things around._

Tonight, 2/23, the system froze again, at 8:44, but this time on Aux1. The same static-y icon happened, but this time on Aux 1. I unfortunately didn't take a picture, but it's not too hard to imagine, if you look at the other locked-up pictures. The Aux 1 icon is the one that's all funky.

Huh.

I think I could pretty clearly make this problem go away entirely simply by moving the skimmer, which is not super critical, to either an entirely uncontrolled outlet on a separate power strip, and use a simple mechanical timer, or maybe set the skimmer power control to stay on full time, and plug the timer into that?

But I really want this issue to be FIXED so the whole thing works as designed, rather than working around the issue and having 3 outlets that I can't depend on. 

I guess my next step is to try a light or something small and simple on that channel and make sure there's not something about the skimmer itself that's causing issues, although I can't fathom how that could be the case. (I note AH uses the same model surface skimmer on his tank and his iAqua, so it's nothing inherently wrong with the design.)


----------



## fietsenrex

rottison said:


> very nice tank setup


Thanks I'm still waiting for some Parts for the CO2 so I can add some more plants in the front



robsworld78 said:


> Nicely done fietsenrex!


Thanks I'm planning on doing somerhing simmulair with my next tank so this was really a trail if it was even pissible but it worked out as plannend


----------



## saiko

kman said:


> But I really want this issue to be FIXED so the whole thing works as designed, rather than working around the issue and having 3 outlets that I can't depend on.
> 
> I guess my next step is to try a light or something small and simple on that channel and make sure there's not something about the skimmer itself that's causing issues, although I can't fathom how that could be the case. (I note AH uses the same model surface skimmer on his tank and his iAqua, so it's nothing inherently wrong with the design.)


So, is your relay(does it have opto-isolated inputs?) supply and the supply to arduino both the same?


I would first check the I2C connections/solders between arduino and the RTC, thats what is most sensitive to noise, and might hang the system if its function is being called in a loop somwhere.


----------



## renesis

I second saiko's question. Also, does your relay board have diodes across the coils?


----------



## Fluffles

Hi Kman,

I made my own controller about a year ago and experienced similar issues with switching AC relays (mainly with filter, CO2 solenoid, and skimmer).
My LCD would freeze and display weird characters when this happened. I read other users experienced issues with Arduino resetting itself or even freezing.

I did a lot of research and added decoupling capacitors, AC snubbers, and ferrite beads to my layout. I never really solved the issue completely, so I just made the LCD reset itself every time after an AC relay was turned on/off. My LCD was not touchscreen, it was a simple 16x2 LCD.

Here's a few recommendations:
- If possible get your AC wires/relays/outlets as far away from your DC circuitry
- Add some snubbers to the most problematic outlets (it helped reduce the issue for me)
- Use the watchdog timer on your Arduino. If it freezes, it will just reset itself and everything will be back to normal.
- If it's the LCD freezing, try re-drawing the screen or re-initializing the LCD after AC relays get triggered.

Good luck!


----------



## kman

saiko said:


> So, is your relay(does it have opto-isolated inputs?) supply and the supply to arduino both the same?
> 
> 
> I would first check the I2C connections/solders between arduino and the RTC, thats what is most sensitive to noise, and might hang the system if its function is being called in a loop somwhere.


I have the 5V relay board from DealExtreme that AnotherHobby recommended to me. It is opto-isolated.

http://www.dx.com/p/8-channel-relay...h-official-arduino-boards-224064#.U-0bQRbvp2A

The relay board is powered via a step-down board to deliver 5V, since the original spec was for a 12V board and that's what O2's iAqua Shield delivers. Everything else on the board works fine, though.

The RTC is on O2Surplus' iAqua Shield, so that's essentially directly connected.

Bump:


Fluffles said:


> Hi Kman,
> 
> I made my own controller about a year ago and experienced similar issues with switching AC relays (mainly with filter, CO2 solenoid, and skimmer).
> My LCD would freeze and display weird characters when this happened. I read other users experienced issues with Arduino resetting itself or even freezing.
> 
> I did a lot of research and added decoupling capacitors, AC snubbers, and ferrite beads to my layout. I never really solved the issue completely, so I just made the LCD reset itself every time after an AC relay was turned on/off. My LCD was not touchscreen, it was a simple 16x2 LCD.
> 
> Here's a few recommendations:
> - If possible get your AC wires/relays/outlets as far away from your DC circuitry
> - Add some snubbers to the most problematic outlets (it helped reduce the issue for me)
> - Use the watchdog timer on your Arduino. If it freezes, it will just reset itself and everything will be back to normal.
> - If it's the LCD freezing, try re-drawing the screen or re-initializing the LCD after AC relays get triggered.
> 
> Good luck!


Thanks for the tips 

Everything is crammed into one box, so there's really no way to move anything without tearing down and completely rebuilding. I'm far from the only one with lots crammed in tight, though, so I don't know that that's it.

What are snubbers?

I don't know anything about the watchdog timer... rebooting the whole thing on a regular basis is not good, though. Every time it's power cycled, the whole system shuts down: filters, heaters, lights, and then starts up as the relay is powered, and then stops as the Arduino boots, and then comes back on pursuant the power schedule once the Arduino loads it's code. That's fine on an occasional basis, but I don't want to have that start happening multiple times per day on a regular basis.

The LCD is the only interface. How would I reinitialize the screen if it's the only way to interact? Once the screen is frozen, the only option I know of is to power cycle the system.


----------



## renesis

kman, Are you using the jumper on that relay board you posted? If so, it isn't 'truly' opto-isolated, and I could see the skimmer messing with the dc side.

See here for the relay opto-isolation: http://arduino-info.wikispaces.com/RelayIsolation


----------



## cooldex

Hi O2 and robsworld
I tried to bend the pins but still no go maybe I will try to tin the pins. Bent a pin right out and had one sitting out.. lol But I also had another thought I will use head pins on the shield instead of header. I have ordered the pin strips 1.25, when i get them will have to remove the header, bit of work but think the pins will be thicker.


----------



## kman

renesis said:


> kman, Are you using the jumper on that relay board you posted? If so, it isn't 'truly' opto-isolated, and I could see the skimmer messing with the dc side.
> 
> See here for the relay opto-isolation: http://arduino-info.wikispaces.com/RelayIsolation


No added jumpers, but I'll check to see if there were jumpers already in place when I got it, when I get home tonight.


----------



## O2surplus

cooldex said:


> Hi O2 and robsworld
> I tried to bend the pins but still no go maybe I will try to tin the pins. Bent a pin right out and had one sitting out.. lol But I also had another thought I will use head pins on the shield instead of header. I have ordered the pin strips 1.25, when i get them will have to remove the header, bit of work but think the pins will be thicker.



:hihi: I said to bend them "slightly"-LOL Make sure you order pins with the correct pin spacing. They need to be .1" or 2.54mm pitch to fit correctly. Hopefully the mods you're making will fix the issue :wink:.


----------



## robsworld78

cooldex said:


> Hi O2 and robsworld
> I tried to bend the pins but still no go maybe I will try to tin the pins. Bent a pin right out and had one sitting out.. lol But I also had another thought I will use head pins on the shield instead of header. I have ordered the pin strips 1.25, when i get them will have to remove the header, bit of work but think the pins will be thicker.


Sounds a bit late to tin them. :hihi: Maybe you can make a pin with the solder. I hate removing some of those headers, on the 12-bit PWM board the holes are very small and pins are tight without solder.


----------



## jmh474

ok so im stuck again, relay board this time, im using a 12 / 8 way board, the little led on the relay comes on (led is dim)but its not triggering the relay, iv got the jumper set to high but when i have the jumper set to low (led is bright) the relay is always trigerd, its as if there int enough voltage coming from the arduino to trigger the relay any help would be grate thanks

Sent from my GT-S5360 using Tapatalk 2


----------



## renesis

jmh474 said:


> ok so im stuck again, relay board this time, im using a 12 / 8 way board, the little led on the relay comes on (led is dim)but its not triggering the relay, iv got the jumper set to high but when i have the jumper set to low (led is bright) the relay is always trigerd, its as if there int enough voltage coming from the arduino to trigger the relay any help would be grate thanks
> 
> Sent from my GT-S5360 using Tapatalk 2


We're going to need a few more details, how do you have the relays wired to the arduino? What transistor are you using? What voltage/amperage is your power supply?


----------



## rottison

jmh do you have a common ground between arduino and relay board


----------



## saiko

kman said:


> The relay board is powered via a step-down board to deliver 5V, since the original spec was for a 12V board and that's what O2's iAqua Shield delivers. Everything else on the board works fine, though.
> 
> .


I think this is where the issue comes in. You are better off using a 'separate' supply for relay board and one more for rest of equipment. Or else your opto-couplers are no benefit.

As rottison says -no common ground.


though rtc is soldered on board, do check for any loose joints. But one above is still main concern IMO.


----------



## rottison

Just wondering have you tried a common ground I mean just to make sure I know with own you have to have one so why not try it we are not dealing with high end stuff here


----------



## kman

saiko said:


> I think this is where the issue comes in. You are better off using a 'separate' supply for relay board and one more for rest of equipment. Or else your opto-couplers are no benefit.
> 
> As rottison says -no common ground.
> 
> 
> though rtc is soldered on board, do check for any loose joints. But one above is still main concern IMO.


In the end, ALL "grounds" are common.

The power supply is a 12v computer power supply putting out 13.3 amps. I pulled a separate 12v rail for the step down to 5 volts. That's as separate as it's going to get!


----------



## saiko

So, you might want to try a separate 5V supply. One like this
http://www.dx.com/p/5v-2a-wall-power-adapter-for-scanner-surveillance-camera-more-us-plug-149679




kman said:


> In the end, ALL "grounds" are common.


And read this to start changing the assumption why it doesnt(should not) need to be common.
www.arduino-info.wikispaces.com/RelayIsolation

But I know, few people are lucky to getaway without using one. Unlucky ones like you and me,might well need this.


Hope that helps!!


----------



## kman

saiko said:


> So, you might want to try a separate 5V supply. One like this
> http://www.dx.com/p/5v-2a-wall-power-adapter-for-scanner-surveillance-camera-more-us-plug-149679
> 
> And read this to start changing the assumption why it doesnt(should not) need to be common.
> www.arduino-info.wikispaces.com/RelayIsolation
> 
> But I know, few people are lucky to getaway without using one. Unlucky ones like you and me,might well need this.
> 
> Hope that helps!!


I do intend to read up, and thank you for the information. 

Once I check the jumper issue, though, what I might just do is buy the correct relay in the first place, the 12v one that does away with the need for the separate step down. I wish I had noticed the difference, buried in the specs, when AH recommended this relay board as an alternative, but hey, at least it's _mostly_ working.


----------



## jmh474

will im using a pc psu, 5v through the usb so im thinking i might be under powering the arduino not to shore, the relay board and arduino are powdered from the psu so they share a common ground, if it works like that lol

Sent from my GT-S5360 using Tapatalk 2


----------



## Okedokey

kman said:


> In the end, ALL "grounds" are common.
> 
> The power supply is a 12v computer power supply putting out 13.3 amps. I pulled a separate 12v rail for the step down to 5 volts. That's as separate as it's going to get!


A common ground can often not be so due to resistance or conduction issues. Also, most if not all PC PSU's are not multirail as they have one output coil. That means you're using the same 12V rail regardless. Given the very low load, the PSU is probably struggling with voltage regulation. Test it under load to ensure its is +/- 10%. You probably also have a lot of ripple as this PSU is not designed to run such a small load.


----------



## kman

Okedokey said:


> A common ground can often not be so due to resistance or conduction issues. Also, most if not all PC PSU's are not multirail as they have one output coil. That means you're using the same 12V rail regardless. Given the very low load, the PSU is probably struggling with voltage regulation. Test it under load to ensure its is +/- 10%. You probably also have a lot of ripple as this PSU is not designed to run such a small load.


Hmm. Peak to peak max ripple is rated at 120 mV. Minimum load is 0.0 amps, max (on the rails in question) is 6 amps.

http://junktronix.com/ebay/proddocs/XL160.pdf (XL160-12 CS)


----------



## Okedokey

kman said:


> Hmm. Peak to peak max ripple is rated at 120 mV. Minimum load is 0.0 amps, max (on the rails in question) is 6 amps.
> 
> http://junktronix.com/ebay/proddocs/XL160.pdf (XL160-12 CS)


Yeah that ripple is on the maximum allowed for ATX design standards. Pretty lumpy. That can cause issues with logic. I would suggest trying to use an alternative better quality PSU.


----------



## saiko

I second the Okedokey's suggestion. It helps a great deal.

Also Kman, buying a new 5v supply might turn out cheaper than whole new 12V board, and lesser stuff in the attic. Just a suggestion :icon_smil


----------



## rottison

kman most computer psu supply dirty power mother board makers have know this for years that is why you see so many snubers and power cleaners on boards these days because they know every one will not by the corsair 1000 psu when right on the shelf is the 50$ china one for almost same power but if you are using a computer psu then why aren't you using the 5v out put to power your relay or doesn't it have one for some odd reason?

Bump: after seeing the pdf I see why now 5v


----------



## robsworld78

kman, what happens why you go to the power screen and manually turn the relay on and off over and over? I don't think you ever mentioned that.


----------



## kman

robsworld78 said:


> kman, what happens why you go to the power screen and manually turn the relay on and off over and over? I don't think you ever mentioned that.


I've turned it on and off manually before, but never over and over. There were never issues the few times I manually did it. (occasionally screen would not change state (red/green) correctly, but it didn't freeze up, and after return to home screen all was well again, including going back to power screen)

Ugh. I hate to think that I bought this power supply just for this project (based on another's recommendation) and have to ditch it. I'll need to rebuild the whole enclosure. Which I guess I sort of planned to do anyway, but not before everything was working PERFECTLY so I knew it's worth the effort. Hard to believe those crappy little wall warts do a better job than a (relatively) beefy power supply like this.

How much 5v does the relay board pull on it's own? If I can power that independently with a small PS temporarily, I may be able to swap in a different 12v one temporarily, just for testing, but I think all I have on hand is a 1 amp 12v wall wart.

What's the best quality PS out there? I'd rather get this done once and for all, if power is really the issue.


----------



## MrMan

kman said:


> I've turned it on and off manually before, but never over and over. There were never issues the few times I manually did it. (occasionally screen would not change state (red/green) correctly, but it didn't freeze up, and after return to home screen all was well again, including going back to power screen)
> 
> Ugh. I hate to think that I bought this power supply just for this project (based on another's recommendation) and have to ditch it. I'll need to rebuild the whole enclosure. Which I guess I sort of planned to do anyway, but not before everything was working PERFECTLY so I knew it's worth the effort. Hard to believe those crappy little wall warts do a better job than a (relatively) beefy power supply like this.
> 
> How much 5v does the relay board pull on it's own? If I can power that independently with a small PS temporarily, I may be able to swap in a different 12v one temporarily, just for testing, but I think all I have on hand is a 1 amp 12v wall wart.
> 
> What's the best quality PS out there? I'd rather get this done once and for all, if power is really the issue.


Why don't you use the 5V switcher/step-down with your 12V wallwart to power the relay board but make it isolated? Keep your big power supply for the arduino/shield and use the seperate wallwart just for the relay board


----------



## kman

MrMan said:


> Why don't you use the 5V switcher/step-down with your 12V wallwart to power the relay board but make it isolated? Keep your big power supply for the arduino/shield and use the seperate wallwart just for the relay board


Building the enclosure, I went to great pains to be able to power the whole thing with a standard PC power cable, which has a fuse and a lighted power switch. Trying to avoid a wall wart entirely, and use higher quality components. I missed the ripple issue, I guess.

Also, I'd need to either cut my wall wart cable (ruining it for future use) or buy barrel jack female connectors to connect it to the step down board, since it doesn't have the right kind of power in connector.

If I end up having to use a wall wart, I'd rather it be just one that does it all. And I'll have to pull out the existing power supply, and redo a lot of the power connections completely.


----------



## MrMan

kman said:


> Building the enclosure, I went to great pains to be able to power the whole thing with a standard PC power cable, which has a fuse and a lighted power switch. Trying to avoid a wall wart entirely, and use higher quality components. I missed the ripple issue, I guess.
> 
> Also, I'd need to either cut my wall wart cable (ruining it for future use) or buy barrel jack female connectors to connect it to the step down board, since it doesn't have the right kind of power in connector.
> 
> If I end up having to use a wall wart, I'd rather it be just one that does it all. And I'll have to pull out the existing power supply, and redo a lot of the power connections completely.


Gotcha. In looking at your PSU it looks like it has two different 12V outputs, one of which is labelled 'aux' and floating (ie isolated), is that the case? If so you could use one for the arduino/shield and one for the step-down/relay board.


----------



## kman

MrMan said:


> Gotcha. In looking at your PSU it looks like it has two different 12V outputs, one of which is labelled 'aux' and floating (ie isolated), is that the case? If so you could use one for the arduino/shield and one for the step-down/relay board.


I could switch 12v rails, but that wouldn't help the ripple issue.

That said, I don't know that ripple is the actual issue yet. I haven't had time to investigate since the suggestion came up yesterday. Price of occasionally having a social life.


----------



## aechild

Got the screen to boot up!!! No icons however any ideas?


----------



## aechild

Also I've seen some pretty awesome custom shields around the forum,(honestly I didn't know you could make/order custom boards like this until this forum!). Is there a .rar file available or something on the forum for the custom shields?


----------



## O2surplus

aechild said:


> Also I've seen some pretty awesome custom shields around the forum,(honestly I didn't know you could make/order custom boards like this until this forum!). Is there a .rar file available or something on the forum for the custom shields?


I posted the build files for my version of the iAqua Shield a few pages back:hihi:


See this post for the shield plans-http://www.plantedtank.net/forums/showpost.php?p=7085810&postcount=709

and this one for a better parts list-http://www.plantedtank.net/forums/showpost.php?p=7114962&postcount=735


----------



## Okedokey

kman said:


> I could switch 12v rails, but that wouldn't help the ripple issue.


Agreed as there really is only one 12V rail


----------



## fietsenrex

damn.. my relay board doesn't function either..
in off position the LEDs are fully on and in the on position they are dimly lit..
it only triggers if I intall or remove the jumper on the relay board.

I wired it according to the fritzing files 
I got the 12v board AH specified.. I'm now assuming I need to trigger the relay with 12v so I need to add a transistor to the system to step up the voltage to 12v 

if I short a pin to GND it triggers a relay 
I've put the jumper on Voc-rv Voc

if I jumper rv Voc-GND the relays don't trigger and obviously it doesn't trigger when I don't install a jumper

also the coils get really hot that isn't normal I assume?


----------



## saiko

can you post a picture of your connections and make of the relay board?
Good thing is relays are triggering, bad thing is they are getting hot, which I guess could be due to some bad connection.

You ll need something like a boost convertor instead of simple transistor to stepup voltage- which I doubt you ll need. So what power supply(model) do you have installed currently?


----------



## fietsenrex

well.... 
the trigger voltage wasn't the problem.. 

as I was taking pictures I noticed a 5 on the relay's, wich corresponds to the trigger voltage, so I took an old phone charger and sure enough it works like a charm.

so no issues anymore I accidenktly got a 5v board instead of 12v..

feel kinda dumb now actually..


----------



## kman

fietsenrex said:


> well....
> the trigger voltage wasn't the problem..
> 
> as I was taking pictures I noticed a 5 on the relay's, wich corresponds to the trigger voltage, so I took an old phone charger and sure enough it works like a charm.
> 
> so no issues anymore I accidenktly got a 5v board instead of 12v..
> 
> feel kinda dumb now actually..


Don't feel dumb. I did the exact same thing, if it's any consolation. :iamwithst

At least you spotted the error yourself... someone else spotted it in my photos I posted while trying to troubleshoot! LOL (it's about 5-10 pages back in this thread, I think)


----------



## Proffit

I had stumbled across this project while doing some research for how I was going to build this same thing. I'm new to eagle software and have started playing around with it. I am sure I'm missing something as I know from several posts that people are using this board, but it looks like none of the ground connections are made on the board. Am I missing something?

edit
searching google i found the answer to my question.

Thanks


----------



## cooldex

Hi O2
I got the connection sorted, but the display keeps resetting constantly, and using the Arduino Mega on its own with display it resets after that. I have to reset the broad to get it to be stable. I notice that the power led's keeps flickering when the display is resetting, it seems that the power to the display via the iAqua shield seems to reset constantly in a cycle, but on it's own the shield power is stable. I am stumped.


----------



## O2surplus

cooldex said:


> Hi O2
> I got the connection sorted, but the display keeps resetting constantly, and using the Arduino Mega on its own with display it resets after that. I have to reset the broad to get it to be stable. I notice that the power led's keeps flickering when the display is resetting, it seems that the power to the display via the iAqua shield seems to reset constantly in a cycle, but on it's own the shield power is stable. I am stumped.



I'm no coding expert, so I'm hoping someone else will chime in. I believe your current problem is a software issue. Are you using the latest version of AH's code? There's a few lines in the code that need to be properly commented either in or out depending on whether you're loading the code for the first time or not. It seems that if the EEPROM does not contain valid integers at start up, the controller will reset itself constantly. I ran into the same problem with mine until I wrestled through all the menus and input integer values that were within limits. Once that was done the controller operated normally. IIRC the heater menu gave me the most trouble. 



Code:


// iAqua Aquarium Controller w/ iPhone-like Interface
// Written by Dan Cunningham, aka AnotherHobby @ plantedtank.net
// Much code was swiped, modified, and integrated or otherwise inspired from other public works
// All code is public domain, feel free to use, abuse, edit, and share
// Written for Arduino Mega 2560

// CURRENT VERSION 1.0.4
// - the smart startup routine has been reworked and fixed by robsworld78 at The Planted Tank forums!
// - added a first run routine that will zero out all EEPROM data that is needed by iAqua
// - see the warning immediately below:
// - ////////////////////////////////////////////////////////////////////////////////////////////
// - // WARNING!! IF YOU HAVE CONFIGURED iAqua BEFORE v 1.0.4 AND DO NOT WANT TO LOOSE YOUR DATA
// - // YOU MUST COMMENT OUT THE FISRT LINE OF THE startup() ROUTINE THAT CALLS firstRunSetup().
// - // IF YOU DO NOT, IT WILL ZERO ALL OF YOUR SETTINGS!!!!

Here's the line you need to comment out, it's on line 468-



Code:


void setup()
{

  // set default values for the first ever run, you can comment this out after the first run if you want
  // firstRunSetup();


----------



## kman

^^ I though AH added a Smart Startup routine that takes care of those issues?


----------



## O2surplus

kman said:


> ^^ I though AH added a Smart Startup routine that takes care of those issues?



LOL- That's why I asked about what version of the code he was using.:hihi:


----------



## robsworld78

The SmartStartup isn't for the initial setup only for when the arduino has been restarted after the initial setup.

There's a function called firstRunSetup() that takes care of the initial eeprom values, the one you're talking about kman. That function is only in v1.0.4.

The firstRunSetup function looks at eeprom value 2014 to see if its 65, if it isn't the function runs. When it runs it sets 2014 to 65 so it never runs again. 

So if you're using 1.0.4 it would have ran that firstRunSetup, did its thing and everything should be ok in the eeprom. But yes if you're running v1.0.3 then you have to do what o2 mentioned and comment out that line. 

Everyone should run the newest version.


----------



## rottison

I got my 7" replacement screen in the mail to replace the one I smoked last week so that is good but the new replacement arduino wont be here till march 6 that is from a USA seller that is waiting on stock from china LOL


----------



## cooldex

O2surplus said:


> I'm no coding expert, so I'm hoping someone else will chime in. I believe your current problem is a software issue. Are you using the latest version of AH's code? There's a few lines in the code that need to be properly commented either in or out depending on whether you're loading the code for the first time or not. It seems that if the EEPROM does not contain valid integers at start up, the controller will reset itself constantly. I ran into the same problem with mine until I wrestled through all the menus and input integer values that were within limits. Once that was done the controller operated normally. IIRC the heater menu gave me the most trouble.
> 
> 
> 
> Code:
> 
> 
> // iAqua Aquarium Controller w/ iPhone-like Interface
> // Written by Dan Cunningham, aka AnotherHobby @ plantedtank.net
> // Much code was swiped, modified, and integrated or otherwise inspired from other public works
> // All code is public domain, feel free to use, abuse, edit, and share
> // Written for Arduino Mega 2560
> 
> // CURRENT VERSION 1.0.4
> // - the smart startup routine has been reworked and fixed by robsworld78 at The Planted Tank forums!
> // - added a first run routine that will zero out all EEPROM data that is needed by iAqua
> // - see the warning immediately below:
> // - ////////////////////////////////////////////////////////////////////////////////////////////
> // - // WARNING!! IF YOU HAVE CONFIGURED iAqua BEFORE v 1.0.4 AND DO NOT WANT TO LOOSE YOUR DATA
> // - // YOU MUST COMMENT OUT THE FISRT LINE OF THE startup() ROUTINE THAT CALLS firstRunSetup().
> // - // IF YOU DO NOT, IT WILL ZERO ALL OF YOUR SETTINGS!!!!
> 
> Here's the line you need to comment out, it's on line 468-
> 
> 
> 
> Code:
> 
> 
> void setup()
> {
> 
> // set default values for the first ever run, you can comment this out after the first run if you want
> // firstRunSetup();


My version is 1.0.4. The thing I don't understand is that the it works fine without the iAqua shield. I connected all three boards and tested the pins and all tested fine. Something else is causing the Arduino to reset. Still trying to find out what it is. I also noticed that the regulators get very hot fast within a minute, while without the iAqua shield ran for about an hour was warm.


----------



## kman

^^ The power regulators on O2's shield are MUCH better quality than the regulators used on the Arduino. If you're feeding raw 12v power into the Arduino, the stock power regulators are going to get really hot. That's why O2 used different ones and bypassed the stock regulators, and why AH had to build a separate power breakout for all the 12v gear and feed lower voltage to the Arduino in his build.


----------



## O2surplus

cooldex said:


> My version is 1.0.4. The thing I don't understand is that the it works fine without the iAqua shield. I connected all three boards and tested the pins and all tested fine. Something else is causing the Arduino to reset. Still trying to find out what it is. I also noticed that the regulators get very hot fast within a minute, while without the iAqua shield ran for about an hour was warm.



If the regulators on the iAqua shield are getting too hot to touch, then there's a short circuit somewhere. The regs are rated for one amp and feature overload protection circuits built in, so they'll create quite a bit of heat if they're shorted. The regulator cuts power when it's in "protection mode" That's probably the reason why the arduino resets. You need to closely inspect all of your components for solder bridges ect.. and the traces themselves. Unless the PcB's were "100% Electronically checked" prior to soldering, it's hard to rule out that there's a defect in the PcB itself. You'll need to grab a multimeter and do some detective work. 
The PcB design that you're using isn't really much different from my original prototype, so I'm confident that the problem isn't inherent to the design. Hopefully you'll find the short and it will be a simple fix. Please feel free to PM me if you need additional help. I have 4 iAqua controllers up and running, so I'd be able to provide you with "real world" voltage values and current measurements if needed.


----------



## fietsenrex

well there is something strange going on with my Iaqua..

I accedently had set the high temp warning to the same number as the switch on value wich caused the the iaqua to rapidly switch on and off the heater.
it crashed, rebooted and worked again, I set the high temp warning back to the original setting but then the temperature probe stopped working.
last night I reloaded the code during a ramp and the temperature probe worked again, but as it was rebooted during a ramp all next ramps start from full bright to the desired setting (wich was moonlight..)

this morning I reloaded the same code hoping the ramping was fixed but now the temperature has stopped working again...

any ideas?
the arduino is powered bij a 2A 5V phone charger and a 150w 12V power supply 

temp is in C not in F and I use PWM for the lights wich is set to 255 max in the Iaqua I only go as high as 250


Edit:
This evening I cleared the EEPROM and reloaded the code and had the temperature working for a small amount of time but as soon as it restarts (switching from my laptop to the phone charger) it goes back to the same failure.. It is static at -127

The lighting works correclty at the moment


----------



## cooldex

I found three resistors faulty and replaced them and now it seems to work fine although I cannot set the date and time every time I save it nothing happens, any ideas?
photo:


----------



## robsworld78

After you save the date and time you need to restart the arduino.


----------



## cooldex

Yes you right Robsworld...It is all set now... Thanks to OS, Kman and Ronsworld I have finally got a working unit. Now to connect my LEDS. When I get some time I will look at modifying the code for a reef tank which I have. I will post photos when I have all connected and running in my tank. THANKS guys! This makes my day.


----------



## robsworld78

If you add the following to the save button it will restart the arduino so you don't have to.



Code:


asm volatile ("  jmp 0");


----------



## O2surplus

cooldex said:


> Yes you right Robsworld...It is all set now... Thanks to OS, Kman and Ronsworld I have finally got a working unit. Now to connect my LEDS. When I get some time I will look at modifying the code for a reef tank which I have. I will post photos when I have all connected and running in my tank. THANKS guys! This makes my day.



Your welcome mate! ( I've always wanted to say that. :hihi Before you connect your leds, make sure that your copy of AH's code matches the pin out for the iAqua shield. AH made some changes to the code along the way, so the led PWM output connections on the iAqua shield may not match the code. The section of code that sets the PWM channels should look like this-



Code:


// if you have a Current Satellite Plus, this is true
// if you are controlling your lights directly with PWM, this is false
boolean lightCSP = false;
int maxRGBW = 255;

// define RGBW PWM pins
int ledRedPin = 4;
int ledBluePin = 6;
int ledGreenPin = 5;
int ledWhitePin = 7;


----------



## kman

cooldex said:


> Yes you right Robsworld...It is all set now... Thanks to OS, Kman and Ronsworld I have finally got a working unit. Now to connect my LEDS. When I get some time I will look at modifying the code for a reef tank which I have. I will post photos when I have all connected and running in my tank. THANKS guys! This makes my day.


Very exciting! Mine is running the tank, but needs daily tending due to the lockups. Life has been hectic and it's probably going to be April before I have time to tear mine down, replace the power supply with a wall wart style 12v PS, and swap the 5V optical relay for the 12v replacement I bought to simplify things.


----------



## cooldex

O2surplus said:


> Your welcome mate! ( I've always wanted to say that. :hihi Before you connect your leds, make sure that your copy of AH's code matches the pin out for the iAqua shield. AH made some changes to the code along the way, so the led PWM output connections on the iAqua shield may not match the code. The section of code that sets the PWM channels should look like this-
> 
> 
> 
> Code:
> 
> 
> // if you have a Current Satellite Plus, this is true
> // if you are controlling your lights directly with PWM, this is false
> boolean lightCSP = false;
> int maxRGBW = 255;
> 
> // define RGBW PWM pins
> int ledRedPin = 4;
> int ledBluePin = 6;
> int ledGreenPin = 5;
> int ledWhitePin = 7;


Cheers O2 I will make these changes or where can I get the full code? one question I don't have the Fading option in my schedule, only power, dosing and led icons. Is there something I have missed?


----------



## O2surplus

cooldex said:


> Cheers O2 I will make these changes or where can I get the full code? one question I don't have the Fading option in my schedule, only power, dosing and led icons. Is there something I have missed?



I'm not sure? The fading schedule may only be an option that comes up if the software was loaded with PWM enabled instead of the Current lighting IR control. Try editing the code like I showed you and reload it. Maybe that will make the difference.


----------



## cooldex

O2surplus said:


> I'm not sure? The fading schedule may only be an option that comes up if the software was loaded with PWM enabled instead of the Current lighting IR control. Try editing the code like I showed you and reload it. Maybe that will make the difference.


Hi O2 I did that still no visibility of the Fading option like in the photo of yours:


----------



## O2surplus

cooldex said:


> Hi O2 I did that still no visibility of the Fading option like in the photo of yours:



Do you have this screen?










You have to tap the sun/ moon icons on each ramp to set the fade duration for that ramp. What happens when you try?


----------



## cooldex

O2surplus said:


> Do you have this screen?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> You have to tap the sun/ moon icons on each ramp to set the fade duration for that ramp. What happens when you try?


When I tap on any icon, another screen is displayed to change the start time and length. But the code has a fade section.


----------



## fietsenrex

Did you switch on the lighting in the power menu? And the lighting in the power schedule menu?


----------



## cooldex

fietsenrex said:


> Did you switch on the lighting in the power menu? And the lighting in the power schedule menu?


Yes I did.  If you see my photos the LED's are green, and schedule running.


----------



## cooldex

Hi Guys can you tell me how your guys wired leds:

I have 2 x Meanwell ELN 60 48D wired up as below, but not sure about the iAqua pins:

Meanwell to relay board:
Meanwell 1: Relay 1:
white (DIM+) -> relay1 - positive
Blue (DIM-) -> relay1 - neutral
Meanwell 2: Relay 2:
white (DIM+) -> relay1 - positive
Blue (DIM-) -> relay1 - neutral

iAqua to Relay Board 12V:
iAqua PWM pins: Relay:
Pin 7 White out -> - Relay1 in
Pin 6 Red out -> - Relay2 in 
12V -> - 12v in
GND -> - GND in

What are the Light1 and Light 2 outputs used for and how much voltage it should show?


----------



## O2surplus

cooldex said:


> Hi Guys can you tell me how your guys wired leds:
> 
> I have 2 x Meanwell ELN 60 48D wired up as below, but not sure about the iAqua pins:
> 
> Meanwell to relay board:
> Meanwell 1: Relay 1:
> white (DIM+) -> relay1 - positive
> Blue (DIM-) -> relay1 - neutral
> Meanwell 2: Relay 2:
> white (DIM+) -> relay1 - positive
> Blue (DIM-) -> relay1 - neutral
> 
> iAqua to Relay Board 12V:
> iAqua PWM pins: Relay:
> Pin 7 White out -> - Relay1 in
> Pin 6 Red out -> - Relay2 in
> 12V -> - 12v in
> GND -> - GND in
> 
> What are the Light1 and Light 2 outputs used for and how much voltage it should show?



Have you built your 8 socket Relay Controlled Power Strip yet? You'll need to get that done before you'll be able to move on with the project.

NOTE:The Meanwell ELN series require a 10V dimming signal. IIRC the ELN "D" uses an analog signal, whereas the "P" version requires PWM. The iAqua controller only puts out a 5V PWM signal, so your ELN drivers dimming circuits will not work correctly without a few additional components. You'll need a 10V power source, 4 NPN transistors, 1k resistors, and a few caps to make it work. 
In all reality- the ELN drivers SUCK! They go dark at 10 - 15% whereas their little brothers (the Meanwell LDD-H) will dim to Zero and use 5V PWM. You have the option to use the drivers you have to drive your leds, or you can use them as a power supply for the superior LDD-H. If dimming all the way to Zero is important enough, the money spent to make the ELN drivers compatible with the iAqua controller, could be better spent upgrading to the LDD-H.:hihi: What say ye mate?


----------



## jeffkrol

O2surplus said:


> " uses an analog signal, whereas the "P" version requires PWM..


P version dims fine w 0-10v.....


O2surplus said:


> In all reality- the ELN drivers SUCK! They go dark at 10 - 15% whereas their little brothers (the Meanwell LDD-H) will dim to Zero and use 5V PWM.


Agreed


----------



## cooldex

jeffkrol said:


> P version dims fine w 0-10v.....
> 
> Agreed


Unfortunately I have already got 2 "D" versions, I don't need 0 dim, just enough, as they will turn off regardless. I guess I will have to use the light1 and light2 pins as these are 5V right?

Hey O2 so where does the 8 socket Relay Controlled Power Strip come into play, does this go between the iAqua and relay board and powers the 12V relay board?


----------



## O2surplus

cooldex said:


> Unfortunately I have already got 2 "D" versions, I don't need 0 dim, just enough, as they will turn off regardless. I guess I will have to use the light1 and light2 pins as these are 5V right?
> 
> Hey O2 so where does the 8 socket Relay Controlled Power Strip come into play, does this go between the iAqua and relay board and powers the 12V relay board?



The 8 channel relay board is supposed to be installed to control 8 AC power outlets. Many people like "Kman" and others actually installed wall mounted outlets in custom boxes and wired the relay board in that way. I chose another path and purchased an 8 outlet "DJ" style power strip and wired the relays into that. Here's a couple photos of mine-




























The relays are wired to control the "hot" wire for each power outlet. One side of the Common "Hot" wire is connected to the "Comm" connection at each relay and another wire is run from the "NO" terminal of the relay to each power outlet. The 10 wires (+12V, Ground, & 8- 5V signal wires) are then connected between the iAqua shield and the 5V control side of relay block.


----------



## jmh474

help im getting this error when trying to upload the sketch please

Arduino: 1.6.1 (Windows 7), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

Iv deleted all the stuff in the middle takes up to much room please ask if you need it

C:\Users\Sony\AppData\Local\Temp\build6179981689018095978.tmp\arial_bold.c:9:9: error: variable 'arial_bold' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

uint8_t arial_bold[3044] PROGMEM={

^

Error compiling.

Edit: changed to arduino 1.0.6 and seems to be working now.


----------



## rottison

it was a font error incase you wanted to know I believe


----------



## jmh474

well new problem now the touch screen don't work lol can't win

Sent from my GT-S5360 using Tapatalk 2


----------



## rottison

check on the pin configs make sure they are correct in the sketch and how it goes to your tft/LCD and did you change them with the wires on tft shield? look for loose connections on them. I find it faster to look at that stuff like that first. most of the time it is a small problem. are you using one of 02's shields? if so some of his pins don't make a tight fit so look a that if you have one


----------



## jmh474

well i fried my old arduino and the touch was working got a new arduino and now its not working so im lost

Sent from my GT-S5360 using Tapatalk 2


----------



## O2surplus

Any body else notice this? My controller had been running flawlessly for weeks.....until yesterday. I noticed that my lighting didn't appear to be keeping with the schedule and a "?" was showing on the home screen. Normally- after making adjustments to the lighting schedule/ PWM levels for each channel, I'd have to reset the controller to have the changes take effect. This time was different... the controller would either lock up or continuously cycle the relays, until I'd unplug it to force a reset again. The only difference that I could find was that I hadn't activated the fish feeding button in 200+ hours. On a lark, I hit the feeder button just to see what would happen. After the 5 minute feeding session timed out, the controller reset itself and returned to normal operation. This has me wondering? Is there a software bug that only appears if the feeder function is not used for a certain amount of time? Could it be that the controller gets weirded out if it has to store an integer (for number of hours elapsed since last feeding) that's too large? If so- how do we fix it in the code?


----------



## robsworld78

I doubt its because of the feeding time, 200 hours is only 720,000,000 millis and the variable is likely a long which is good for 2,147,483,647 and if its unsigned long it double that. 

A while a go I did read that there is kind of an issue using millis(). When the maximum number for a variable is reached it starts over at 0. If all the schedules have a number like 4,294,967,200 and the millis() roll over to 0 than everything will be screwed up until all the variables are reset to 0 as well. That's why a reset fixes it.

If the unsigned long is used for millis it should be good for 49.7 days, if a long is used its about 24.8 days until this occurs. If you added a reset in the loop just before the millis hit the limit everything would be ok. On my controller I'm putting a reset button somewhere so if anything happens it can be restarted without having to unplug everything.

Of course this is just a thought, could be something else. I have one of my older versions running my tanks, its been close to 4 weeks without a reset and its been perfect, I'm waiting for those 2 sets of days to pass. :hihi:

EDIT: just realized you reset it then pressed the feed button and it still acted up, probably not what I mentioned as the original reset should have fixed it.


----------



## kman

I'd like your problem, but I have to get to the "worked flawlessly for weeks" part, first! 

And hopefully when I finally have time to tear down the controller to swap in the 12v Relay board, I'll be able to troubleshoot my dosing pumps, as one is not working anymore (might be the pump itself, not sure yet). And it would be nice if the temp probe worked again, too, although not as essential.


----------



## robsworld78

kman, good thing you have patience.  When did you temp quit, did it just quit or was it after hooking it up? I have a bunch of them and all the wiring is different, some I have even has the same color wires but they do different things. I hooked up one wrong and wrecked it. Can't imagine it being the software for that.


----------



## rick dale

*wow!*

Gives me a headache just looking at all those wires !


----------



## O2surplus

The weird thing is this- the controller would not run the correct lighting schedule no matter what I did. Hit the home button.... controller reloads the home screen and the "?" remains. Pulled power plug... wait a few seconds... plug power back in... controller re-boots.. loads the home screen and the "?" remains. Hit the feeder button... wait 5 minutes for the feeding session to time out...home screen reloads and the lighting system returned to normal operation. What's up with that? Gotta be a software bug????


----------



## mistergreen

Where is the '?' showing up?
I'll take a quick loop at the file.


----------



## O2surplus

mistergreen said:


> Where is the '?' showing up?
> I'll take a quick loop at the file.


The "?" shows up on the home screen in the tile that normally indicates the current lighting state. "Full sun", "part sun", ect... AH added the "?" to the program to indicate that the light schedule was not being run.:hihi:


----------



## mistergreen

I just read the code. It's is odd that the feeding cycle has a bunch of dependencies like relays and alarms in it. That's why you're seeing that bug O2surplus. 
And feeding is only triggered from the feeding screen?


----------



## mistergreen

Funny, there's no Alarm.alarmReat for feeding. The feeding triggers a relay or PWM?


----------



## robsworld78

Yeah there's no alarm for feeding, it changes relay states. Press the feed button on home screen and it will go to a feeding routine changing the relays state.

Bump:


mistergreen said:


> I just read the code. It's is odd that the feeding cycle has a bunch of dependencies like relays and alarms in it. That's why you're seeing that bug O2surplus.
> And feeding is only triggered from the feeding screen?


I don't see an alarm in the the feeding cycle?


----------



## mistergreen

Notice how feedingActive triggers those Relays?
Somehow, those conditions are met and your relays go crazy.





Code:


 // start feeding cycle if not already active
  if (feedingActive==false)
  {
    // capture current power status so we can return to it
    preFeedPower.pwrLight1=globalPower.pwrLight1;
    preFeedPower.pwrLight2=globalPower.pwrLight2;
    preFeedPower.pwrFilter=globalPower.pwrFilter;
    preFeedPower.pwrCirc=globalPower.pwrCirc;
    preFeedPower.pwrHeat=globalPower.pwrHeat;
    // there is a catch to make sure CO2 isn't turned back on if the schedule turns it off during feeding
    preFeedPower.pwrCO2=globalPower.pwrCO2; 
    preFeedPower.pwrAux1=globalPower.pwrAux1;
    preFeedPower.pwrAux2=globalPower.pwrAux2;

    // fire power relays as configured
    if (feedPower.pwrLight1==1) AlarmPwrLight1_On();
    else if (feedPower.pwrLight1==0) AlarmPwrLight1_Off();
    if (feedPower.pwrLight2==1) AlarmPwrLight2_On();
    else if (feedPower.pwrLight2==0) AlarmPwrLight2_Off();
    if (feedPower.pwrFilter==1) AlarmPwrFilter_On();
    else if (feedPower.pwrFilter==0) AlarmPwrFilter_Off();
    if (feedPower.pwrCirc==1) AlarmPwrCirc_On();
    else if (feedPower.pwrCirc==0) AlarmPwrCirc_Off();
    if (feedPower.pwrHeat==1) AlarmPwrHeat_On();
    else if (feedPower.pwrHeat==0) AlarmPwrHeat_Off();
    if (feedPower.pwrCO2==1) AlarmPwrCO2_On();
    else if (feedPower.pwrCO2==0) AlarmPwrCO2_Off();
    if (feedPower.pwrAux1==1) AlarmPwrAux1_On();
    else if (feedPower.pwrAux1==0) AlarmPwrAux1_Off();
    if (feedPower.pwrAux2==1) AlarmPwrAux2_On();
    else if (feedPower.pwrAux2==1) AlarmPwrAux2_Off();

    feedingActive=true;
    feedingMillis = millis(); // mark when feeding started

    // save feeding time to EEPROM
    //RTC.getTime();    
    RTC.now().unixtime();

    EEPROM.write(0, 1); // 0 // last feeding data saved (0 for no, 1 for yes)
    //EEPROM.write(1, RTC.minute); // 1 // last feeding minute
    //EEPROM.write(2, RTC.hour);    // 2 // last feeding hour
    //EEPROM.write(3, RTC.day);    // 3 // last feeding day
    //EEPROM.write(4, RTC.month);    // 4 // last feeding month
    //EEPROM.write(5, (RTC.year-2000));    // 5 // last feeding year
    EEPROM.write(1, minute()); // 1 // last feeding minute
    EEPROM.write(2, hour());    // 2 // last feeding hour
    EEPROM.write(3, day());    // 3 // last feeding day
    EEPROM.write(4, month());    // 4 // last feeding month
    EEPROM.write(5, (year()-2000));    // 5 // last feeding year

  }




Code:


void feedingStop()
{

  // return all power outputs to previous settings
  if (preFeedPower.pwrLight1==1) AlarmPwrLight1_On();
  else if (preFeedPower.pwrLight1==0) AlarmPwrLight1_Off();
  if (preFeedPower.pwrLight2==1) AlarmPwrLight2_On();
  else if (preFeedPower.pwrLight2==0) AlarmPwrLight2_Off();
  if (preFeedPower.pwrFilter==1) AlarmPwrFilter_On();
  else if (preFeedPower.pwrFilter==0) AlarmPwrFilter_Off();
  if (preFeedPower.pwrCirc==1) AlarmPwrCirc_On();
  else if (preFeedPower.pwrCirc==0) AlarmPwrCirc_Off();
  if (preFeedPower.pwrHeat==1) AlarmPwrHeat_On();
  else if (preFeedPower.pwrHeat==0) AlarmPwrHeat_Off();
  if (preFeedPower.pwrCO2==1) AlarmPwrCO2_On();
  else if (preFeedPower.pwrCO2==0) AlarmPwrCO2_Off();
  if (preFeedPower.pwrAux1==1) AlarmPwrAux1_On();
  else if (preFeedPower.pwrAux1==0) AlarmPwrAux1_Off();
  if (preFeedPower.pwrAux2==1) AlarmPwrAux2_On();
  else if (preFeedPower.pwrAux2==1) AlarmPwrAux2_Off();

  feedingActive=false; // stop feeding cycle
  feedingMillis=0; // reset feeding millis
  screenHome(); // refresh the home screen
}


----------



## robsworld78

The feedingActive is turned to True when the feed button is pressed. The alarm functions turn the relays on or off depending on the settings screen. The feedingStop function stops the cycle and returns the relays to there previous state. Something must be changing feedingActive from True to False continually?


----------



## mistergreen

robsworld78 said:


> Something must be changing feedingActive from True to False continually?


Possibly.
In the first code chunk, it's feedingActive=true; when it's false.
In feedStop(), feedingActive=false;

In loop()


Code:


void loop()
{

  unsigned long currentMillis = millis(); // get current millis

    // if the feeding cycle is active, we keep an eye on it and stop it when the configured minutes have passed
  if (feedingActive==true)
  {
    millisDim=millis(); // keep the screen bright duing feeding
    unsigned long feedingTotalMillis = feedingMins; // calculate duration based on saved config
    feedingTotalMillis=(feedingTotalMillis*1000*60);
    if ((currentMillis-feedingMillis)>feedingTotalMillis) // keep looping until feeding is done
    {
      feedingStop();
    }
  }

hmmmm.


Code:


 feedingTotalMillis=(feedingTotalMillis*1000*60);

Hey O2Surplus. Do a Serial.print on currentMillis, feedingTotalMillis, feedingMillis when it blow up. I have a feeling the condition above.


----------



## robsworld78

In the loop when feedingActive is true it runs. Then when the time expires it runs the stop function which changes feedingActive back to false. That part should be good. On the seconds chunk of code feedingTotalMillis is first minutes than math to change it to millis. Not true millis, they stay the same till a minute ticks.


----------



## fietsenrex

O2, the "?" is normal at startup.
well at least it does that with mine.. after I hit the homescreen buttom it resets the screen and the correct symbol is displayed.

as for the feeding that is at 200+ hours, I had an issue with the dosing as the EEPROM won't allow for numbers higher than 255
maybe you had the same problem?


----------



## kman

robsworld78 said:


> kman, good thing you have patience.  When did you temp quit, did it just quit or was it after hooking it up? I have a bunch of them and all the wiring is different, some I have even has the same color wires but they do different things. I hooked up one wrong and wrecked it. Can't imagine it being the software for that.


Temp was working at first. I think it stopped working shortly after I extended the final wiring using RJ11 phone wires and jacks for ease of connections, when everything was moved into the final position under the tank. I think it was working at first, so I don't _think_ I did anything wrong, but maybe I screwed something up. Temp monitoring is just a pretty thing, anyway (and a nice safety backup), so I haven't been too worried about it. But when I tear everything down to replace the relay and troubleshoot my dead dosing pumps, I'll definitely try to resolve the temp issue as well.

I'm patient because it's 95% there.  I have to check to make sure it's not locked up every evening, but that's not really a hardship since it's right off my living room where I hang out most evenings anyway, so taking a glance to make sure all it working, and doing a quick power cycle (if needed), isn't a huge deal. And up until last week, the dosing pumps were working perfectly. So most days, it was doing it's job and working perfectly (ok, temps weren't working, but again, that doesn't affect anything from a day-to-day operational standpoint). The pumps quitting was the last straw, though. Now I'm having to manually dose my ferts again, and that's really annoying, so I need to get back into this and resolve some issues once and for all!


----------



## robsworld78

That sucks, especially after getting everything placed how you want it. Yesterday for the first time I placed one of my probes in my tank, worked great for a couple hours then it only read 185, I think water got into the waterproof housing. :hihi: I shorted out another one before and after than it would only read 185 so something shorted this one out and it wasn't me.

On your freezing issue I'll bet its all AC related like others have mentioned. Yesterday I was playing with my dremal and thought I would use an outlet on my power bar for the tank, it worked great and at one point I saw the power icon for that outlet go fuzzy exactly like yours does. Mine cleared up right away and I couldn't get it to do it again but I know what I saw. I'm certain it was because of the noisy AC from the dremal.

I'm going to look around to see if I can find some kind of AC filtering that might help with these kinds of problems. Surely there are some magic components/capacitors out there that will work.


----------



## kman

Yea, this thing is going to suck to tear down, since the relay board is the single most well-buried thing in the box, with the second most wires going into it, all carefully bent into place. Ugh. That's going to suck to tear out. But it's well worth it, if I can finally resolve these annoying issues. And it will simplify the internal wiring a bit, too, since I won't need the 12v>5v step down board anymore (more wasted money *sigh*). And it'll give me a chance to troubleshoot what's going on with the dosing pump, and I suppose the temp display.

I hope the temp probe isn't a water issue! That would be lame, for a "waterproof" part. And those things take forever to arrive from China. But at least it's a non-essential part and since I did finally set everything up to run over 4-conductor RJ11 wires (the temp only uses 3 of course), swapping in a new one should be a fairly quick process, if need be.


----------



## rottison

Kman I wonder if you just don't have to much electric noise in that wood box that is leading to your problems


----------



## kman

rottison said:


> Kman I wonder if you just don't have to much electric noise in that wood box that is leading to your problems


AH's original was all in one wood box, and he didn't have these issues. 

I've been debating separating out the AC and using a separate outboard box like O2 and robsworld did, but I think it should work fine as is, and want to get this one working as intended before I sink more time and energy into it, else at some point I'm just going to throw my hands in the air and buy an Apex!


----------



## robsworld78

I think you should move the AC further away or try shielding things with maybe dividers made of cardboard with tinfoil wrapped around.

Don't forget you need the temp working so the relay can turn the heater off if it malfunctions. How long was your's submersed before it quit? Later I'll wire another and do the dunk test.


----------



## robsworld78

kman said:


> AH's original was all in one wood box, and he didn't have these issues.
> 
> I've been debating separating out the AC and using a separate outboard box like O2 and robsworld did, but I think it should work fine as is, and want to get this one working as intended before I sink more time and energy into it, else at some point I'm just going to throw my hands in the air and buy an Apex!


No don't do that, you've come so far. If you separate the AC from the mega and other components you'll probably be ok. AC noise is real, have you every had an old radio running and started up a drill or whatever and you got a hum over the radio till the drill was off, same thing. Like I say I just got a quick live look at what your experiencing and 100% mine was from the dremal which is noisy AC. I have my Due right next to the AC like you. I might have to move my Due as well. Plus if you somehow luck out and get that fixed for that specific device causing it who's to say you don't buy something new that is worse. AH probably has no issues because he has different equipment.

It would be nice to know whats known to cause lots of AC noise so it can be used to test a good design.

EDIT: Don't buy the Apex, at some point I want to add IR to my controller and I need you for testing. :hihi:


----------



## kman

robsworld78 said:


> No don't do that, you've come so far. If you separate the AC from the mega and other components you'll probably be ok. AC noise is real, have you every had an old radio running and started up a drill or whatever and you got a hum over the radio till the drill was off, same thing. Like I say I just got a quick live look at what your experiencing and 100% mine was from the dremal which is noisy AC. I have my Due right next to the AC like you. I might have to move my Due as well. Plus if you somehow luck out and get that fixed for that specific device causing it who's to say you don't buy something new that is worse. AH probably has no issues because he has different equipment.
> 
> It would be nice to know whats known to cause lots of AC noise so it can be used to test a good design.
> 
> EDIT: Don't buy the Apex, at some point I want to add IR to my controller and I need you for testing. :hihi:


LOL we'll see! The amount of soldering and modifications involved in your design kinda scares me a bit, esp the PCB soldering and modifying existing components (like the RTC). Maybe if it's all eventually boiled down to a board like O2's iAqua sheild... is that what your C-shaped PCB will eventually accomplish?

AH and I have nearly identical components. What's odd is everything in mind seems to work fine _except_ the surface skimmer (Eheim Skim350) which AH also has. Although his design does put the AC outlets a little farther away than mind does. Perhaps I'll experiment with the tinfoil-wrapped cardboard bits, as suggested, just to block the outlets a bit more. Also, I'll be pulling out my 13amp power supply (another $25 wasted) and using a simple 2amp wall wart I picked up, instead. Still less noise in the box that way. These mods will let me pull several bits out of the box, so every little bit should help.


----------



## robsworld78

Yeah it looks scary and honestly kinda sucks having to use these extra components now but it's worth it and really a must for me at this point. My C board didn't turn out but that's ok, it will still work for me. My design isn't something that would work for everyone anyways as I'll have AC issues as well. Figures crossed my equipment doesn't cause issues. Soon I do plan to get new boards printed up. I'm also going to make one where the mega plugs into the board like o2 has. In the end it will be easy to assemble. Of course it will all take time, right now my weeks are flying by like they're days.

I bet you can have the same 2 pieces of equipment and one causes noise and the other doesn't and yeah an inch can probably make a difference. The tinfoil wrap does work good if done properly. I use to work with two-way radios and installed them in John Deer tractors, etc... Some models every time you transmitted on the radio the RF was getting into the computer and causing the tractors problems. Most of the time we would locate the computer and was able to shield it with thick layers of foil, always solved the problem.


----------



## saiko

kman said:


> Also, I'll be pulling out my 13amp power supply (another $25 wasted) and using a simple 2amp wall wart I picked up, instead.


my experience says this is the first thing you must do! and if possible opt for isolation of relays.

So, what other power supplies are on the same DC ground, LED drives etc?


----------



## kman

saiko said:


> my experience says this is the first thing you must do! and if possible opt for isolation of relays.
> 
> So, what other power supplies are on the same DC ground, LED drives etc?


There will be only one DC power supply, which powers O2's iAqua shield, which powers everything else. The optoisolated relay is the only thing that touches AC. This is how AnotherHobby's project was designed.


----------



## cooldex

Well made slow progress due to work. I have completed my build and I am not using relays to turn on my lights. As I am using Meanwell power supply I have attached this to a 2N2222 trans using 10V and connected to the PWM pins. 

But the lights don't dim or change intensity during the schedule changes. Is there something I am missing. I also modified the code to have the correct PWM pins set.


----------



## O2surplus

cooldex said:


> Well made slow progress due to work. I have completed my build and I am not using relays to turn on my lights. As I am using Meanwell power supply I have attached this to a 2N2222 trans using 10V and connected to the PWM pins.
> 
> But the lights don't dim or change intensity during the schedule changes. Is there something I am missing. I also modified the code to have the correct PWM pins set.



So your bumping up the 5V PWM signal to 10V PWM using a transistor. Do you have a good ground return for the 5V PWM signal to come back to the iAqua shield? That could be one possible cause of your problem.


----------



## kman

Been crazy busy, but the good news is my tear-down and rebuild of my iAqua seems to have been moderately successful. No more computer power supply, no more 12v-to-5v step downs for 5V relays, now I'm using a single 2 amp 12v wall wart to power the whole shebang, and swapped in a proper 12v optical relay. A lot less in that box! I also built a little cardboard sleeve, coated in foil inside and out and covered in plastic lighting gels (heat-resistant, and non-conductive), to make a shielded "home" for the stack of boards inside of the main enclosure.

It's been a week and a half, I believe, and not a single lockup to date. And my temp probe is working properly again, too!

Still no dosing pumps. It's all plugged in right after my tear down (I think) but I haven't had time to really look closely into things and test to see if the problem is the pumps themselves or something in the wiring. Maybe this weekend?

But at least the main iAqua switching and lighting controls are working perfectly (including the surface skimmer, back on it's normal channel).  As soon as I track down why those pumps stopped working (which may be a hassle due to the physical installation location, but pretty straightforward otherwise), everything will be cruising at 100%. One big step closer!


----------



## robsworld78

That's good to hear kman, looks like the build is equally important. If you can access the arduino while the controller is running you can press the "run pump" button and see if you have voltage going to the pump. That should tell you what end to start looking. Change the values for the pump so it runs long and gives you time to read the voltage.


----------



## magumbo1

*Code for DUE*

Has anybody tried to rewrite this code for DUE yet ?


----------



## Marspeed

All in due time


----------



## domeshots

Hi, trying to make one of these. Having trouble getting my RTC DS1307 working with the code. Wondering if there is something I am missing? For the RTC, currently using pins 20 and 21 along with the 5V and one of the GRD. What could be wrong?


----------



## sushant

domeshots said:


> Hi, trying to make one of these. Having trouble getting my RTC DS1307 working with the code. Wondering if there is something I am missing? For the RTC, currently using pins 20 and 21 along with the 5V and one of the GRD. What could be wrong?


Check if you have correctly connected the Pins. Else run a i2cscanner to see if the device is working or not.


----------



## sauk1

Hi. I am a newbie to Arduino and came across this thread. I am totally amazed by this and the effort AnotherHobby and many others have put into the project! Great job! I also want to build one! 

Now moving to my problem. Since I live in Europe I would like making this in a 240V version. Another problem is that in order for my insurance to cover any cases of electricity problems I can only connect CE-marked products in my outlet. I was wondering if remote operated power sockets would be possible for running heater etc? Maybe using the standard RF 433 MHz operated ones from e.g. Nexa or Tellstick? Any thoughts appreciated.


----------



## fietsenrex

I've used standard outlet socket from a hardware store to connect my relay to my mains.
Everything else is wired as AH specified in this thread.

There is a way if you want to use the 433mhz sockets it's a couple of pages back in this thread.. Otherwise you can check instructables for some info


----------



## Bryanmc1988

why isnt my touch screen working when i upload this ino...? i change the 


> UTouch myTouch(46,45,44,43,42);


to 



> UTouch myTouch(6, 5, 4, 3, 2);


as i am using pins 2-6...

i uploaded a differnet ino to see if it was my touch screen issue but its not... the touch works perfectly but when uploading this iaqua.ino it wont work... tryed both settings above and nothing works... the sketch loads up and the time at the top right works fine so its not a sketch freeze of any kind.... any ideas to fix this issue? i have the exact tft lcd and mean with tft shield as the post #1 has... i havent wired up anything but the RTC only...


----------



## robsworld78

I don't have the file with me but I think pins 2-6 are already being called for PWM lights. That's why AH moved the pins to the 40's.

To get you going if you scroll to the pinout section near the top you'll see some of those pins being used. Change them to other digital pins not being used and it should work.

Then you decide if you want to wire lights to other pins or modify TFT shield.


----------



## Bryanmc1988

ok so i have change pins 2-6 with pins 42-46 and it works nicely thanks robsworld... i believe u are running it on a 5-7" lcd right? i order my 7" and waiting on it to show up then i'll be leving the 3.2" for a bigger display...


by any change u have a manual to run the 7" lcd on the arduino as i head the mega doesnt have the power to run such a large lcd... would like the wiring diagram for the 7" lcd too if possible. would make life easier for me lol thanks...


----------



## robsworld78

Right on. No I'm not running iAqua, instead I've completely hacked it. :hihi: I started with AH's sketch and have changed a lot but stuck with the layout as I really like it, with AH blessings of course.  The hardware requirements are quite different and I advise waiting till I get everything sorted as I could change something still. I haven't released it yet, still working on it.

Sorry I'm not good with the hardware side of things and I don't have a 7" screen so no manual. To power the larger 7" you need to connect a 5v regulated power source to the 5v pin on the mega or due, that bypasses the onboard regulator.


----------



## Bryanmc1988

robsworld78 said:


> To power the larger 7" you need to connect a 5v regulated power source to the 5v pin on the mega or due, that bypasses the onboard regulator.


sorry brain dead right now, i'm working but i have no idea what this meant right now lol


but i was looking at this thread that you made here for the 5-7" lcd

http://www.plantedtank.net/forums/showthread.php?t=784562

what did u need help with on the hardware stuff... maybe i can help with that... lol i made my own controller for a vivarium but got lazy of the time wasted on making one for an aquarium as there are so many out there already...


my arduino vivarium controller photos:
















































i had also started making a aquarium one to but stopped 10% of the way cause it would have been hours on end making it again lol but here is a glimps of what i started for an aquarium:


----------



## robsworld78

If you power the arduino using a USB or the power jack you use the onboard regulator which is only good for 800ma. Plus with 9v the onboard regulator really warms up with little load. So if you connect 5v to the 5v pin on the arduino you can power it up that way. When power goes in there it bypasses the onboard regulator removing that 800ma limit. You want to make sure the 5v you put in is regulated though, it doesn't take much more to damage it, I'm not sure what the max is but don't be adding 9v to it, I think that's to much.

So that's you're controller, very nice! I came across it once. Yes the hours put in are countless.

Yeah that's my build thread, right now I'm trying to make PCB's that incorporate all the hardware so its easy and neat. My problem is I've gotten in deep. :hihi:


----------



## Bryanmc1988

Lol when your diy'ing there is nothing to deep just the endless money and time put into it to make it work plus all the mess ups and replacement parts you'll end up throwing away for something else in the end lol


----------



## prefalch

I just started on this in Aqua, and get the following error messages when I try to compilers.
I'll just say that I am very nybegunder in Arduino and programming. Is there anything in the code to be changed compared to that in Denmark uses 230 volts instead of 110 volts, and how do you change from F to C degrees. Have seen it somewhere in the thread, but now I can not find it again

Arduino: 1.6.3 (Windows 8.1), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

Build options changed, rebuilding all 
Using library Wire in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire 
Using library EEPROM in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM 
Using library UTFT in folder: C:\Users\Preben\Documents\Arduino\libraries\UTFT (legacy) 
Using library UTouch in folder: C:\Users\Preben\Documents\Arduino\libraries\UTouch (legacy) 
Using library tinyFAT in folder: C:\Users\Preben\Documents\Arduino\libraries\tinyFAT (legacy) 
Using library UTFT_tinyFAT in folder: C:\Users\Preben\Documents\Arduino\libraries\UTFT_tinyFAT (legacy) 
Using library RTClib in folder: C:\Users\Preben\Documents\Arduino\libraries\RTClib (legacy) 
Using library Time in folder: C:\Users\Preben\Documents\Arduino\libraries\Time (legacy) 
Using library TimeAlarms in folder: C:\Users\Preben\Documents\Arduino\libraries\TimeAlarms (legacy) 
Using library IRremote in folder: C:\Users\Preben\Documents\Arduino\libraries\IRremote (legacy) 
Using library OneWire in folder: C:\Users\Preben\Documents\Arduino\libraries\OneWire (legacy) 
Using library DallasTemperature in folder: C:\Users\Preben\Documents\Arduino\libraries\DallasTemperature (legacy) 

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10603 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM -IC:\Users\Preben\Documents\Arduino\libraries\UTFT -IC:\Users\Preben\Documents\Arduino\libraries\UTouch -IC:\Users\Preben\Documents\Arduino\libraries\tinyFAT -IC:\Users\Preben\Documents\Arduino\libraries\UTFT_tinyFAT -IC:\Users\Preben\Documents\Arduino\libraries\RTClib -IC:\Users\Preben\Documents\Arduino\libraries\Time -IC:\Users\Preben\Documents\Arduino\libraries\TimeAlarms -IC:\Users\Preben\Documents\Arduino\libraries\IRremote -IC:\Users\Preben\Documents\Arduino\libraries\OneWire -IC:\Users\Preben\Documents\Arduino\libraries\DallasTemperature C:\Users\Preben\AppData\Local\Temp\build3863683260270058553.tmp\arial_bold.c -o C:\Users\Preben\AppData\Local\Temp\build3863683260270058553.tmp\arial_bold.c.o 
In file included from C:\Users\Preben\AppData\Local\Temp\build3863683260270058553.tmp\arial_bold.c:1:0: 
C:\Users\Preben\Documents\Arduino\libraries\IRremote/IRremote.h:27:1: error: unknown type name 'class' 
class decode_results { 
^ 
C:\Users\Preben\Documents\Arduino\libraries\IRremote/IRremote.h:27:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 
class decode_results { 
^ 
C:\Users\Preben\Documents\Arduino\libraries\IRremote/IRremote.h:54:1: error: unknown type name 'class' 
class IRrecv 
^ 
C:\Users\Preben\Documents\Arduino\libraries\IRremote/IRremote.h:55:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 
{ 
^ 
C:\Users\Preben\Documents\Arduino\libraries\IRremote/IRremote.h:86:1: error: unknown type name 'class' 
class IRsend 
^ 
C:\Users\Preben\Documents\Arduino\libraries\IRremote/IRremote.h:87:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 
{ 
^ 
C:\Users\Preben\AppData\Local\Temp\build3863683260270058553.tmp\arial_bold.c:3:27: fatal error: IRremoteTools.h: No such file or directory 
#include <IRremoteTools.h> 
^ 
compilation terminated. 
Multiple libraries were found for "IRremote.h" 
Used: C:\Users\Preben\Documents\Arduino\libraries\IRremote 
Not used: C:\Program Files (x86)\Arduino\libraries\RobotIRremote 
Fejl i kompilering.


----------



## ajbuk21

can you help me with setting this up, im trying to use this on a mega 2560 and im using this screen (http://www.maplin.co.uk/p/touch-screen-shield-for-arduino-n10dp) that has screen,sd card and touch all in one shield,

i have replaced the UTFT lib with the latest which i believe dose support this but my problem is with the pins i have no clue where what goes and need help eva plugging into the mega or changing the pins in the code

any help would be helpful


----------



## makonwer

I'm writing used translate. I'm sorry for error. I bought mega 2650, TFT LCD MEGA shield v2.2. Micro SD 2GB. On the SD card i have FAT16 and files *.raw. I have two problems

-first problem:
LCD don't show ikon, I dont' have button: home, feeding, power ...
when i used example, sketch from Arduino Listfiles, Arduino show me correctly list files.
Do you know, what am I doing wrong?

-second problem
when I used iaqua touch screen donn't work. I chack example, sketch from Arduino -UTouch_ButtonTest - work
I have:
UTFT myGLCD(SSD1289,38,39,40,41); // start up an instance of the TFT screen
//UTouch myTouch(46,45,44,43,42); // start up an instance of for touch
UTouch myTouch(6, 5, 4, 3, 2);

I checked the settings UTouch myTouch(46,45,44,43,42); but It did not help.
Do you know, what am I doing wrong?


----------



## prefalch

Where in the code do I change the time from the US time (am / pm) to the European 24 hour time.
I have searched in this thread, but can not find it. Maybe I am blind, but I is *certainly a beginner*
And not very good at English


----------



## aechild

On the iAqua shield does there need to be a 6 pin female connector on the top side, and a 6 pin male on the bottom side of the shield for the arduino power block?


----------



## MrMan

prefalch said:


> Where in the code do I change the time from the US time (am / pm) to the European 24 hour time.
> I have searched in this thread, but can not find it. Maybe I am blind, but I is *certainly a beginner*
> And not very good at English


You'd have to modify the updateTimeDate() routine and more specifically printTime since it takes hours in 12 hour format and a am/pm input.



aechild said:


> On the iAqua shield does there need to be a 6 pin female connector on the top side, and a 6 pin male on the bottom side of the shield for the arduino power block?


It's a single connector, female socket with longer leads than normal to go into the mega socket. The reason the female header is there on the top side is to connect to the tft shield. So yes it's necessary, otherwise the lcd won't have power


----------



## aechild

But to be clear there will need to be conection from the shield (Custom iaqua shield) to the ardino board (male pins) on the back side correct?


----------



## prefalch

I am quite confused when I read the code. Think I have apparent to the right, but as it is written, I totally beginner, so I can not figure out what to change and it is only here or also in library Time.h



Code:


updateTimeDate();
}

void updateTimeDate()
{

  //RTC.getTime();
  RTC.now();

  // draw date and time
  myGLCD.setColor(240, 240, 255);
  myGLCD.setFont(Sinclair_S);
  /*
   if ((RTC.hour!=prevRTC.tHour) || (RTC.minute!=prevRTC.tMinute) || updateTime) {    //time
   prevRTC.tHour = RTC.hour;
   prevRTC.tMinute = RTC.minute;
   int hr_12;
   byte ampm;
   hr_12=prevRTC.tHour%12;
   if (hr_12==0) hr_12=12;
   if (RTC.hour<=11) ampm=0;
   else ampm=1;
   printTime(hr_12, RTC.minute, ampm, 180, 2);
   
   }*/

  if ((hour()!=prevRTC.tHour) || (minute()!=prevRTC.tMinute) || updateTime) {    //time
    prevRTC.tHour = hour();
    prevRTC.tMinute = minute();
    int hr_12;
    byte ampm;
    hr_12=prevRTC.tHour%12;
    if (hr_12==0) hr_12=12;
    if (hour()<=11) ampm=0;
    else ampm=1;
    printTime(hr_12, minute(), ampm, 180, 2);
  }
  /*
   if ((RTC.day!=prevRTC.tDay) || (RTC.month!=prevRTC.tMonth) || (RTC.year!=prevRTC.tYear)  || updateTime) {     //date
   prevRTC.tDay = RTC.day;
   prevRTC.tMonth = RTC.month;
   printDate(40, 2);      
   */
  if ((day()!=prevRTC.tDay) || (month()!=prevRTC.tMonth) || (year()!=prevRTC.tYear)  || updateTime) {     //date
    prevRTC.tDay = day();
    prevRTC.tMonth = month();
    printDate(40, 2);             
  }

}

void printTime(int thour, int tminute, byte ampm, int posx, int posy)
{
  char tmpTime[8], charT[3];

  tmpTime[0] = '\0';

  if (thour>=0 && thour<=9) {          //add space
    strcat(tmpTime, " ");
    itoa(thour, charT, 10);
    strcat(tmpTime, charT);
  }
  else 
    itoa(thour, tmpTime, 10);

  strcat(tmpTime, ":");  

  if (tminute>=0 && tminute<=9) {         //add 0
    strcat(tmpTime, "0");
    itoa(tminute, charT, 10);
    strcat(tmpTime, charT);
  }
  else {
    itoa(tminute, charT, 10);
    strcat(tmpTime, charT);
  }
  if (ampm==0) strcat(tmpTime, "am");
  else strcat(tmpTime, "pm");

  myGLCD.print(tmpTime, posx, posy);           // Display time  
}

void printDate(int x, int y) 
{
  char  chDate[25], tmpChar[5];

  strcat(chDate, "     ");
  chDate[0] = '\0';
  //strcat(chDate, Day[RTC.dow]);
  strcat(chDate, Day[weekday()]);
  strcat(chDate, ", ");
  //strcat(chDate, Mon[RTC.month]);
  strcat(chDate, Mon[month()]);
  strcat(chDate, " ");
  //  itoa(RTC.day, tmpChar, 10);
  itoa(day(), tmpChar, 10);
  strcat(chDate, tmpChar);
  // this line is for omitting year
  strcat(chDate, "  ");

  //strcat(chDate, " ");
  //itoa(RTC.year, tmpChar, 10);
  //strcat(chDate, tmpChar);
  //strcat(chDate, "   ");

  myGLCD.print(chDate, x, y);            //Display date 
}

time_t tmConvert_t(int YYYY, byte MM, byte DD, byte hh, byte mm, byte ss)
{
  tmElements_t tmSet;
  tmSet.Year = YYYY - 1970;
  tmSet.Month = MM;
  tmSet.Day = DD;
  tmSet.Hour = hh;
  tmSet.Minute = mm;
  tmSet.Second = ss;
  return makeTime(tmSet);         //convert to time_t
}


----------



## robsworld78

Hi prefalch, here's the code to show 24 hour clock. Replace the updateTimeDate and printTime functions with the following. Also lose the 


Code:


updateTimeDate();
}

at the top of the code you posted.



Code:


void updateTimeDate()
{
  RTC.now();

  // draw date and time
  myGLCD.setColor(240, 240, 255);
  myGLCD.setFont(Sinclair_S);

  if ((hour()!=prevRTC.tHour) || (minute()!=prevRTC.tMinute) || updateTime) printTime(hour(), minute(), 196, 2);  

  if ((day()!=prevRTC.tDay) || (month()!=prevRTC.tMonth) || (year()!=prevRTC.tYear)  || updateTime) {     //date
    prevRTC.tDay = day();
    prevRTC.tMonth = month();
    printDate(56, 2);             
  }
}

void printTime(int thour, int tminute, int posx, int posy)
{
  char tmpTime[8], charT[3];

  tmpTime[0] = '\0';

  if (thour >= 0 && thour <= 9) {     //add 0
    strcat(tmpTime, "0");
    itoa(thour, charT, 10);
    strcat(tmpTime, charT);
    strcat(tmpTime, ":");
  }
  else{
    itoa(thour, tmpTime, 10);
    strcat(tmpTime, ":");
  }

  if (tminute>=0 && tminute<=9) {         //add 0
    strcat(tmpTime, "0");
    itoa(tminute, charT, 10);
    strcat(tmpTime, charT);
  }
  else {
    itoa(tminute, charT, 10);
    strcat(tmpTime, charT);
  }
  myGLCD.print(tmpTime, posx, posy);           // Display time  
}

I adjusted the placement where I think it should be but not able test as I don't have an iAqua running. If you need to push the date and time over a bit more change the larger number in the following lines.



Code:


if ((hour()!=prevRTC.tHour) || (minute()!=prevRTC.tMinute) || updateTime) printTime(hour(), minute(), 196, 2);




Code:


printDate(56, 2);


----------



## prefalch

Thanks robsworld, that do it.


----------



## rottison

@aechild yes you have to plug iAqua shield in with those pins to power every thing from arduino up or if you plan on back feeding the arduino not that I am advising that it could burn up every thing and kill your arduino so don't ever do it but in a pinch it works


----------



## makonwer

makonwer said:


> I'm writing used translate. I'm sorry for error. I bought mega 2650, TFT LCD MEGA shield v2.2. Micro SD 2GB. On the SD card i have FAT16 and files *.raw. I have two problems
> 
> -first problem:
> LCD don't show ikon, I dont' have button: home, feeding, power ...
> when i used example, sketch from Arduino Listfiles, Arduino show me correctly list files.
> Do you know, what am I doing wrong?
> 
> -second problem
> when I used iaqua touch screen donn't work. I chack example, sketch from Arduino -UTouch_ButtonTest - work
> I have:
> UTFT myGLCD(SSD1289,38,39,40,41); // start up an instance of the TFT screen
> //UTouch myTouch(46,45,44,43,42); // start up an instance of for touch
> UTouch myTouch(6, 5, 4, 3, 2);
> 
> I checked the settings UTouch myTouch(46,45,44,43,42); but It did not help.
> Do you know, what am I doing wrong?


hi
I managed to run the touch screen 
I joined the pins 2-6 with 42-26.

I don't have icons, what I have to do to lcd show icons? anyone.


----------



## morski_pas

I made this controller, I changed from robsworld78 instructions that uses SDfat ,but I have a problem with the colors of the icons on the screen are mixed :help:


----------



## morski_pas

here I solved the problem with the help of robsworld78 that sent the appropriate library,thans again for help


----------



## prefalch

Can you write which library that solved the problem if one of us ran into the same problem. Thanks in advance


----------



## morski_pas

library is SdFat and modify UTFT_tinyFAT ,in attachments If someone needs to sign °C for SD raw end add 24 hour clock from robsworld78 last post


----------



## elricho

I wanted to congratulate you on the project. Install looks good, but I can not work no option by touching the screen . I have not watch or sensor connected , it can be for that?
Any help ?
Best regards.




















I solve, I change the pins 6 to 2 to 46 to 42.

Thank's great proyect !


----------



## hajtaler

hi 
what I'm doing wrong?
iAqua.ino:88:61: fatal error: UTFT.h: No such file or directory
compilation terminated.


----------



## diztly

very nice job.

Bump: hello everyone, what is there that can help me with the code, I need 2 pieces doser again for the marine aquarium, sounds silly but I really really need, I hope anyone can help.

thx before


----------



## diztly

rottison said:


> regulator over heating


hello dale, you squat here also ..haha, Greetings to you


----------



## rottison

Greetings to you diztly this code has all ready 2 doser's built in for micro and macro you can use them for dosing marine or freshwater


----------



## hajtaler

hi again
whether such a set SainSmart Mega2560 R3 + 3.2" TFT Touch LCD SD Card + TFT Shield For Arduino will work with this project?
I ask him because I can not write it, I do not know why but the program hangs in the verification, it comes to about 30% and nothing happens out more

or he could be someone to help me
thanks


----------



## rottison

hajtaler are using the newest version of the arduino IDE if so go back about 3 versions d/l the version that is a zip fill version that you do NOT INSTALL THE NO EXE version and try to compile it with that I hade the same problem and that was my fix with a different sketch I was using just a few days ago


----------



## hajtaler

rottison said:


> hajtaler are using the newest version of the arduino IDE if so go back about 3 versions d/l the version that is a zip fill version that you do NOT INSTALL THE NO EXE version and try to compile it with that I hade the same problem and that was my fix with a different sketch I was using just a few days ago



Thank you for help ,now do i need plugin everything to use menu,i have freeze screen ?


----------



## rottison

no I do not believe so

Bump: I would start with a multi meter and make sure my connections are good where you changed the pin configuration on the tft shield the one where you soldered the little wires on the board that is under the screen in this build most of the boards where white


----------



## hajtaler

I think that my shield has a different exit, where the schematic show is control the LEDs I have a way out of the shield, I order some cables to connect as schematic show


----------



## hajtaler

welcome
I still have a problem running this, everything looks fine but the screen does not respond, any suggest 
I tried CONNECT via jumping cables as in the diagram but it did not work then nothing


----------



## robsworld78

Hi, make sure the sketch has the correct touch pins assigned. You might have to change it depending how you wired it. Try loading the UTFT touch screen example to see if it works.


----------



## hajtaler

NWM finally works


----------



## makonwer

Hi
I changed my iAqua and now I have something like this









I want to add a second thermometer to measure the weather. I can not add a thermometer.
can you help me, anyone? how to add a second thermometer?

I have this pH meter. 
http://dfrobot.com/wiki/index.php/PH_meter(SKU:_SEN0161)
how to add to iAqua


----------



## alphabeta

Hi all: a quick question. I have basic understanding of electronics, but looks like I need some help with this. 
I completed the project, almost to the final touch. Overall it works. The only problem i have, is the power supply. Tried various setups to power up the arduino/relay/pumps/
a) one 5v/1A adapter, for arduino and relay, and 12v/700ma for pumps. Worked ok, until i actually plugged in a lamp, and trying to switch on/off from the arduino, the whole thing was restarting, and getting frozen. Thought not enough power. 
b) two 5v adapters, one for the board (1A), and one for relay 700ma. Now the board and relay worked fine. However, the pumps now did not work. When pumps were turned on, the board was restarting(relay off). 
c) got a 5v/2a adapter (at least this is what is written on it). Powered the arduino and the relay with it, and with another adapter just the coils from the relay (removed the jumper etc). The pumps with same separate 12v/700ma. Pumps would not start, although the current was going there. Like not enough power. 

However, if i power the arduino from my laptop, via usb, and the coils of the relay from adapter, then everything works fine. 

I am confused. the usb port will give out up to 900ma, and board is working fine. I power it through 5v/2a via VIN on board ... it dosn't work. 
Is this something wrong with the adapter, although i tried using 9v/1A through 5v regulator, still the same problem. Tried putting capacitors etc, 
hope i explained the problem clearly. Any suggestions are appreciated, thanks. Sorry if that is a simple question, but as i said, i have limited background in electronics, and need a direction where to dig.


----------



## robsworld78

makonwer said:


> I want to add a second thermometer to measure the weather. I can not add a thermometer.
> can you help me, anyone? how to add a second thermometer?
> 
> I have this pH meter.
> http://dfrobot.com/wiki/index.php/PH_meter(SKU:_SEN0161)
> how to add to iAqua


Looks good makonwer. For a second thermometer just duplicate the code but change the variables so they aren't the same. 

Hi alphabeta, the only thing I can suggest is make sure the 5v going into the arduino from your regulator goes into the 5v pin. Take your 9v adapter, run it through regulator to make it 5v, then run that into 5v pin on mega. Should work if USB works.


----------



## makonwer

Ok I have a second thermometer
I would like to add a pH meter.


----------



## robsworld78

The code is in the link you provided.

http://dfrobot.com/wiki/index.php?title=PH_meter(SKU:_SEN0161)

its at the bottom. Just add it to the sketch as is.


----------



## alphabeta

robsworld78, thanks! indeed, powering the arduino directly to 5v made things to work. I guess the regulator on arduino board was not pulling enough current. 

Final testing, and should be good to go. I will post some pictures of the final thing, hopefully soon. 

Of course: special thanks to AnotherHobby, and O2surplus for their detailed instructions, and all the work they put towards making this project doable.


----------



## garfild

good afternoon. tell the controller is not Clooney your program. I want to collect from the controller on the basis of MEGA 2560, but that he was able to light the light and gradually cooled radiator. and I want to remove all the excess. do not tell me how to do it on your sones or the controller. Thank you.

Mega2560 R3+Adaptor Shield+3.2 TFT LCD Touch Panel


----------



## Curt_Planted

Well I'm a bit late to this party! Awesome project! Glad my code was useful!


----------



## makonwer

Hi.
I want have a logger.
my code:

//logger
byte res;

In setup()
......
res=file.initFAT(); 
if (file.exists("logger.TXT"))
{
}
else
{
file.create("logger.TXT");
file.writeLn("Headline");
file.closeFile(); 
.......


void logger()
{
res=file.openFile("logger.TXT", FILEMODE_TEXT_WRITE);
file.writeLn(tempstring);
file.writeLn(temAirpstring);
file.closeFile();
}

I have 2 problems.
First problem, I don't know how write 2 changes in one line in SD card.
Ichack file.write(), file.writeLn(tempstring & temAirpstring );
I dont have ideas.

Second problem. how saved changes every 5 minutes.

Can you help me?


----------



## cairo

something = tempstring + temAirpstring;
file.writeLn(something);


----------



## plant_guru

I just ordered everything I needed... cannot wait to start on this project like everyone before me


----------



## plant_guru

Has anyone made the icon for the CO2 pressure alarm for the main screen?


----------



## fietsenrex

nope, only AH has that as an idea..
the Iaqua does not have any CO2 alarms only A timer


----------



## Simonv92

Hi, I'm trying to upload the code with the 1.6.5 version of the IDE; when I compile the code it gives me that error: "variable 'arial_bold' must be const in order to be put into read-only section by means of '__attribute__((progmem))'"
I have to use an older version of arduino IDE?
Tnak you very much and sorry for my bad english


----------



## alphabeta

make them const, both arial and Sinclair.
In arial_bold.c and Sinclair_S.c, like 

//////////////////////////////////////////
#include <avr/pgmspace.h>

const uint8_t Sinclair_S[764] PROGMEM={

////////////////////////////////////////////




Simonv92 said:


> Hi, I'm trying to upload the code with the 1.6.5 version of the IDE; when I compile the code it gives me that error: "variable 'arial_bold' must be const in order to be put into read-only section by means of '__attribute__((progmem))'"
> I have to use an older version of arduino IDE?
> Tnak you very much and sorry for my bad english


----------



## Simonv92

Thank you very much! I've solved the first problem, but now I have a second one:
//////////////////////////////////////////////////////////////////////
In file included from C:\Users\Simone\Documents\Arduino\Projects\iAqua\libraries\Time\DateStrings.cpp:11:0:
C:\Users\Simone\Documents\Arduino\Projects\iAqua\libraries\Time\DateStrings.cpp:41:22: error: variable 'monthNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
PGM_P monthNames_P[] PROGMEM = 
^
C:\Users\Simone\Documents\Arduino\Projects\iAqua\libraries\Time\DateStrings.cpp:58:20: error: variable 'dayNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
PGM_P dayNames_P[] PROGMEM = { dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7};
^
C:\Users\Simone\Documents\Arduino\Projects\iAqua\libraries\Time\DateStrings.cpp:59:24: error: variable 'dayShortNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThrFriSat";
////////////////////////////////////////////////////////////////////////
I have just checked the variables and all are const char*... The strange thing is why I have so much error when I compile the scketch?
Thank you very much again..


----------



## Simonv92

Hi, thank you very much for your answer, With the version 1.0.5 of the IDE I can Upload the code without modifications. With the SD card i can't see anything on the display, without it the main screen apperar (without all of the images). I've tryed a test code and arduino can read the SD card... Someone can help me?
thank you very much again!


----------



## alphabeta

what card do you have? It has to be under 2Gb. did you copy the images to the SD card? is it formated fat32? There is a lot of discussion on the forum about issues with SD cards ...


----------



## Simonv92

It's a microSD with an adaptor microSD -> SD, 2GB capacity formated as FAT32. With a test code for the SD card I can see all the files that are on the SD, so I think that arduino reconize the SD... I'm using the slot on the TFT screen.. Maybe this could be the problem?


----------



## alphabeta

the slot on TFT should not be the problem. if you can see the files in the test code, then it works. Try to load in the test code an imagine from the card. 
Make sure that the pins from TFT are mapped correctly according to iAqua code. Does touch work with iAqua?


----------



## Simonv92

hi, with the test code I can read the images on the SD card, pins for the TFT are 38, 39, 40, 41 the same that the example use...
When I try to load the software with the SD card in the slot, the main program seem to "crash"... without the SD the main screen (without the images) appear and I can also use the serial monitor to see some infomation from the board...


----------



## alphabeta

well, there are many pins there  I had also hard time mapping them correctly. Looks like you are mapping them wrong, probably in the code(s). 

Follow this page: 
http://www.plantedtank.net/forums/showthread.php?t=677265&page=3 

Do you use TFT adapter shield? If so, follow this part of the thread: 
http://www.plantedtank.net/forums/showthread.php?t=677265&page=5 
and some later posting by AnotherHobby. How do you connect the shield to the Mega? Check the connections again. 

it is hard to troubleshoot via posting  sorry.


----------



## Simonv92

Thank you very very much for your help, I know it's hard 
I'm doing some test, why he has moved the touch pins from 2, 3, 4, 5, 6 to 42, 43, 44, 45, 46? If I disconnect the SD this appear on the display:
So I think that the graphic pins are correct... The touch pins may stop the program?


----------



## alphabeta

the pins were moved, as far as i understand, because other tft adapter shields have different pin layout. 

I kind of had similar problems, until i decided that instead of changing the code to the pinout of my shield (sansmart), it is easier to just connect the shield to the mega by dupont cables. In that case you can troubleshoot easier, by disconnecting part of the shield (touch, sd card etc). 

the fact that it is crashing hints that something is not connected right. on the other hand, it works with no sd card in ... BTW, make sure that the pins for sd card are connected correctly (SD_OUT, SD_DIN). Did you try to put into slot a different SD card? Like regular SD card, even if it is larger than 2GB. It will not load the file, but should definitely not crash the code. If still crashes, then the problem is not the SD mini+ adapter. 
there are several other pins there that need special connection, according to iAqua code.


----------



## Simonv92

Hi, I have some good news  I've found the problem in the init SD card function, I've modified to "file.initFAT();" and now it work! I've only to fix the touch problem, I want to try to use the pins 2, 3, 4, 5, 6 for the touch interface... The board probabily reconize the touch because if I press on the display a debug message appear on the serial monitor, but nothing happens with the menu...

**Found the problem in the declaration on the PWM pin**


----------



## alphabeta

that's good to hear 
the touch should be easier to fix - the pins. 
good luck.


----------



## Weijenberg

Greate project I really like it I have also used this project as base for my project everything is working fine only I have one problem the schedule for the dosing pumps is not working the test is working well does anyone had the same problem?


----------



## alphabeta

you must copy the libraries too, including timealarms. 

make sure that 
#define dtNBR_ALARMS 50 // max is 255
is set high enough, or more precisely larger than the number of alarms you are actually scheduling. in original iAqua is 30, in my version, is 50.


----------



## Weijenberg

Thans i will give it a try tomorrow!


----------



## Weijenberg

I have tried it but no improvements still the same problem and a new problem with my heater is now not turning of and is giving a warning all the time even when the temperature is correct.


----------



## okantekin

hi very nice project
best aquarium control project this is

I wanted to try me at my house but I did problems
I'm just learning Arduino and cod are very difficult

my problem
iAqua:21: error: 'time_t' does not name a type
iAqua:52: error: 'time_t' does not name a type
iAqua:55: error: 'time_t' does not name a type
iAqua:18: error: 'ger' does not name a type
In file included from iAqua.ino:89:0:
C:\Users\okan\Documents\Arduino\libraries\Wire/Wire.h:70:8: error: 'TwoWire' does not name a type
extern TwoWire Wire;
^
iAqua.ino: In function 'void setup()':
iAqua:482: error: 'Wire' was not declared in this scope
iAqua:498: error: 'syncProvider' was not declared in this scope
iAqua.ino: In function 'void checkFeeding()':
iAqua:5622: error: 'calcFeeding' was not declared in this scope
'time_t' does not name a type




iAqua:52: error: 'time_t' does not name a type
iAqua:55: error: 'time_t' does not name a type
iAqua:18: error: 'ger' does not name a type
In file included from iAqua.ino:89:0:
C:\Users\okan\Documents\Arduino\libraries\Wire/Wire.h:70:8: error: 'TwoWire' does not name a type
extern TwoWire Wire;
^
iAqua.ino: In function 'void setup()':
iAqua:482: error: 'Wire' was not declared in this scope
iAqua:498: error: 'syncProvider' was not declared in this scope
iAqua.ino: In function 'void checkFeeding()':
iAqua:5622: error: 'calcFeeding' was not declared in this scope
'time_t' does not name a type


whats is wrong?


----------



## alphabeta

well, you will have to debug the code, and see what is working and what is getting wrong. i am afraid it is impossible to troubleshoot based on such general symptoms. 

If you did all the connections correct, then the ready to use code iAqua should work from the box.


----------



## madkat

I am moving from a Jarduino to this. It looks absolutely amazing. However I think I have something in the wrong folder. Any help still out there?

C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:9: error: stray '\302' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:9: error: stray '\267' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:9: error: stray '\302' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:9: error: stray '\267' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:299:46: error: invalid suffix "ad5cee4f62cf68f7dd1a3f9d85" on floating constant
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:300:62: error: invalid suffix "ad5cee4f62cf68f7dd1a3f9d85" on floating constant
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:4: error: expected unqualified-id before '<' token
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: expected unqualified-id before '=' token
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: expected constructor, destructor, or type conversion before '.' token
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: expected unqualified-id before '<' token
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:661: error: expected unqualified-id before numeric constant

Bump: I am moving from a Jarduino to this. It looks absolutely amazing. However I think I have something in the wrong folder. Any help still out there?

C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:9: error: stray '\302' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:9: error: stray '\267' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:9: error: stray '\302' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:9: error: stray '\267' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:299:46: error: invalid suffix "ad5cee4f62cf68f7dd1a3f9d85" on floating constant
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:300:62: error: invalid suffix "ad5cee4f62cf68f7dd1a3f9d85" on floating constant
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: stray '#' in program
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:4: error: expected unqualified-id before '<' token
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: expected unqualified-id before '=' token
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: expected constructor, destructor, or type conversion before '.' token
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:612: error: expected unqualified-id before '<' token
C:\Arduino - Copy\libraries\UTouch\ITDB02_Touch.cpp:661: error: expected unqualified-id before numeric constant


----------



## makonwer

Hi
I have one problem. I don't know how use Light modes. 
I Have: 
lightHighSun RGBW: 38, 12, 18, 82
lightMidSun RGBW: 32, 42, 45, 53
lightLowSun RGBW: 50, 75, 100, 25
lightMoon RGBW: 75, 50, 25, 98

but on pins PWM 4-7 or 3-6 is 0V . Do you know why a don't have voltage on the pins?


----------



## robsworld78

makonwer said:


> Hi
> I have one problem. I don't know how use Light modes.
> I Have:
> lightHighSun RGBW: 38, 12, 18, 82
> lightMidSun RGBW: 32, 42, 45, 53
> lightLowSun RGBW: 50, 75, 100, 25
> lightMoon RGBW: 75, 50, 25, 98
> 
> but on pins PWM 4-7 or 3-6 is 0V . Do you know why a don't have voltage on the pins?


Hi makonwer, I just remembered there's a setting you need to change in the code to get the PWM pins working. You need to find this around line 379.

// if you have a Current Satellite Plus, this is true
// if you are controlling your lights directly with PWM, this is false


Code:


boolean lightCSP = true;

Change that to false, upload the code and it should work.


----------



## majid_gh7168

Arduino: 1.5.8 (Windows 8), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from C:\Users\majid\Downloads\Compressed\arduino-1.5.8-windows\arduino-1.5.8\libraries\Time\DateStrings.cpp:11:0:
C:\Users\majid\Downloads\Compressed\arduino-1.5.8-windows\arduino-1.5.8\libraries\Time\DateStrings.cpp:41:22: error: variable 'monthNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
PGM_P monthNames_P[] PROGMEM = 
^
C:\Users\majid\Downloads\Compressed\arduino-1.5.8-windows\arduino-1.5.8\libraries\Time\DateStrings.cpp:58:20: error: variable 'dayNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
PGM_P dayNames_P[] PROGMEM = { dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7};
^
C:\Users\majid\Downloads\Compressed\arduino-1.5.8-windows\arduino-1.5.8\libraries\Time\DateStrings.cpp:59:24: error: variable 'dayShortNames_P' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThrFriSat";
^
Error compiling.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
?????????????????????????????????????????????????????????????????????????????????????


----------



## matagim

Hello everyone, I am new around this area, especially with the arduinos. I have finally decided to use an arduino controller for my 90 gallon tank. I am considering either the mega or the due boards. I have read in the previous pages that the due could run this build if the right shields and patches were applied to run on the due platform (and the fact the due runs at 3.3v). Since I want to try tankdroid, which is coming out soon (made by renesis), and it runs on the due, I am wondering how hard it is to be able to use this sketch on the due. I am interested in the due because of its larger capacity, but I am also aware that the mega has 16 analog inputs compared to the due's 12. Also, if it is difficult to go from the mega to the due, is it harder to use due designed sketches on the mega? I am also decent at coding, so please tell me as much as you can.


----------



## alphabeta

should not be a problem, but you will need to do a lot of re-coding, and re-mapping. Not sure if it is worth doing it.


----------



## matagim

Just to ask, would it be possible to utilize a 5 inch screen on this sketch? I know it will probably require remapping but would it be worth it? I am not too fond of the 3.2 inch screen used in this project.


----------



## sushant

matagim said:


> Just to ask, would it be possible to utilize a 5 inch screen on this sketch? I know it will probably require remapping but would it be worth it? I am not too fond of the 3.2 inch screen used in this project.


We already have a similar post running for 5 " and 7" screen, you just need to search the forum. 

Sent from my SM-G900H using Tapatalk


----------



## alphabeta

@sushant - we used to have. the post is gone/banned, apparently. It was a very good DIY project ...


----------



## catskin

yes it would have been nice to just lock it instead of removing it and 20 pages of information.


----------



## lovingHDTV

Wow that was a long read.

If I read correctly I do want to get the lcd-tft riser card and rewire it, and if I do that the sdcard reader on the riser card works. Is this the correct one?

Buy Best LCD TFT01 Mega Shield V2.0 Adapter Module - White

If so I'm ready to get this project on the road. This fits my wishlist perfectly.

It will be much better than my irrigation controller that I use to control my lights and CO2. I put 24VAC relays in a power strip. It can only have two things on at once, so is quite limited.

david


----------



## alphabeta

@lovingHDTV, that's essentially right. Except that make sure the card itself is 2gb or less, since the library will not work with larger cards. it is not easy to find one these days :0 unless you have one already. I paid for mine more than a 32gb cots  but it works. search the forum about this.


----------



## lovingHDTV

I have an old 16MB one. Is that too small?

Everything ordered, slow boat from China. 

This is going to be interesting.


----------



## alphabeta

looks like ok. You need to place the image files there only. my folder is 900kb(?) so that should be enough.


----------



## MrMan

*Custom iAqua build*

Hi all, so I figured I should finally get around to posting my modified iAqua controller, I started it back in January and it's been running my tank for about a month now. I was planning to wait for Robs project but once he went with two devices seperated from each other I decided it wasn't for me. I wanted to keep it all in one since I didn't want to put the display anywhere other than with the rest of the parts. But I also liked the extra dosing pumps and 12-bit dimming plus I used an ATO controlled by an uno, so I started building a custom iAqua and adding the extra features I wanted.

Added features include:
-third dosing pump
-individual dosing amounts for each pump
-ATO control (float switch for tank/reservoir)
-12-bit LED PWM dimming (code set up for 6 channels, PCB for 8)
-Lunar cycle
-Second DS18B20 temp sense
-Fan control using second temp sense (turns on/off at certain temperatures, planned for LED heatsink)
-On-board temp sense/fan control for inside controller housing
-Offset value for temp sensors to allow calibration
-Bargraph display for adjusting colors (only selectable to nearest 1% but uses full 12-bit range during transitions)
-Selectable colors for LED channels
-LED output vs time graph (no real use but it's nice when setting it up)
-Switched from tinyFAT libraries to sdfat and utft_sdraw which should allow for higher capacity SD cards

It should still work with IR controlled LED fixtures but I don't have one to test with. Basically if you go from 0% on the bargraph to 50% it will send the channel up command X times to get to that point. I plan on building my own LED fixture when money allows rather than buy a fixture so someone else would have to test it. Also for people that don't want to use an ATO it can be disabled, it just shows the iAqua logo in that area on the home screen. Home page will cycle through the enabled temperature sensors but they can be configured to not show on home page.

I did my own PCB which includes the TFT shield components and PCA9685. The PCA9685 can be bypassed with 0R resistors if soldering it on is too difficult or it's just not wanted, in the code its just a matter of changing a varible from true to false. I think that covers most of the information about it, so here's some pictures of the pcb/my build and the various screens:

PCB









My controller build









Home









ATO running









ATO alarm









Settings menu









Dosing Pump Settings









LED setting bargraphs









LED Channel colors









ATO Settings









Sensor Settings









Heatsink/Internal temp fan control









Heater settings









LED graph









Lunar cycle









Timer disabled









Timer enabled










Here are the PCB files and updated code:

PCB Files

PCB BOM

v2.3.4 Jan 18, 2016

v2.3.6 Sept 20, 2016

v2.5.1 Feb 16, 2017

v2.5.2 Jan 2, 2018 (moved to github)


----------



## lovingHDTV

I'd be interested in the board and code. Still trying to figure out what I want to build.

I like the ATO, don't need the third dosing pump, like the PWM channels.

thanks,
david


----------



## alphabeta

@MrMan
wow, speechless ... really you nailed it, @MrMan. 
that is lot of work. I did only parts of the modification - 3 dossing pumps, 2 periods for on/off for lights and co2, disable altogether the feeding feature, something else that i do not remember. never got time to post the codes and the pictures. took serious amount of time, especially to debug the code since uploading it to the arduino is time consuming (comparative to C++ run on comp ) 

anyaway, great addition to the forum! Next time i build one, which i am not sure when it will happen, i will use your codes  
thanks.

and yes, the build itself is very nice looking. looks like you got all the skills at all fronts. 
btw, could you post a picture of your reactor? just curious how you did it.


----------



## MrMan

alphabeta said:


> @MrMan
> wow, speechless ... really you nailed it, @MrMan.
> that is lot of work. I did only parts of the modification - 3 dossing pumps, 2 periods for on/off for lights and co2, disable altogether the feeding feature, something else that i do not remember. never got time to post the codes and the pictures. took serious amount of time, especially to debug the code since uploading it to the arduino is time consuming (comparative to C++ run on comp )
> 
> anyaway, great addition to the forum! Next time i build one, which i am not sure when it will happen, i will use your codes
> thanks.
> 
> and yes, the build itself is very nice looking. looks like you got all the skills at all fronts.
> btw, could you post a picture of your reactor? just curious how you did it.


Here's the reactor, i ended up turning the T upside down since the bubble counter i planned on using didn't seem to work. I could see the bubbles go into it but co2 didn't seem to go into the reactor. Tried another bubble counter and it was fine though.


----------



## alphabeta

thanks. got it.


----------



## MrMan

*Code*



MrMan said:


> Hi all, so I figured I should finally get around to posting my modified iAqua controller, I started it back in January and it's been running my tank for about a month now. I was planning to wait for Robs project but once he went with two devices seperated from each other I decided it wasn't for me. I wanted to keep it all in one since I didn't want to put the display anywhere other than with the rest of the parts. But I also liked the extra dosing pumps and 12-bit dimming plus I used an ATO controlled by an uno, so I started building a custom iAqua and adding the extra features I wanted.
> 
> Added features include:
> -third dosing pump
> -individual dosing amounts for each pump
> -ATO control (float switch for tank/reservoir)
> -12-bit LED PWM dimming (code set up for 6 channels, PCB for 8)
> -Lunar cycle
> -Second DS18B20 temp sense
> -Fan control using second temp sense (turns on/off at certain temperatures, planned for LED heatsink)
> -On-board temp sense/fan control for inside controller housing
> -Offset value for temp sensors to allow calibration
> -Bargraph display for adjusting colors (only selectable to nearest 1% but uses full 12-bit range during transitions)
> -Selectable colors for LED channels
> -LED output vs time graph (no real use but it's nice when setting it up)
> -Switched from tinyFAT libraries to sdfat and utft_sdraw which should allow for higher capacity SD cards
> 
> It should still work with IR controlled LED fixtures but I don't have one to test with. Basically if you go from 0% on the bargraph to 50% it will send the channel up command X times to get to that point. I plan on building my own LED fixture when money allows rather than buy a fixture so someone else would have to test it. Also for people that don't want to use an ATO it can be disabled, it just shows the iAqua logo in that area on the home screen. Home page will cycle through the enabled temperature sensors but they can be configured to not show on home page.
> 
> I did my own PCB which includes the TFT shield components and PCA9685. The PCA9685 can be bypassed with 0R resistors if soldering it on is too difficult or it's just not wanted, in the code its just a matter of changing a varible from true to false. I think that covers most of the information about it, so here's some pictures of the pcb/my build and the various screens:
> 
> If anyone is interested I can put up the PCB files and code.


I've attached the code. It's missing the extra images since the file ends up too large so you can PM me your email and i'll send it. Or if someone can point out where i can upload the PCB/Image files i'll put it there.


----------



## lovingHDTV

You mention an extra temp sensor for LCD lights. Would that happen to be an analog pin that we could use to sense a thermister and run the fan at the lowest speed necessary to maintain the light temp? I can see that for some lights the fan would only need to run when it is at the brightest setting.

If it is an analog pin, that would be cool. I've done the PID algorithm in another project (rPi based), but I'm sure there is one for the Arduino out there somewhere.

thanks
david


----------



## MrMan

lovingHDTV said:


> You mention an extra temp sensor for LCD lights. Would that happen to be an analog pin that we could use to sense a thermister and run the fan at the lowest speed necessary to maintain the light temp? I can see that for some lights the fan would only need to run when it is at the brightest setting.
> 
> If it is an analog pin, that would be cool. I've done the PID algorithm in another project (rPi based), but I'm sure there is one for the Arduino out there somewhere.
> 
> thanks
> david


The sensor for the LED lights is a DS18B20, so digital. Its set up with some hysteresis so that the fan will turn on at a certain temp (ie 50C) and turn off at a lower temp (ie 45C) to avoid it turning on/off all the time. 

I thought about doing PWM control for a fan but figured most fans don't have it, just on or off. Theres only one unused digital pin but it could be configured for that purpose easily enough. Analog control of fan speed is also doable but more difficult.


----------



## alphabeta

thanks @MrMan. 
you can share the file by using any online repository Five Best Online File Storage Services Dropbox for example is one good cloud service, with capability to share some file via url. 
or even simple Free File Hosting - Online Storage; Upload Mp3, Videos, Music. Backup Files


----------



## MrMan

alphabeta said:


> thanks @MrMan.
> you can share the file by using any online repository Five Best Online File Storage Services Dropbox for example is one good cloud service, with capability to share some file via url.
> or even simple Free File Hosting - Online Storage; Upload Mp3, Videos, Music. Backup Files


Yup, that was easy! 

PCB files and schematic:
http://www.filedropper.com/iaquamegashieldrev2

Code with images:
http://www.filedropper.com/mraquav223


----------



## coyote999

thanks for the files.


----------



## cairo

Thanks @MrMan nice project.


----------



## robsworld78

Looks good MrMan and yeah I'm still around and doing my thing.


----------



## Fernando Garcia

Hi!
@MrMan, the Github is a good place to share all documentation of your project.

Is easy to control all changes in your code.

See this tutorial.

https://www.youtube.com/watch?v=viwho0W7U9s

https://www.youtube.com/watch?v=b7oQBxLbqTc

Best regards.


----------



## prefalch

deleted


----------



## prefalch

When I look at the two images is that on 1 (anotherhobby's) in addition to the cables, components, and it is not in the picture 2. Is it because that (O2surplus) has included these components on his shield.


----------



## prefalch

If I compare these two images is up printing from the modified Another Hobby beyond the wires, and some components added to the second, only wires. Is it because on image 2 they are not needed because they are placed on the iAqua shield from O2surplus


----------



## prefalch

Now I have tried with a tft shield with components and only with wires (see my post just above) and I only get this screen. 
Have seen in previous posts that others have had the same screen, but my being introduced only after I started to use O2's shield (ver. From 09.12.2014).
If I only use Arduino Mega with tft shield and screen works fine with touch screen.
Someone bid on what I might have done wrong.:crying:


----------



## makonwer

Hi
I have problem with PWM.
I have original code iAqua, I changed only line 378, true to false :



> // if you have a Current Satellite Plus, this is true
> // if you are controlling your lights directly with PWM, this is false
> boolean lightCSP = false;


I set on the Lights:
High sun - channel blue only
Mid sun - channel cold white only
Low sun - channel white only
moon - turn off
when I'm changing set lights, PWM is working.

I set schedule light:
Moon to low sun 12:00-12:01
Low sun to mid sun 12:02-12:03
Mid sun to high sun 12:04-12:05
High sun to mid sun 12:06-12:07
Mid sun to low sun 12:08-12:09
Low sun to moon 12:10-12:11

I have problem with PWM,light doesn't turn off, light is not change with time.
Do you know what is wrong ?


----------



## okantekin

hi mrman
Which program do you use for PCBs?


----------



## fietsenrex

makonwer said:


> Hi
> I have problem with PWM.
> I have original code iAqua, I changed only line 378, true to false :
> 
> 
> 
> I set on the Lights:
> High sun - channel blue only
> Mid sun - channel cold white only
> Low sun - channel white only
> moon - turn off
> when I'm changing set lights, PWM is working.
> 
> I set schedule light:
> Moon to low sun 12:00-12:01
> Low sun to mid sun 12:02-12:03
> Mid sun to high sun 12:04-12:05
> High sun to mid sun 12:06-12:07
> Mid sun to low sun 12:08-12:09
> Low sun to moon 12:10-12:11
> 
> I have problem with PWM,light doesn't turn off, light is not change with time.
> Do you know what is wrong ?


does the dimming curve overlap?
also it is a pretty short dimming curve, try to give the curves some more time.
did you get the pin-out correct?


----------



## MrMan

okantekin said:


> hi mrman
> Which program do you use for PCBs?


Altium Designer



fietsenrex said:


> does the dimming curve overlap?
> also it is a pretty short dimming curve, try to give the curves some more time.
> did you get the pin-out correct?


He found the same problem with my code and it turned out he had mis-read the ramp length to mean end time so the ramps were set to several hours so they wouldn't have had time to turn on.


----------



## Gnl_Jakes

Hi every one.

Wonder if somebody can assist me with my new project. Purchased a mega R3 2560 board with a Nextion 4.3" TFT display ext. where can I get the latest code?


----------



## MrMan

I believe AnotherHobby's code on the first page is a good working version. Or I put my modified version back a couple of pages however the hosting site seems to have lost them. I'll get around to putting mine on Git at some point.


----------



## cairo

Gnl_Jakes said:


> Hi every one.
> 
> Wonder if somebody can assist me with my new project. Purchased a mega R3 2560 board with a Nextion 4.3" TFT display ext. where can I get the latest code?


Nextion display will not work with this code, it uses serial communication with arduino.


----------



## Gnl_Jakes

cairo said:


> Nextion display will not work with this code, it uses serial communication with arduino.


So I will have to start from scratch?

Anybody tried the nextion screen?


----------



## mkcinek

*Lan connection*



MrMan said:


> I've attached the code. It's missing the extra images since the file ends up too large so you can PM me your email and i'll send it. Or if someone can point out where i can upload the PCB/Image files i'll put it there.


Amazing project, just setting up my aquarium and will start assembling this project.
Wondering Alphabet and MrMan if there would be possibility to add ethernet shield/wifi shield, ESP8266 etc?
It would be very handy to see and control aquarium when away with a mobile device or pc connected to Internet.
thank you !


----------



## lovingHDTV

I've made some progress. Between Digikey sending me the wrong parts, and then the correct parts getting shipped from MN to TX, via Honolulu, I finally got them.

I'm using MrMan's board. He had some extras so I just bought one from him. Putting it together wasn't too bad. I did build a solder reflow oven as many of the parts are SMD. That helped a ton! I couldn't imagine soldering the small tri-state drivers.

I've almost finished the outlets and relay. I used the Mr DJ PCS200 that O2Surplus used. You can get them at Fry's for $25 and they have room for the relay board. You can also use the physical switch as well. I really liked that.

The only other issue I hit was trying to use a 16MB SDCARD. For whatever reason it can't be read by the arduino. So I ended up using a 8GB one I had laying around. Wish I could figure out how to get the small one working

david


----------



## MrMan

mkcinek said:


> Amazing project, just setting up my aquarium and will start assembling this project.
> Wondering Alphabet and MrMan if there would be possibility to add ethernet shield/wifi shield, ESP8266 etc?
> It would be very handy to see and control aquarium when away with a mobile device or pc connected to Internet.
> thank you !


I don't have any plans to add ethernet/wifi, but the codes there so if you're up to learning Arduino it could be done. Lots of people here that would be willing to help out i'm sure 



lovingHDTV said:


> I've made some progress. Between Digikey sending me the wrong parts, and then the correct parts getting shipped from MN to TX, via Honolulu, I finally got them.
> 
> I'm using MrMan's board. He had some extras so I just bought one from him. Putting it together wasn't too bad. I did build a solder reflow oven as many of the parts are SMD. That helped a ton! I couldn't imagine soldering the small tri-state drivers.
> 
> I've almost finished the outlets and relay. I used the Mr DJ PCS200 that O2Surplus used. You can get them at Fry's for $25 and they have room for the relay board. You can also use the physical switch as well. I really liked that.
> 
> The only other issue I hit was trying to use a 16MB SDCARD. For whatever reason it can't be read by the arduino. So I ended up using a 8GB one I had laying around. Wish I could figure out how to get the small one working
> 
> david


Looks good! Don't forget to jumper the V+ of the relay signals to either 5V or 12V, that was done so you can use either voltage relay board. If you don't have a proper jumper you could just solder a wire between them.


----------



## alphabeta

mkcinek said:


> Amazing project, just setting up my aquarium and will start assembling this project.
> Wondering Alphabet and MrMan if there would be possibility to add ethernet shield/wifi shield, ESP8266 etc?
> It would be very handy to see and control aquarium when away with a mobile device or pc connected to Internet.
> thank you !


in principle it is possible, although for that I would probably go with Rasbery Pi, rather than Arduino. Arduino is fine, but the memory is very limited, and it is slow when comes to debugging etc.


----------



## NatroN

alphabeta said:


> in principle it is possible, although for that I would probably go with Rasbery Pi, rather than Arduino. Arduino is fine, but the memory is very limited, and it is slow when comes to debugging etc.





alphabeta said:


> in principle it is possible, although for that I would probably go with Rasbery Pi, rather than Arduino. Arduino is fine, but the memory is very limited, and it is slow when comes to debugging etc.


When talking about an ethernet shield, you're right. But mkcinek is also talking about an ESP8266 as well. This is - I'd say the perfect addition.

You can run the whole webserver on this chip - making a Webpage (plain html or better go with websockets) and use it from everywhere (smartphone, browser,..) 

For many I/Os, the display, serial in - outs - stay with your arduino - give the data to the esp8266 and runn the webdata there. A perfect combination


----------



## alphabeta

that's right. Maybe somebody will do that. I have a Raspberry pi on my desk, trying to play around with it, but time, man ... time ...


----------



## lfernandes

Hello,

Amazing project, just setting up my aquarium and will start assembling this project.

MrMan is possible to you share your files in another location, because for me is inaccessible.

Thanks in advance.


----------



## lovingHDTV

Question for those that have one working. About how much current at 12V are you seeing? I'm seeing about 270mA. I ask because my 5V regulator gets a bit warm. Not hot enough to damage anything, but I'd say about 110F. I've had it running for a couple days without incident, but am thinking of putting a small heat sink on it.

I've been all through the board looking for shorts, and cannot find anything. I'm not sure how much current the 2560 takes. If I power it from the 2560 nothing gets warm, but that only gives us 5V.

thanks
david


----------



## alphabeta

can you be more specific about the currents you are measuring? What adapter do you use? 
I do not recall from top of my head all the currents, but i recall having the same problem, and eventually decided to split the power, one 12v adapter for pumps, and one for everything else, powered at 5-6v directly, with a 5v regulator, 1500-2000mA (?)


----------



## lovingHDTV

I don't have any pumps running at all, just the board, screen and temperature sensor.

I placed a 5ohm 5watt resistor in series with the 12V input and just measured the current through the resistor.

david


----------



## alphabeta

how about the relay? 
if only the board and screen, then yes, even then the regulator 12v -> 5v will get hot. I would suggest to use directly a 5v adapter, if there are no pumps in your project.


----------



## lovingHDTV

Eventually I will use the relay board and dosing pumps. Just for now I'm trying to make sure everything else is working OK.

I'll get a small heatsink and continue on.


david


----------



## MrMan

lovingHDTV said:


> Question for those that have one working. About how much current at 12V are you seeing? I'm seeing about 270mA. I ask because my 5V regulator gets a bit warm. Not hot enough to damage anything, but I'd say about 110F. I've had it running for a couple days without incident, but am thinking of putting a small heat sink on it.
> 
> I've been all through the board looking for shorts, and cannot find anything. I'm not sure how much current the 2560 takes. If I power it from the 2560 nothing gets warm, but that only gives us 5V.
> 
> thanks
> david


110F is nothing, I wouldn't even consider worrying about it till 60C (140F) since that's the temperature where you can burn yourself if you touch it for more than a couple seconds. The part is rated to operate up to 125C, not that i would recommend it of course. Did you get the second temp sensor working?


----------



## lovingHDTV

I've not gotten to the second temp sensor yet. Hopefully today. Also building a new tank stand so that has kept me busy. Hope to install the new stuff in the new stand and do it all at once. . . .

david


----------



## alphabeta

for now you should be good, and that's what i actually did too, but start thinking how to power manage the overall project. if you will put the relay also on through this regulator, then it will get very hot. If you really need, i probably can dig my notes with amps on each component. took me a while, after everything was build, to make a decision to squeeze a separate power adapter for pumps ... etc.


----------



## lovingHDTV

Scheduling lights:
I looked to schedule my lights and have couple questions. I have a coralife 2x96 compact fluorescent light. I run one light from 8-noon, turn it off for a rest for 1 hour, then it is back on from 1-5. I turn the second one on from 1-3.

I don't see a way to have the lights have the "off" period in the scheduling. Is this true or am I missing something?

thanks
david


----------



## player 2

I did a quick search for "water change" in this thread and didn't see anybody ask this but would it be feasible to use this to perform water changes for set amounts? 

- Add a pump dedicated to water changes
- Put the water tube in a bucket, water jug, etc that is empty
- Turn on the water change mode for x amount of time (do some math to figure out gallons per minute)
- Empty old water and fill bucket with new water
- Put tube back in bucket
- Turn on fill mode

I don't know how the pumps work so not sure if there is a maximum height that they can pump. If this would work, it may allow for daily 1L water changes.


----------



## lovingHDTV

That isn't supported directly if you are going to sit and watch, change bucket, change pickup hose, why not just flip the switch on the pump as well?

It does support an auto top off (ATO) switch. So you could drain water, let your ATO switch add more water until full.

david



player 2 said:


> I did a quick search for "water change" in this thread and didn't see anybody ask this but would it be feasible to use this to perform water changes for set amounts?
> 
> - Add a pump dedicated to water changes
> - Put the water tube in a bucket, water jug, etc that is empty
> - Turn on the water change mode for x amount of time (do some math to figure out gallons per minute)
> - Empty old water and fill bucket with new water
> - Put tube back in bucket
> - Turn on fill mode
> 
> I don't know how the pumps work so not sure if there is a maximum height that they can pump. If this would work, it may allow for daily 1L water changes.


----------



## MrMan

alphabeta said:


> for now you should be good, and that's what i actually did too, but start thinking how to power manage the overall project. if you will put the relay also on through this regulator, then it will get very hot. If you really need, i probably can dig my notes with amps on each component. took me a while, after everything was build, to make a decision to squeeze a separate power adapter for pumps ... etc.


Using my PCB it's run off of 12V instead of 24V like O2s. So the pumps, relays and fans are all be run from your primary power supply. The 5V regulator should just be powering the arduino, RTC, LED PWM and the LCD. All those aren't drawing a lot of power, the only exception would be if using 5V relays it would use the regulator and then it could get hot.


----------



## lovingHDTV

I guess I should have stated that. I'm using MrMan's board.

I don't have anything hooked up to 12V, no relays, nothing. Hence my concern about the current draw. I've decided to just put a small heatsink on it to cool it down a bit and move on.

It does look straightforward to remove the 5v regulator, then I could power the 5v and 12v supplies to the board independently.
david



MrMan said:


> Using my PCB it's run off of 12V instead of 24V like O2s. So the pumps, relays and fans are all be run from your primary power supply. The 5V regulator should just be powering the arduino, RTC, LED PWM and the LCD. All those aren't drawing a lot of power, the only exception would be if using 5V relays it would use the regulator and then it could get hot.


----------



## alphabeta

lovingHDTV said:


> Scheduling lights:
> I looked to schedule my lights and have couple questions. I have a coralife 2x96 compact fluorescent light. I run one light from 8-noon, turn it off for a rest for 1 hour, then it is back on from 1-5. I turn the second one on from 1-3.
> 
> I don't see a way to have the lights have the "off" period in the scheduling. Is this true or am I missing something?
> 
> thanks
> david



i guess the general answer is no. I had to update the code to hove two periods for CO2, light1, and light2. 

i could share the code if that will help. I also added the third pump.

Bump:


MrMan said:


> Using my PCB it's run off of 12V instead of 24V like O2s. So the pumps, relays and fans are all be run from your primary power supply. The 5V regulator should just be powering the arduino, RTC, LED PWM and the LCD. All those aren't drawing a lot of power, the only exception would be if using 5V relays it would use the regulator and then it could get hot.


yes, agree. but if you run the relay through the same regulator, then it will get hot  mine was 5v, tried, and after measuring the amps got that it drays a lot.


----------



## lovingHDTV

I would like to see what you have for the lights. I looked at it a little to see what needed to be changed, but have not done anything with it.

If it helps I can PM you my email.

thanks
david



alphabeta said:


> i guess the general answer is no. I had to update the code to hove two periods for CO2, light1, and light2.
> 
> i could share the code if that will help. I also added the third pump.
> 
> Bump:
> 
> yes, agree. but if you run the relay through the same regulator, then it will get hot  mine was 5v, tried, and after measuring the amps got that it drays a lot.


----------



## alphabeta

pm me your email, and I will send the codes.


----------



## lovingHDTV

Thanks for the code. I was able to use it to update what I was using to be able to schedule 2 times for lights 1 and 2. I didn't mess with the CO2 schedule.

It took me a bit to figure out I needed to force an EEPROM update, but after that it all worked great.

david



alphabeta said:


> pm me your email, and I will send the codes.


----------



## alphabeta

excellent! good luck with finishing the project.


----------



## mattj2479

for some reason I cant get this to load. keep getting error

Arduino: 1.6.6 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\******\AppData\Local\Temp\Temp3_iAqua.zip\iAqua\iAqua.ino:88:61: fatal error: UTFT.h: No such file or directory

#include <UTFT.h> // used to interface with the TFT display

^

compilation terminated.

What am I doing wrong thanks Matt

exit status 1
Error compiling.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.


----------



## cairo

^ did you install UTFT library?. UTFT is not included in standard Adruino IDE libraries you have to install it.


----------



## mattj2479

cairo said:


> ^ did you install UTFT library?. UTFT is not included in standard Adruino IDE libraries you have to install it.


Thanks that fixed that now I get:





WARNING: Category '' in library OneWire is not valid. Setting to 'Uncategorized'
arial_bold.c:9: error: variable 'arial_bold' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

uint8_t arial_bold[3044] PROGMEM={

^

exit status 1
variable 'arial_bold' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

I'm ok with electronics side this Arduino thing is really new to me


----------



## cairo

Open arial_bold.c and Sinclair_S.c files in the editor and add
"const" before "uint8_t arial_bold[3044] PROGMEM={"
should be like this:
const uint8_t arial_bold[3044] PROGMEM={......

const uint8_t Sinclair_S[764] PROGMEM={.......


----------



## mattj2479

cairo said:


> Open arial_bold.c and Sinclair_S.c files in the editor and add
> "const" before "uint8_t arial_bold[3044] PROGMEM={"
> should be like this:
> const uint8_t arial_bold[3044] PROGMEM={......
> 
> const uint8_t Sinclair_S[764] PROGMEM={.......


Your a star thanks :smile2:


----------



## MrMan

For anyone using an iAqua with an e-series, does your program properly save the LED values to your light? I've found that the controller will adjust the lights up/down but when it does the save routine it just changes the light to the old M1-4 setting. IE if all spots are set to all lights at 0 and i adjust white to 100 and press save the light just goes back to 0.


----------



## mattj2479

Got the controller up and running. Now to move on with the build 


AnotherHobby was there a reason u moved screendim from 13 to 8?


Just wish I could get a SD card to run full speed now can only have it set to HIGH. Even tried the libraries swap to SDraw but can not seem to get it to work and not sure if it would run the SD card any faster anyway.


----------



## fietsenrex

if you adopted the changes fernando mentioned it is at its limit..
the reason for the change was to free analog pins if I remember correctly but it is somewhere here in the thread.


----------



## Sting64

I have the iAqua controller functioning and have my Chinese Black Box LED's under it's control. It was easier than I thought to connect the led fixtures to the channels. Only two wires needed, pwm signal and gnd. I did have issues with putting them at 100%. At first I was only able to get them at about 38% but found the logic in the sketch was only allowing for brightness setting to max out at 100. I did set the variable "lightCSP = false" but it did not make a difference with the if...else statements that clearly set maxRGBW = 255 if lightCSP = false. So I changed the int maxRGBW = 100 to maxRGBW = 255.

// if you have a Current Satellite Plus, this is true
// if you are controlling your lights directly with PWM, this is false
boolean lightCSP = false;
int maxRGBW = 100;

I didn't dig deep into the code to see what was causing the logic to not recognize when lightCSP was set to false.

I will post pictures of the Chinese Black Box connections if anyone is interested. My led boxes had drivers that had Analog, PWM, and resistive controlling capabilities so I had it easy and used the PWM output of the mega.


----------



## cairo

Sting64 said:


> I have the iAqua controller functioning and have my Chinese Black Box LED's under it's control. It was easier than I thought to connect the led fixtures to the channels. Only two wires needed, pwm signal and gnd. I did have issues with putting them at 100%. At first I was only able to get them at about 38% but found the logic in the sketch was only allowing for brightness setting to max out at 100. I did set the variable "lightCSP = false" but it did not make a difference with the if...else statements that clearly set maxRGBW = 255 if lightCSP = false. So I changed the int maxRGBW = 100 to maxRGBW = 255.
> 
> // if you have a Current Satellite Plus, this is true
> // if you are controlling your lights directly with PWM, this is false
> boolean lightCSP = false;
> int maxRGBW = 100;
> 
> I didn't dig deep into the code to see what was causing the logic to not recognize when lightCSP was set to false.
> 
> I will post pictures of the Chinese Black Box connections if anyone is interested. My led boxes had drivers that had Analog, PWM, and resistive controlling capabilities so I had it easy and used the PWM output of the mega.


Maybe you need 10v PWM to control black box.


----------



## Sting64

cairo said:


> Maybe you need 10v PWM to control black box.


After I set maxRGBW = 255, I was able to adjust the brightness beyond the 100 limit that was imposed. I now can set brightness to 255.
The brightness of the led's can be maxed out now.


----------



## jeffkrol

Sting64 said:


> I will post pictures of the Chinese Black Box connections if anyone is interested. My led boxes had drivers that had Analog, PWM, and resistive controlling capabilities so I had it easy and used the PWM output of the mega.


Interested..


----------



## fietsenrex

I had the same issue with my LED strips.
I've set it to 254, at 255 with the LEDs ramping to 100% the controller crashed on me.
if it ramps to 100% it doesn't crash anymore with the 254 instead of 255



Sting64 said:


> After I set maxRGBW = 255, I was able to adjust the brightness beyond the 100 limit that was imposed. I now can set brightness to 255.
> The brightness of the led's can be maxed out now.


----------



## lovingHDTV

Finally got mine all setup yesterday. I ended up building a new stand to put it in. Here are a couple pictures:

Full View:









Storage:









MrMan's Board:









Relay Switches:









Anyone know how to reset the relays according to schedule? If I turn on/off something in the power screen, how can I get it to re-read the schedule and "fix" things?

thanks
david


----------



## Zaki

Here I admit.. Super Pro/DIY work mate..

Apologies for not reading it all .. 

But How about putting it all into Github.. ?


----------



## mkcinek

MrMan said:


> Yup, that was easy!
> 
> PCB files and schematic:
> Free File Hosting - Online Storage; Upload Mp3, Videos, Music. Backup Files
> 
> Code with images:
> Free File Hosting - Online Storage; Upload Mp3, Videos, Music. Backup Files


Happy Christmas Everybody !

Great project MrMan, however can not download PCB files and schematic and Code with images from file dropper 

Would you be so kind and upload it to Dropbox or other please !!

thank you very much !!


----------



## MrMan

Looks great David! I can add a button to reload the power schedule when you're done manually changing things, would be good for after doing water changes.

I'll put the files up on Dropbox next week, busy with Christmas and having just sold our house couple days ago

Sent from my Nexus 6P using Tapatalk


----------



## lovingHDTV

What does the Home key do on the Home screen? I hit that thinking it may do that for me. 

EDIT: It doesn't appear that the home button on the homescreen does more than redraw the home screen. Maybe we can just add that it reloads the power schedule as well?

david



MrMan said:


> Looks great David! I can add a button to reload the power schedule when you're done manually changing things, would be good for after doing water changes.
> 
> I'll put the files up on Dropbox next week, busy with Christmas and having just sold our house couple days ago
> 
> Sent from my Nexus 6P using Tapatalk


----------



## jbcltc

MrMan said:


> Looks great David! I can add a button to reload the power schedule when you're done manually changing things, would be good for after doing water changes.
> 
> I'll put the files up on Dropbox next week, busy with Christmas and having just sold our house couple days ago
> 
> Sent from my Nexus 6P using Tapatalk


Hello great project I have been following the Ferduino, Arduarium, phduino and many other aquarium/grow controllers and also would love to get a link to the pcb files . Thanks and does anyone have pcb files for the ferduino the .sch and .brd files that are uploaded are not readable in circuit software.


----------



## MrMan

lovingHDTV said:


> What does the Home key do on the Home screen? I hit that thinking it may do that for me.
> 
> EDIT: It doesn't appear that the home button on the homescreen does more than redraw the home screen. Maybe we can just add that it reloads the power schedule as well?
> 
> david


So I updated the code to re-load any power settings for outlets using a schedule when you press the home button from the home screen. And fixed the bug with dosing you found.

Uploaded the code to dropbox, here is the link:
https://www.dropbox.com/s/hbfw4yd1fhy4ruc/MrAqua_v2_3_2.zip?dl=0

Please let me know if there are any issues downloading it.

Ryan


----------



## FischAutoTechGarten

Really enjoying this thread.
A few years back beat my head to get the ColdTears Shield, Font IC, SD, 5" and 7" SSD1963 800X480 LCDs and Arduino DUE (similar to MEGA, but ARM3MX8E based with 3.3v I/O) to build a beautiful front end for my project. Looks like Graham over at Arduino.cc has picked up a few forgotten efforts and nailed allot of this for you all.

I'll be borrowing portions of what you guys are doing here...but with the components I have (Due, 5" LCD, etc..)

My device will not be a controller per se.... Not yet. I'm focused on doing Temp (several), pH, Conductivity, TDS, Salinity, ORP, Dissolved Oxygen, CO2, CO2 dose pressure, Tank Level, Sump Level, Pump Flow, Water Color, Ambient Air Temp / Humid. Basically allot of measuring and analysis. I have all the pieces.. Just need to get going... Enabling wired Ethernet and WiFi will be important ingredients.

Really like the Wide Landscape format someone created for the screen.. Can't remember where I found this example.
Below is my small aluminum enclosure with various pieces parts...


----------



## mkcinek

MrMan said:


> So I updated the code to re-load any power settings for outlets using a schedule when you press the home button from the home screen. And fixed the bug with dosing you found.
> 
> Uploaded the code to dropbox, here is the link:
> https://www.dropbox.com/s/hbfw4yd1fhy4ruc/MrAqua_v2_3_2.zip?dl=0
> 
> Please let me know if there are any issues downloading it.
> 
> Ryan


Happy New Year !!!

MrMan, thank you very much.

I had problem with SD card images but now it works, only I have an issue with touch, I have TFT LCD Mega Shield v2.2 with 2-6 pins soldered to 42-46.

Would you be so kind and upload PCB files and schematic to dropbox as well please ?

Is there anything you could suggest about touch function ?

thanks!


----------



## MrMan

I can upload the PCB files/schematic on Monday when I'm back at work, I have them on my work computer but not at home. I'll update the code to v2.3.3 since David found an issue with the dosing icons when using larger container sizes and changed it to also have individual dosing container sizes.


----------



## player 2

I'm about to break my touch screen. I load an example for uTouch library and do the calibration and set it to print to serial the x and y coordinates which it does just fine. I can load other examples and print to serial the x and y coordinates. But when I load iAqua, no matter where I touch, I always get x = -1 and y = -1. I'm combing through all of the pages in this thread just in case (at page 47 currently) but not finding anything. Any ideas?


----------



## MrMan

player 2 said:


> I'm about to break my touch screen. I load an example for uTouch library and do the calibration and set it to print to serial the x and y coordinates which it does just fine. I can load other examples and print to serial the x and y coordinates. But when I load iAqua, no matter where I touch, I always get x = -1 and y = -1. I'm combing through all of the pages in this thread just in case (at page 47 currently) but not finding anything. Any ideas?


The normal pins in the utouch example is 2-6 but the iAqua uses 42-46, have you modified your shield to use 42-46? Outside of that nothing comes to mind...


----------



## player 2

I've tried that but when I run it, it will automatically display the -1, -1 every second or so as if something is triggering a screen press.

edit: Let me rephrase that. I've modified the code to use pins 6-2. I also just tried your latest code v2.3.2 and get the same behavior. I haven't modified the physical shield at all.


----------



## player 2

WOO! Went back and thought "well if I want to use pins 6-2, then let me make sure that nothing else is using those pins." A few comments later (which I need to find out what I disabled) I can now click and go through the settings! What do the RGBW PWM pins control anyway since that's what I commented out.


----------



## lovingHDTV

They are used to control LED lighting.

david



player 2 said:


> WOO! Went back and thought "well if I want to use pins 6-2, then let me make sure that nothing else is using those pins." A few comments later (which I need to find out what I disabled) I can now click and go through the settings! What do the RGBW PWM pins control anyway since that's what I commented out.


----------



## player 2

Perfect. I have a Current Satellite light so I won't be using those pins anyway.


----------



## fietsenrex

I've got an issue..
the Iaqua was running for a year now but since last week it keeps resetting itself at random moments during the day.
does anyone got an idea? there were no changes done to the controller.
everything works just fine but resets randomly.


----------



## Sting64

jeffkrol said:


> Interested..


1st pic is the inside of the black box led fixture. Blue led driver on left, White on right.

2nd pic is the variable resistor, for blue led driver, removed from the panel with the connector that connects to the LED driver.

3rd pic is of the connector removed from the variable resistor. The yellow wire (controls the brightness) is needed to connect to pwm output of arduino. The black wire gets connected to common ground of arduino. When connecting yellow wire to arduino, attach a 10K resistor from pwm output to yellow wire. Also connect 10K resistor from pwm output to ground. This will pull down the signal so when arduino powers up, the light doesn't go to full brightness while signal is floating until arduino is finished booting.

4th pic is of the 3.5mm female stereo surface panel socket with the White wire (White led driver), Blue wire (for Blue led driver), and black (common ground) attached. I used color corresponding jumper wires to connect the 3.5mm socket to the led driver connector.

5th pic is showing jumper wires plugged into connector leading to led driver.

My led drivers fortunately are pwm controlled which is perfect for arduino.

There are only two channels for these lights. The MrAqua (iAqua) controls the fading pretty good. I do have some issues where the fading schedule seems to stall. A power cycle of the MrAqua (iAqua) controller clears things up and the lights are at the brightness they should be at the scheduled time.


----------



## Sting64

Bump:


fietsenrex said:


> I've got an issue..
> the Iaqua was running for a year now but since last week it keeps resetting itself at random moments during the day.
> does anyone got an idea? there were no changes done to the controller.
> everything works just fine but resets randomly.



I was having issue with resets as well. I noticed if I pressed the home key, a reset would follow also. I downloaded MrAqua version and uploaded it to Mega and have not had any issue with random resets. The only thing I can think that you started having the issue is a problem with the arduino controller? Just a thought.


----------



## fietsenrex

Sting64 said:


> Bump:
> 
> 
> I was having issue with resets as well. I noticed if I pressed the home key, a reset would follow also. I downloaded MrAqua version and uploaded it to Mega and have not had any issue with random resets. The only thing I can think that you started having the issue is a problem with the arduino controller? Just a thought.


I've adjusted the ramping schedule because M1>M2 had an overlap of 15 minutes
I've also adjusted the dosing schedule so it stay's clear of the light ramps.
I had shortened the light duration due to some algae problems, just remembered it last night.. 

if that doesn't fix the problem I just reload the code I have, it has been running for a year without problems now so I don't think it's a problem with the code.

anyhow thanks for the help


----------



## jeffkrol

Sting64 said:


> 1st pic is the inside of the black box led fixture. Blue led driver on left, White on right.
> 
> 2nd pic is the variable resistor, for blue led driver, removed from the panel with the connector that connects to the LED driver.


Interesting.. from the picture of the "pot" it certainly doesn't look like any of the newer(?) ones w/ a PWM chip on a circuit board, nor the powered pot dimmer and just a 12V line coming out of the driver..

I can see what you mean by "multi-dim" protocols since, again considering the pot , PWM would normally not work at all

Can I get a close up of the driver spec sticker, for my own reference..

For reference PWM dimmer from a Evergrow:









inventronics and Meanwell makes multi-protocol dim circuit driver but the PWM is usually 10v or so..matching the 10v analog and 10k pot dim..
What voltage is your PWM running at?

Though it is running, something is not fitting..
in other words, it shouldn't have been THAT easy..


----------



## mkcinek

MrMan said:


> I can upload the PCB files/schematic on Monday when I'm back at work, I have them on my work computer but not at home. I'll update the code to v2.3.3 since David found an issue with the dosing icons when using larger container sizes and changed it to also have individual dosing container sizes.


Hello,

Will appreciate uploading PCB files/schematic as still can not figure out problem with touch.
thanks


----------



## MrMan

Sting64 said:


> There are only two channels for these lights. The MrAqua (iAqua) controls the fading pretty good. I do have some issues where the fading schedule seems to stall. A power cycle of the MrAqua (iAqua) controller clears things up and the lights are at the brightness they should be at the scheduled time.


How fast are you setting the ramp for the LEDs where you notice it stalling?



mkcinek said:


> Hello,
> 
> Will appreciate uploading PCB files/schematic as still can not figure out problem with touch.
> thanks


Right, here are the PCB files and updated code:

PCB Files

PCB BOM

v2.3.3 code


----------



## mkcinek

player 2 said:


> WOO! Went back and thought "well if I want to use pins 6-2, then let me make sure that nothing else is using those pins." A few comments later (which I need to find out what I disabled) I can now click and go through the settings! What do the RGBW PWM pins control anyway since that's what I commented out.


Hi, I have the same issue, 

x = -1
y = - 1

and while uploading "unable to sync with RTC.... - etc clock not connected ?

Would missing RTC affect the startup ?

What lines in the code did you comment out ?
I would try it, thanks

thank you


----------



## lovingHDTV

Yes I couldn't get anything to work if the RTC didn't connect. You could potentially comment out that check in the code and get past it.

david


----------



## player 2

mkcinek said:


> Hi, I have the same issue,
> 
> x = -1
> y = - 1
> 
> and while uploading "unable to sync with RTC.... - etc clock not connected ?
> 
> Would missing RTC affect the startup ?
> 
> What lines in the code did you comment out ?
> I would try it, thanks
> 
> thank you


Look for all lines with led1Pin and comment them out. Do the same for the rest of the ones in the group. Look around lines 243, 676, 2278. Here are the first lines to comment out. 

//const int led1Pin = 2;
//const int led2Pin = 3;
//const int led3Pin = 4;
//const int led4Pin = 5;
//const int led5Pin = 6;
//const int led6Pin = 7;

No idea about the rtc.

edit: Just thought about this. Comment out #include <DS1307RTC.h> and then compile and comment out lines that give you an error. There are about 5 lines. That might work.


----------



## mkcinek

player 2 said:


> Look for all lines with led1Pin and comment them out. Do the same for the rest of the ones in the group. Look around lines 243, 676, 2278. Here are the first lines to comment out.
> 
> //const int led1Pin = 2;
> //const int led2Pin = 3;
> //const int led3Pin = 4;
> //const int led4Pin = 5;
> //const int led5Pin = 6;
> //const int led6Pin = 7;
> 
> No idea about the rtc.
> 
> edit: Just thought about this. Comment out #include <DS1307RTC.h> and then compile and comment out lines that give you an error. There are about 5 lines. That might work.


Hi, I think it is my 3.2"tft shield that is no name, looking for elec freaks or similar so. 

Thanks !!!


----------



## Sting64

MrMan said:


> How fast are you setting the ramp for the LEDs where you notice it stalling?
> 
> 
> I have length of ramp set for 1hr on all light ramps. None of the light ramps overlap. They all start at least two hours apart.


----------



## MrMan

Sting64 said:


> I have length of ramp set for 1hr on all light ramps. None of the light ramps overlap. They all start at least two hours apart.


Weird, what version of the program are you using? And I assume you've set lightCSP and PCA9685Installed to false? I'll try to duplicate the problem with the old code and if I can i'll see if the new code has the same problem


----------



## Sting64

jeffkrol said:


> Interesting.. from the picture of the "pot" it certainly doesn't look like any of the newer(?) ones w/ a PWM chip on a circuit board, nor the powered pot dimmer and just a 12V line coming out of the driver..


My "pot" has a cb but no components. picture below.



jeffkrol said:


> I can see what you mean by "multi-dim" protocols since, again considering the pot , PWM would normally not work at all
> 
> Can I get a close up of the driver spec sticker, for my own reference..


A picture of the driver in my black box is below.




jeffkrol said:


> For reference PWM dimmer from a Evergrow:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> inventronics and Meanwell makes multi-protocol dim circuit driver but the PWM is usually 10v or so..matching the 10v analog and 10k pot dim..
> What voltage is your PWM running at?


The PWM is running at 5v, directly from mega with 10k resistor in series. I checked the voltage that the pot was regulating and it was 5v also.



jeffkrol said:


> Though it is running, something is not fitting..
> in other words, it shouldn't have been THAT easy..


I couldn't believe it either but it works. I thought I was going to have to change the 0-5v pwm to 0-10v pwm.


----------



## Sting64

MrMan said:


> what version of the program are you using?


v2.3.2



MrMan said:


> I assume you've set lightCSP and PCA9685Installed to false?


Yes, both are set to false.


----------



## jeffkrol

Sting64 said:


> A picture of the driver in my black box is below.


something wrong.. Here is your driver clearly stating 10v PWM
https://www.asianproducts.com/produ...3978111737711107/45w~60w-pwm-dimming-led.html

My suspicion is you are running it at 1/2 power..maybe..

Crazy Chinese drivers.. sometimes one never knows.
http://fahold.en.made-in-china.com/...ated-40-60W-0-10V-PWM-Dimming-LED-Driver.html

pictures and words don't always match.. 

your picture even states 10v.. ????

I really hate companies w/out spec sheets..


----------



## MrMan

jeffkrol said:


> something wrong.. Here is your driver clearly stating 10v PWM
> https://www.asianproducts.com/produ...3978111737711107/45w~60w-pwm-dimming-led.html
> 
> My suspicion is you are running it at 1/2 power..maybe..
> 
> Crazy Chinese drivers.. sometimes one never knows.
> China Isolated 40~60W 0-10V PWM Dimming LED Driver - China PWM Dimming LED Transformer, PWM Dimming LED Driver
> 
> pictures and words don't always match..
> 
> your picture even states 10v.. ????
> 
> I really hate companies w/out spec sheets..


If it's expecting 0-10V PWM and is dimming at all with 5V dimming it is probably designed to turn on at > ~3V (TTL or CMOS levels) and can handle up to 10V since some controllers use that.


----------



## jeffkrol

MrMan said:


> If it's expecting 0-10V PWM and is dimming at all with 5V dimming it is probably designed to turn on at > ~3V (TTL or CMOS levels) and can handle up to 10V since some controllers use that.


Yep forgot about that due to the common voltage thing (5V vs 10v).. But Ldd-h's use 2.5-6V at the PWM side as an example..
Using a range like 5 to 10 just didn't cross my mind at the time.

Never really thought far enough.. opps.. 
I usually never fight w/ reality (it works) vs paper specs.. Was more worried it was not doing PWM but averaging voltage..
Thus your max 5V was 50% duty.. 
At higher output differences are difficult to perceive. The visual difference between 70 to 100% is sometimes not that visible..

anyways it was just a thought..but I do see it is most likely working correctly..


----------



## Sting64

jeffkrol said:


> Yep forgot about that due to the common voltage thing (5V vs 10v).. But Ldd-h's use 2.5-6V at the PWM side as an example..
> Using a range like 5 to 10 just didn't cross my mind at the time.
> 
> Never really thought far enough.. opps..
> I usually never fight w/ reality (it works) vs paper specs.. Was more worried it was not doing PWM but averaging voltage..
> Thus your max 5V was 50% duty..
> At higher output differences are difficult to perceive. The visual difference between 70 to 100% is sometimes not that visible..
> 
> anyways it was just a thought..but I do see it is most likely working correctly..


I was trying to measure the voltage directly with my MM. Upon reading more about PWM, my meter is probably only measuring the average voltage due to the duty cycles (if this makes any sense). I will have to change the mega output of 0-5v to 0-10v to see if that is my problem with the ramp stalling. I just tried setting white to maximum and it goes very bright then settles down to what could be only 50%, in a matter of seconds. I'll let you know how it goes when I do the modification.


----------



## jeffkrol

Sting64 said:


> Upon reading more about PWM, my meter is probably only measuring the average voltage due to the duty cycles (if this makes any sense)


Yes that is pretty common..and makes perfect sense..5v 50% of the sample time and 0v 50% of the time is 2.5v..


----------



## mbaratt

Did anyone get this to work. I looked at the schematic and what is the device all the way to the left, it looks like a small brown breadboard.
thanks


----------



## lovingHDTV

Its functionality is already included in the breadboard version, except for the 5V supply generation. The 5V generation is done by the MEGA in this case.

It isn't necessary if you have everything on the breadboard working. I'm not sure why it is there.

david



mbaratt said:


> Did anyone get this to work. I looked at the schematic and what is the device all the way to the left, it looks like a small brown breadboard.
> thanks


----------



## modellbaufreek2012

Hello there,
very interesting project!
Is it possible to print the temperature in Celsius?
Cheers Elias from Austria


----------



## lovingHDTV

Yes, that is the default setting, for MrMan's version.

david



modellbaufreek2012 said:


> Hello there,
> very interesting project!
> Is it possible to print the temperature in Celsius?
> Cheers Elias from Austria


----------



## steste1122

I am glad I found this thread, as I was just starting to research what I would need to make my own aquarium controller. I was gonna try something like this https://www.hackster.io/bitsandbots...stem-a802e5?ref=custom&ref_id=50659&offset=14 and modify it for aquarium use, but your project is much nicer!


----------



## modellbaufreek2012

Hi,
thank you
have a nice day


----------



## fietsenrex

modellbaufreek2012 said:


> Hello there,
> very interesting project!
> Is it possible to print the temperature in Celsius?
> Cheers Elias from Austria


yes, somewhere in the code there is something called tempC, there is some math behind it and you can replace it for:
float tempC = 0; // water temperature

hope I'm correct it's been a year since I changed the code a bit for my own use.
it still shows F you can change the symbol in paintshop to C


----------



## Matchless

@MrMan..

There's A bug in version 2.3.3

the second temperature sensor doesn't work because:

if(displayInC == false) temperature2 = sensorW.getTempF(heatsinkSensor);
if(displayInC == true) temperature2 = sensorW.getTempC(heatsinkSensor);

this has to be:

if(displayInC == false) temperature2 = sensorH.getTempF(heatsinkSensor);
if(displayInC == true) temperature2 = sensorH.getTempC(heatsinkSensor);


----------



## lovingHDTV

Nice find. It never worked for me, but I only have one sensor so I never worried about it.

david



Matchless said:


> @MrMan..
> 
> There's A bug in version 2.3.3
> 
> the second temperature sensor doesn't work because:
> 
> if(displayInC == false) temperature2 = sensorW.getTempF(heatsinkSensor);
> if(displayInC == true) temperature2 = sensorW.getTempC(heatsinkSensor);
> 
> this has to be:
> 
> if(displayInC == false) temperature2 = sensorH.getTempF(heatsinkSensor);
> if(displayInC == true) temperature2 = sensorH.getTempC(heatsinkSensor);


----------



## MrMan

Matchless said:


> @MrMan..
> 
> There's A bug in version 2.3.3
> 
> the second temperature sensor doesn't work because:
> 
> if(displayInC == false) temperature2 = sensorW.getTempF(heatsinkSensor);
> if(displayInC == true) temperature2 = sensorW.getTempC(heatsinkSensor);
> 
> this has to be:
> 
> if(displayInC == false) temperature2 = sensorH.getTempF(heatsinkSensor);
> if(displayInC == true) temperature2 = sensorH.getTempC(heatsinkSensor);


Good catch! I've changed that along with a couple bug fixes from @lovingHDTV and put v2.3.4 on my main post (link in my sig).


----------



## Matchless

I've changed some code from MrMan so I can use 2 pcf8574 chips (but I can connect a lot more if I need them). These are I2C pin expander chips.

This way I have less wires running from the mega shield.

All output's (7 pins at the moment) are now running through these chips and my test-system works fine this way 

Someone wants the changed code ?


----------



## Matchless

I got a strange problem with the I2C build.

I have 2 Iaqua systems, one for testing and one for my tank.

The test system has an " velleman k8000" port expander.
There are 2 pcf8574 chips on it and I have connected the expander to the mega shield. As driver for the chips I use the pcf8574 library from rob Tillaard.

The build works perfectly.
For now all works fine.

So I build a board with one pcf8574 chip with 8 led's and 8 solid state relais.

Tested the board with a code that checks all ports. even now everything works like a charme.

Now I program the mega with the Iaqua code and now it gets weird.
The pcf chip doesn't do a Bitwise operation.
Only one led goes on and when I switch another port then the previous port switches off???

I tried severall things like connecting the velleman board with the cable I have used from the board to the mega.
But that is working good so the cable is not too long.
Also tried with pullup resistors on th I2C lines.
All with the "faulty" code (wich is working correct with the velleman board).

I'm sorry for my bad english but I hope that someone can help me.
I don't know were to look anymore 

This is the velleman board: The K8000 circuit 

And here the library : https://github.com/RobTillaart/Arduino/tree/master/libraries/PCF8574


----------



## Matchless

problem solved 

Deleted some characters in library pcf8574.cpp and my build works now.


the Original code: if (Wire.requestFrom(_address, (uint8_t)1) != 1)

I removed !=1 .
This solved everything


----------



## lovingHDTV

Anyone have issue with Settings->Screen? When I do this I see the display refresh, then it immediately reboots.

Wondering if anyone else sees this issue.

david


----------



## Matchless

nope, just changed some settings in settings/screen but no issues here


----------



## lovingHDTV

I wonder if I have a bogus value in flash somewhere causing this issue. I guess I could write a program to zero out the flash memory, then reflash, my system.

david


----------



## lovingHDTV

Yep, zeroing out the EEPROM, then reloading 2.3.4 and I'm up and running and the settings screen now works. I was running 2.3.3 before it appears that the settings change much faster now. going from a 1L to 2L excel bottle size wasn't so painful.

david


----------



## pzaepfel

great job,

i will see to use your information in my club : lafab.org


----------



## MrMan

lovingHDTV said:


> Yep, zeroing out the EEPROM, then reloading 2.3.4 and I'm up and running and the settings screen now works. I was running 2.3.3 before it appears that the settings change much faster now. going from a 1L to 2L excel bottle size wasn't so painful.
> 
> david


Glad your sorted out the screen setting issue, I still haven't unpacked my iAqua stuff so haven't been able to test anything. I put in a variable to allow shorter times between presses when adjusting certain values, like container size where you need to change by large amounts. There might be some variables that still have the slow adjustment time so feel free to let me know if any others need quicker button press rates.


----------



## BiGGER_TAURUS

MrMan said:


> Hi all, so I figured I should finally get around to posting my modified iAqua controller, I started it back in January and it's been running my tank for about a month now. I was planning to wait for Robs project but once he went with two devices seperated from each other I decided it wasn't for me. I wanted to keep it all in one since I didn't want to put the display anywhere other than with the rest of the parts. But I also liked the extra dosing pumps and 12-bit dimming plus I used an ATO controlled by an uno, so I started building a custom iAqua and adding the extra features I wanted.
> 
> Added features include:
> -third dosing pump
> -individual dosing amounts for each pump
> -ATO control (float switch for tank/reservoir)
> -12-bit LED PWM dimming (code set up for 6 channels, PCB for 8)
> -Lunar cycle
> -Second DS18B20 temp sense
> -Fan control using second temp sense (turns on/off at certain temperatures, planned for LED heatsink)
> -On-board temp sense/fan control for inside controller housing
> -Offset value for temp sensors to allow calibration
> -Bargraph display for adjusting colors (only selectable to nearest 1% but uses full 12-bit range during transitions)
> -Selectable colors for LED channels
> -LED output vs time graph (no real use but it's nice when setting it up)
> -Switched from tinyFAT libraries to sdfat and utft_sdraw which should allow for higher capacity SD cards
> 
> It should still work with IR controlled LED fixtures but I don't have one to test with. Basically if you go from 0% on the bargraph to 50% it will send the channel up command X times to get to that point. I plan on building my own LED fixture when money allows rather than buy a fixture so someone else would have to test it. Also for people that don't want to use an ATO it can be disabled, it just shows the iAqua logo in that area on the home screen. Home page will cycle through the enabled temperature sensors but they can be configured to not show on home page.
> 
> I did my own PCB which includes the TFT shield components and PCA9685. The PCA9685 can be bypassed with 0R resistors if soldering it on is too difficult or it's just not wanted, in the code its just a matter of changing a varible from true to false. I think that covers most of the information about it, so here's some pictures of the pcb/my build and the various screens:
> 
> PCB
> 
> 
> 
> 
> 
> 
> 
> 
> My controller build
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Home
> 
> 
> 
> 
> 
> 
> 
> 
> ATO running/alarm/disabled
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Settings menu
> 
> 
> 
> 
> 
> 
> 
> 
> Dosing Pump Settings
> 
> 
> 
> 
> 
> 
> 
> 
> LED setting bargraphs
> 
> 
> 
> 
> 
> 
> 
> 
> LED Channel colors
> 
> 
> 
> 
> 
> 
> 
> 
> LED setting IR
> 
> 
> 
> 
> 
> 
> 
> 
> ATO Settings
> 
> 
> 
> 
> 
> 
> 
> 
> Sensor Settings
> 
> 
> 
> 
> 
> 
> 
> 
> Heatsink/Internal temp fan control
> 
> 
> 
> 
> 
> 
> 
> 
> Heater settings
> 
> 
> 
> 
> 
> 
> 
> 
> LED graph
> 
> 
> 
> 
> 
> 
> 
> 
> Lunar cycle
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Here are the PCB files and updated code:
> 
> PCB Files
> 
> PCB BOM
> 
> v2.3.4 Jan 18, 2016


Hi MrMan you did great project, can you add to PH funciton or it can possible?


----------



## MrMan

BiGGER_TAURUS said:


> Hi MrMan you did great project, can you add to PH funciton or it can possible?


It's definitely possible to add PH, I don't have a sensor so I didn't add it. I don't think it would be too bad to add one, but without having one myself it would be hard to test out. Lots of people on here willing to help if you decided to build an iAqua and add PH


----------



## lovingHDTV

I had a couple hangs over the last two days. Odd as I've never had them before. The first one was last night, when I noticed the lights still on at 6PM. They are supposed to turn off at 4:30. When I looked at the screen the Aux1 icon was all garbled. So I power cycled it.

Then this AM I heard the dosing pumps go off at 9, but noticed that they were still running well after they should have turned off. when I looked I saw the same garbled Aux1 icon, and both the macros and excel pumps, just pumping away. I power cycled again and it fixed itself. I probably triple dosed the macros and excel, but doubt it will hurt anything. It was a bit of a wake up call and makes me a bit worried about leaving it for a week or so. Pretty sure nothing nice would happen with a 30x over dose of macros!

I did change my pump setting such that both they don't start at the same time. Hopefully that helps.

david


----------



## alphabeta

well, sorry to hear that. you will have to find the cause. i went kind of through the same type of issues. one thing, indeed, try to start the alarms at different times. Also, in some earlier post I wrote: 

make sure that 
#define dtNBR_ALARMS 50 // max is 255
is set high enough, or more precisely larger than the number of alarms you are actually scheduling. in original iAqua is 30, in my version, is 50.

not sure if that helps, but who knows ...


----------



## lovingHDTV

Well it happened again at 9pm tonight. Nothing going on, everything is already turned off. I'll have to check out my power supply, maybe it is on the fritz.

I didn't fin dtNBR_ALARMS anywhere in the code.

david


----------



## alphabeta

in TimeAlarms.h that is the total number of alarm you use. if not enough space allocated, then strange things can happen. I added the 3rd pump, light and co2 on two periods, etc. 
took me a good debugging time to find out why my ferts will not trigger, or why the whole schedule was not working properly.

Bump: and yes, check also the power supply, and that there is no interference ...


----------



## lovingHDTV

Any idea on what counts for an alarm? I found it and it is set to 50

is it in a 24hour period, per week, since the ferts are based on a weekly schedule?

Nevermid: I looked at the alarms.ino and see that there are only 44 possible alarms and it is set to 50, so I'm good there.

thanks,
david


----------



## lovingHDTV

I think it may be a power supply issue. I run my 5v and 12v from the same supply, just different rails. I disconnected my 5v supply and am running it from my usb port and it hasn't had an issue yet. Prior to that it would constantly fail. Maybe time to hook up the 5v regulator and deal with the heat or use a different power supply.

david


----------



## alphabeta

each alarm is one instant, and it is not by day/week. So, 7 different days, for 3 pumps, is 21 alarms. light, co2, etc. so, it adds up. 
power management: had a problem with that too. It was just restarting from time to time, when a relay was triggered, or a pump, or something that drain the power. search the threads here with my name, and see how i solved the problem.


----------



## Termato

I can't believe it took me this long to see this thread. Is this the main branch for the source code on github: https://github.com/RobTillaart/Arduino/tree/master/libraries/PCF8574

Very curious about this wonderful project. I still have to go through the bulk of content but wow, amazing job everyone.


----------



## MrMan

lovingHDTV said:


> I think it may be a power supply issue. I run my 5v and 12v from the same supply, just different rails. I disconnected my 5v supply and am running it from my usb port and it hasn't had an issue yet. Prior to that it would constantly fail. Maybe time to hook up the 5v regulator and deal with the heat or use a different power supply.
> 
> david


I'd make sure you're using isolated relays as well. And make sure they're actually operating isolated since they often come wired to bypass the isolation to avoid needing a separate power supply. This is a decent link someone else posted on it:

http://arduino-info.wikispaces.com/RelayIsolation

If it's different rails on the same supply then they aren't isolated.

The regulator does get hot but it's within it's operating range. I actually measured it with an IR camera and it was 80C. Still, I'm going to add a small heatsink (little 15x15mm I found in some scrap) on the bottom side of the PCB to help dissipate some of it.


----------



## lovingHDTV

Everything has been working great using the voltage regulator on the board. It also emphasized me that reducing the point off failure is always a good thing. When the 5v supply died, the 12v supply was working fine. The led to the point where the pumps were pumping and would have continued pumping until all the ferts and excel were in the tank. This is not a good thing. With the 12v and 5v on the same supply this shouldn't happen again. If the supply dies the entire thing is dead. Unless the voltage regulator dies . . .

The relay board inputs are opto-isolated, but at this time I'm using the same 12v supply.

david


----------



## alexcruz20

good day I wonder how one can shield so because this is very difficult to build it in my country


----------



## lovingHDTV

alexcruz20 said:


> good day I wonder how one can shield so because this is very difficult to build it in my country


I'm not sure what you are asking. I see you are from Rio de Janeiro, if it is a language issue, you could ask in Portuguese. There are others on the board that may be able to help that way.

david


----------



## alexcruz20

Boa tarde, pensei que todos falassem em inglês, sou novato no arduino e estou montando o iaqua mas com muitas dificuldades pois não entendo muito de eletrônica, estava pensando se o Mr. Aqua que fez um shield muito completo para as necessidades de vários tipos de aquários ele venderia esse shield. mas acho que não consegui me espressar muito bem. desde já agradeço.


----------



## lovingHDTV

alexcruz20 said:


> Boa tarde, pensei que todos falassem em inglês, sou novato no arduino e estou montando o iaqua mas com muitas dificuldades pois não entendo muito de eletrônica, estava pensando se o Mr. Aqua que fez um shield muito completo para as necessidades de vários tipos de aquários ele venderia esse shield. mas acho que não consegui me espressar muito bem. desde já agradeço.


Ok had my daugher translate for me 

"Good afternoon, I thought everyone would speak English. I'm a noob in the *something* and I'm "setting up the aquarium" (I think that's what it means), but I'm having a lot of difficulty because I don't understand much of electronics. I was wondering if the Mr. Aqua sells that very complete shield for the needs of various types of aquariums. But I think I wasn't able to express myself very well.
"


MrMan did make the shield I'm using, but I just bought the board from him and it was not complete. I had to complete it. Maybe he could say if he sells them complete.

david


----------



## alexcruz20

Tanks for the reply.


----------



## MrMan

lovingHDTV said:


> Ok had my daugher translate for me
> 
> "Good afternoon, I thought everyone would speak English. I'm a noob in the *something* and I'm "setting up the aquarium" (I think that's what it means), but I'm having a lot of difficulty because I don't understand much of electronics. I was wondering if the Mr. Aqua sells that very complete shield for the needs of various types of aquariums. But I think I wasn't able to express myself very well.
> "
> 
> 
> MrMan did make the shield I'm using, but I just bought the board from him and it was not complete. I had to complete it. Maybe he could say if he sells them complete.
> 
> david


I haven't even had time to re-setup my aquarium since I moved so I also don't have time to build another shield, sorry. You could always start with the regular iAqua software and a breadboard while you get the hang of electronics, work your way up.


----------



## chaines

I just tried to compile this code from Mr. Aqua, and I am getting tons of error codes. Here is an example of some of them:
Is there something that I am doing wrong?



/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/libraries/UTFT/DefaultFonts.c.o.progmem.data.SevenSegNumFont+0x0): multiple definition of `SevenSegNumFont'
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/sketch/libraries/UTFT/DefaultFonts.c.o.progmem.data.SevenSegNumFont+0x0): first defined here
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.8.1/../../../../avr/bin/ld: Disabling relaxation: it will not work with multiple definitions
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/libraries/UTFT/DefaultFonts.c.o.progmem.data.BigFont+0x0): multiple definition of `BigFont'
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/sketch/libraries/UTFT/DefaultFonts.c.o.progmem.data.BigFont+0x0): first defined here
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/libraries/UTFT/DefaultFonts.c.o.progmem.data.SmallFont+0x0): multiple definition of `SmallFont'
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/sketch/libraries/UTFT/DefaultFonts.c.o.progmem.data.SmallFont+0x0): first defined here
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/libraries/UTFT/UTFT.cpp.o: In function `UTFT::_convert_float(char*, double, int, unsigned char)':
/Users/Colin/Documents/Arduino/libraries/UTFT/hardware/avr/HW_AVR.h:2: multiple definition of `UTFT::_convert_float(char*, double, int, unsigned char)'
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/sketch/libraries/UTFT/UTFT.cpp.o:/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/sketch/libraries/UTFT/hardware/avr/HW_AVR.h:2: first defined here
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/libraries/UTFT/UTFT.cpp.o: In function `UTFT::_convert_float(char*, double, int, unsigned char)':
/Users/Colin/Documents/Arduino/libraries/UTFT/hardware/avr/HW_AVR.h:2: multiple definition of `UTFT::_hw_special_init()'
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/sketch/libraries/UTFT/UTFT.cpp.o:/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/sketch/libraries/UTFT/hardware/avr/HW_AVR.h:2: first defined here
/var/folders/5x/t16gdhh545jdr7_13lxcy8rh0000gn/T/build31eb71d8b2a1c2239fa4d703481ae24f.tmp/libraries/UTFT/UTFT.cpp.o: In function `UTFT::_convert_float(char*, double, int, unsigned char)':
/Users/Colin/Documents/Arduino/libraries/UTFT/hardware/avr/HW_AVR.h:2: multiple definition of `UTFT::LCD_Writ_Bus(char, char, unsigned char)'


----------



## cz-friend

*Which RGB Strip ?*

Hello,


i´m from germany, sorry for my bad english. i have a little problem
with my arduino an my projekt. i want change the mraqua or iaqua project for my terrarium.


1. which rgb strip works with the ir code? i have 3 strips and no one works, i read out the code and change it in program, nothing !:crying:


2. are the rgbw output pins the same funktion as the ir output?


please, can you help me?


----------



## fietsenrex

the IR code's are written for a finnex light system not for a simple Chinese one.

the RGBW pins are for PWM dimming and not for IR.
you can however use the PWM and skip the IR issues, simple hook up a NPN transistor between the power supply of the LEDs and the LEDs and hook up the base of the transistor to the PWM output of the board.
and don't forget to create a common base so hook up the - of the LED power supply to the - of the arduino.


----------



## cz-friend

thank you for the information, my strip has rgb, fow what is the w pin?


----------



## fietsenrex

W=white


----------



## Sting64

fietsenrex said:


> the IR code's are written for a finnex light system not for a simple Chinese one.
> 
> the RGBW pins are for PWM dimming and not for IR.
> you can however use the PWM and skip the IR issues, simple hook up a NPN transistor between the power supply of the LEDs and the LEDs and hook up the base of the transistor to the PWM output of the board.
> and don't forget to create a common base so hook up the - of the LED power supply to the - of the arduino.





cz-friend said:


> Hello,
> 
> 
> i´m from germany, sorry for my bad english. i have a little problem
> with my arduino an my projekt. i want change the mraqua or iaqua project for my terrarium.
> 
> 
> 1. which rgb strip works with the ir code? i have 3 strips and no one works, i read out the code and change it in program, nothing !:crying:
> 
> 
> 2. are the rgbw output pins the same funktion as the ir output?
> 
> 
> please, can you help me?



cz-friend, what type of LED fixture do you have?

If you have chinese black box, you might want to look back at my experience with the black box led pwm control. It should be around page 92. I was successfully able to control the led light directly from pwm pin of arduino with MrAqua and iAqua sketch.

I did not have to have any extra component to drive it. Maybe because I got lucky and the Chinese Black Box led fixtures I purchased were capable of it. Very simple modification if yours is the case.


----------



## Sting64

I have continued on my iAqua/MrAqua project. I have assemble a controlled pdu from an HP PDU work was tossing out.

The PDU has 12 outlets. I only have a 8 channel SSR board. I added a vga connector to connect to my controller via vga cable. I have 15 pins, two of which are for + and -, 13 for controlling outlets (only utilizing 8 for now).


----------



## cairo

@Sting64 What is the power rating for your solid state relays?


----------



## cz-friend

hello sting64, 

please can you send me photo of your led strip. do you connect the led strip directly to the arduino without mos-fet ?


----------



## Matchless

cz-friend said:


> hello sting64,
> 
> please can you send me photo of your led strip. do you connect the led strip directly to the arduino without mos-fet ?




This may kill your arduino.
You have to use a Mostfet, transistor or LED driver


----------



## MrMan

cz-friend said:


> hello sting64,
> 
> please can you send me photo of your led strip. do you connect the led strip directly to the arduino without mos-fet ?


Here is an article explaining how to hook it up with a drawing as well:

https://learn.adafruit.com/rgb-led-strips/usage


----------



## amarpl

Hello 

I have uploaded code and compiled it. However touch screen is not working at all. 
I have double checked code / device all seems ok. 

Can any one help please ?

Regards


----------



## cz-friend

Hello,

thanks for the help, it works, but only with mraqua sketch.
with the iaqua sketch, it makes a reset when get in the
light settings.

Bump: hello amarpl,

at first i have the same Problems. Have you the original shield or
modified for touch?


----------



## cz-friend

hello amarpl,

at first i have the same Problems. Have you the original shield or
modified for touch?


----------



## FischAutoTechGarten

Sting64, That is really nice work with the Power Unit.


----------



## cz-friend

*RAW Files ??*

Sorry for this question !!


I try to Change the RAW-Files for SD Card, but nothing
works. How can i Change the Format or change the files?


----------



## amarpl

Hi. 

I have purchased this from ebay 
[Ebay Link Removed] Mega2560 + 3.2" TFT LCD Shield + Touch Screen SD Reader For Arduino UK | eBay[/url]

I have tried on stilo 3,2 and it works fine 

Regards


----------



## MrMan

amarpl said:


> Hi.
> 
> I have purchased this from ebay
> [Ebay Link Removed] Mega2560 + 3.2" TFT LCD Shield + Touch Screen SD Reader For Arduino UK | eBay[/url]
> 
> I have tried on stilo 3,2 and it works fine
> 
> Regards


Are you using a standard TFT shield? If so, the iAqua software uses different pins for the screen so a standard shield will not work. I would suggest reading through the thread (i know, it's a lot) and you'll find out how to modify the shield to work with iAqua software.


----------



## cairo

cz-friend said:


> Sorry for this question !!
> 
> 
> I try to Change the RAW-Files for SD Card, but nothing
> works. How can i Change the Format or change the files?


Use converter tool form UTFT library

Bump:


amarpl said:


> Hi.
> 
> I have purchased this from ebay
> [Ebay Link Removed] Mega2560 + 3.2" TFT LCD Shield + Touch Screen SD Reader For Arduino UK | eBay[/url]
> 
> I have tried on stilo 3,2 and it works fine
> 
> Regards


Read post #73


----------



## fietsenrex

cz-friend said:


> Sorry for this question !!
> 
> 
> I try to Change the RAW-Files for SD Card, but nothing
> works. How can i Change the Format or change the files?


photoshop


----------



## Matchless

I have a problem with the feeding option.

When I push the feeding button the feeding timer works good.
But he doesn't switch the power items on. Only when I push the home button after the feeding time is over the power items (filter and circulation in my case) switches back on.

someone else having this problem?


----------



## amarpl

Hello.

Thank you everyone for help. 
Touch screen now works fine. 

But now I have another 2 problems

1- I would like to use a SSR relays but where I need to modify the code to change to low status to high status. 
As currently the operation is inverted

2- The home screen is freezing this is intermittent issue.
The make it work again I need to reset whole device. 

Please help. 
best regards.


----------



## fietsenrex

amarpl said:


> Hello.
> 
> Thank you everyone for help.
> Touch screen now works fine.
> 
> But now I have another 2 problems
> 
> 1- I would like to use a SSR relays but where I need to modify the code to change to low status to high status.
> As currently the operation is inverted
> 
> 2- The home screen is freezing this is intermittent issue.
> The make it work again I need to reset whole device.
> 
> Please help.
> best regards.


1- don't know, is the wiring correctly installed? the NO/NC contacts correctly wired?
2- what does the time since the last feeding show?
I don't have any issues with freezing as long as i don't exceed certain values


----------



## cairo

amarpl said:


> Hello.
> 
> Thank you everyone for help.
> Touch screen now works fine.
> 
> But now I have another 2 problems
> 
> 1- I would like to use a SSR relays but where I need to modify the code to change to low status to high status.
> As currently the operation is inverted
> 
> 2- The home screen is freezing this is intermittent issue.
> The make it work again I need to reset whole device.
> 
> Please help.
> best regards.


#1
If you are using Mr.Agua version check alarms.ino start at approx. line 150, if iAqua version iAqua.ino line approx. 7077 functions AlarmPwr...


----------



## mbaratt

I have everything connected properly and I'm getting an error when compiling. Here is what is says.


Arduino: 1.6.8 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\Matt\Desktop\Arduino\arduino-builder -dump-prefs -logger=machine -hardware "C:\Users\Matt\Desktop\Arduino\hardware" -tools "C:\Users\Matt\Desktop\Arduino\tools-builder" -tools "C:\Users\Matt\Desktop\Arduino\hardware\tools\avr" -built-in-libraries "C:\Users\Matt\Desktop\Arduino\libraries" -libraries "C:\Users\Matt\Documents\Arduino\libraries" -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=0X2A03_0X0042 -ide-version=10608 -build-path "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "C:\Users\Matt\Desktop\sketch_mar23a\sketch_mar23a.ino"
C:\Users\Matt\Desktop\Arduino\arduino-builder -compile -logger=machine -hardware "C:\Users\Matt\Desktop\Arduino\hardware" -tools "C:\Users\Matt\Desktop\Arduino\tools-builder" -tools "C:\Users\Matt\Desktop\Arduino\hardware\tools\avr" -built-in-libraries "C:\Users\Matt\Desktop\Arduino\libraries" -libraries "C:\Users\Matt\Documents\Arduino\libraries" -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=0X2A03_0X0042 -ide-version=10608 -build-path "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "C:\Users\Matt\Desktop\sketch_mar23a\sketch_mar23a.ino"
"C:\Users\Matt\Desktop\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\variants\mega" "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\sketch\sketch_mar23a.ino.cpp" -o "nul"
"C:\Users\Matt\Desktop\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\Wire\src" "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\sketch\sketch_mar23a.ino.cpp" -o "nul"
"C:\Users\Matt\Desktop\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\sketch\sketch_mar23a.ino.cpp" -o "nul"
"C:\Users\Matt\Desktop\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\sketch\sketch_mar23a.ino.cpp" -o "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\preproc\ctags_target_for_gcc_minus_e.cpp"
C:\Users\Matt\Desktop\sketch_mar23a\sketch_mar23a.ino:93:61: fatal error: UTFT.h: No such file or directory

#include <UTFT.h> // used to interface with the TFT display

^

compilation terminated.

Using library Wire at version 1.0 in folder: C:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\Wire 
Using library EEPROM at version 2.0 in folder: C:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\EEPROM 
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.


----------



## mbaratt

i have everything connected according to the schematic and when i compile i get an error saying:

Arduino: 1.6.8 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\Matt\Desktop\Arduino\arduino-builder -dump-prefs -logger=machine -hardware "C:\Users\Matt\Desktop\Arduino\hardware" -tools "C:\Users\Matt\Desktop\Arduino\tools-builder" -tools "C:\Users\Matt\Desktop\Arduino\hardware\tools\avr" -built-in-libraries "C:\Users\Matt\Desktop\Arduino\libraries" -libraries "C:\Users\Matt\Documents\Arduino\libraries" -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=0X2A03_0X0042 -ide-version=10608 -build-path "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "C:\Users\Matt\Desktop\sketch_mar23a\sketch_mar23a.ino"
C:\Users\Matt\Desktop\Arduino\arduino-builder -compile -logger=machine -hardware "C:\Users\Matt\Desktop\Arduino\hardware" -tools "C:\Users\Matt\Desktop\Arduino\tools-builder" -tools "C:\Users\Matt\Desktop\Arduino\hardware\tools\avr" -built-in-libraries "C:\Users\Matt\Desktop\Arduino\libraries" -libraries "C:\Users\Matt\Documents\Arduino\libraries" -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=0X2A03_0X0042 -ide-version=10608 -build-path "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "C:\Users\Matt\Desktop\sketch_mar23a\sketch_mar23a.ino"
"C:\Users\Matt\Desktop\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\variants\mega" "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\sketch\sketch_mar23a.ino.cpp" -o "nul"
"C:\Users\Matt\Desktop\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\Wire\src" "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\sketch\sketch_mar23a.ino.cpp" -o "nul"
"C:\Users\Matt\Desktop\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\sketch\sketch_mar23a.ino.cpp" -o "nul"
"C:\Users\Matt\Desktop\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\sketch\sketch_mar23a.ino.cpp" -o "C:\Users\Matt\AppData\Local\Temp\build2476a1e229d75f5e7cde24493e684f7d.tmp\preproc\ctags_target_for_gcc_minus_e.cpp"
C:\Users\Matt\Desktop\sketch_mar23a\sketch_mar23a.ino:93:61: fatal error: UTFT.h: No such file or directory

#include <UTFT.h> // used to interface with the TFT display

^

compilation terminated.

Using library Wire at version 1.0 in folder: C:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\Wire 
Using library EEPROM at version 2.0 in folder: C:\Users\Matt\Desktop\Arduino\hardware\arduino\avr\libraries\EEPROM 
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.


----------



## Sting64

cairo said:


> @Sting64 What is the power rating for your solid state relays?



The power rating is 2A at 240V


----------



## Sting64

Matchless said:


> This may kill your arduino.
> You have to use a Mostfet, transistor or LED driver


If you go back to pg 94, you will see what I am using. I have three Chinese Black Box LED fixtures. The pwm input of the driver is connected directly to arduino with 10K 1/4w resistor. So far it is working pretty good.

Bump:


MrMan said:


> Here is an article explaining how to hook it up with a drawing as well:
> 
> https://learn.adafruit.com/rgb-led-strips/usage


Thank you for the article reference. I'll be able to use that to control my refugium light, if I decide to control it automatically. I am currently using led strips connected to wireless remote dimmer.


----------



## Pattern8

I won't even pretend to understand 1/2 of it but what I can say is I really like where you're going. I would really enjoy something like this- I think many would! Wish people like yourself would more strongly consider using something like Kickstarter to better integrate tech into this hobby. It really is so badly needed. I know its a hobby but don't they say the greatest job is doing what you love?


----------



## Sting64

ODwyerPW said:


> Sting64, That is really nice work with the Power Unit.


Thank you. I decided to take my time on this since I was posting it. It turned out good and is working nicely too.

The one thing I forgot to show, I dabbed the bare copper connections of my hot lead power buss. It might be a little hard to see the bare copper where the wire comes up from the relay and connects to the power bus. I purchased a container of that rubber tool dip from Home Depot.


----------



## mbaratt

Im getting an error when compiling the code. Does anyone have a fully compiled version of the code?
I have attached a picture of what the error looks like.


----------



## cairo

mbaratt said:


> Im getting an error when compiling the code. Does anyone have a fully compiled version of the code?
> I have attached a picture of what the error looks like.


Install UTFT library.


----------



## plant_guru

Hey guys, I finally have mine in testing mode and have a few questions. 

1. For the temperature alarm, is there a way to have it audible or is it just on screen?

2. on my home screen it says HOME ver 1.4. Where in the code do I change this so it just says HOME?

3. Can I change the icons on the screen? How can I replace the "filter" one with a circulating pump?


----------



## plant_guru

Has anyone ever ran some Finnex planted + 24/7 fixtures off of the iAqua?


----------



## MrMan

plant_guru said:


> Hey guys, I finally have mine in testing mode and have a few questions.
> 
> 1. For the temperature alarm, is there a way to have it audible or is it just on screen?
> 
> 2. on my home screen it says HOME ver 1.4. Where in the code do I change this so it just says HOME?
> 
> 3. Can I change the icons on the screen? How can I replace the "filter" one with a circulating pump?


1. I think so but haven't looked too much into it. You can look in checkTemp() and see AnotherHobby put a spot for it. I'm not sure what hardware would be needed other than a piezo buzzer, search for that + Arduino and i'm sure you'll find lots of information.

2. I searched through the whole project and couldn't even find "ver" to be printed to the screen, do you have a modified copy of the code???

3. Easiest way would be to change this:

char *pwrFilterIcon[] = {
"3filt_F.raw","3filt_N.raw"};

to 

char *pwrFilterIcon[] = {
"3circ_F.raw","3circ_N.raw"};


And change this:

char *pwrFilterIconS[] = {
"1filtF.raw","1filtN.raw"};

to 

char *pwrFilterIconS[] = {
"1circF.raw","1circN.raw"};


----------



## plant_guru

No I haven't changed any of the code. I got my board from o2surplus and came with a screen and an arduino as well.


----------



## plant_guru

So i just tried changing the code and now where the light icon transitions between the feeding and the dosing, I have a big ol ? What did I do or not do correctly :frown2:




MrMan said:


> 1. I think so but haven't looked too much into it. You can look in checkTemp() and see AnotherHobby put a spot for it. I'm not sure what hardware would be needed other than a piezo buzzer, search for that + Arduino and i'm sure you'll find lots of information.
> 
> 2. I searched through the whole project and couldn't even find "ver" to be printed to the screen, do you have a modified copy of the code???
> 
> 3. Easiest way would be to change this:
> 
> char *pwrFilterIcon[] = {
> "3filt_F.raw","3filt_N.raw"};
> 
> to
> 
> char *pwrFilterIcon[] = {
> "3circ_F.raw","3circ_N.raw"};
> 
> 
> And change this:
> 
> char *pwrFilterIconS[] = {
> "1filtF.raw","1filtN.raw"};
> 
> to
> 
> char *pwrFilterIconS[] = {
> "1circF.raw","1circN.raw"};


----------



## MrMan

plant_guru said:


> So i just tried changing the code and now where the light icon transitions between the feeding and the dosing, I have a big ol ? What did I do or not do correctly :frown2:


I suspect your ramp values/timing have been reset which is causing the controller to not know which light mode it should be in. If it can't determine which state to start it in goes to currentLightMode 5 and displays a question mark. Check all your settings for ramp time and reset the controller and let me know if that works.

Ryan


----------



## plant_guru

MrMan said:


> I suspect your ramp values/timing have been reset which is causing the controller to not know which light mode it should be in. If it can't determine which state to start it in goes to currentLightMode 5 and displays a question mark. Check all your settings for ramp time and reset the controller and let me know if that works.
> 
> Ryan


Working now. But I still have the error in the compiler "iAquav1.ino:90:61: fatal error: UTFT.h: No such file or directory

#include <UTFT.h> // used to interface with the TFT display"

From what I have done in the arduino program, i think I have installed the library for the TFT display, but still get this.


----------



## plant_guru

Ok so I have fixed the problem but now have one last BIG one, and I hope someone can help me.

I uploaded the sketch but now my touch screen does not work like it is supposed to. NONE of the buttons seem to work. Has anyone had this issue?


----------



## fietsenrex

once, fiddled some with the wiring and then it continued to work like before


----------



## plant_guru

fietsenrex said:


> once, fiddled some with the wiring and then it continued to work like before


Don't think that will work for me


----------



## lovingHDTV

Has anyone else had issues with the image files getting corrupted or something? Periodically I have to copy the image files over to the sdcard again because it hangs when trying to load them. When it hangs I see an off colored flashing square where the image should be.

david


----------



## MrMan

lovingHDTV said:


> Has anyone else had issues with the image files getting corrupted or something? Periodically I have to copy the image files over to the sdcard again because it hangs when trying to load them. When it hangs I see an off colored flashing square where the image should be.
> 
> david


Have you tried more than one sdcard? Maybe it's the card itself, I've never had to reload the images before.


----------



## plant_guru

plant_guru said:


> Ok so I have fixed the problem but now have one last BIG one, and I hope someone can help me.
> 
> I uploaded the sketch but now my touch screen does not work like it is supposed to. NONE of the buttons seem to work. Has anyone had this issue?


Just an FYI, the screen was not calibrated with the newly updated libraries.


----------



## Alex78

Hello dear friends

First of all please excuse my written mistakes english is not the native language for my so sorry again.
2 months ago i started this project but i have some problem with the internal temperature sensor .I use a dth11(
temperature and humidity) and fail to implement it in sketch ,has anyone tried to implement dth11 in sketch?

All my respect for hard work 
Best regards


----------



## mbaratt

I uploaded the UTFT library and I'm getting a lot of errors saying "does not name a type" or "was not declared in scope". Any ideas of whats wrong?
Also does pins 2 and 19 on the screen have to be connected to anything, on the table for the screen it shows " * " for pins 2 and 19.
thanks


----------



## fietsenrex

did you read the full thread?
I had a lot of issues compiling becuase i used a different arduino software version..
is the board set to mega in the settings?


----------



## plant_guru

Ok so I have a new problem. When I go into Settings > Dosing.... as soon as the screen loads, it reboots.

Also, when I go and change how large the dosing volume is, it only goes to 990mL. (this was before it was rebooting). The dose size i changed to 20mL and I have it set to full, I only have 1 dose on the front screen.


----------



## mbaratt

fietsenrex said:


> did you read the full thread?
> I had a lot of issues compiling becuase i used a different arduino software version..
> is the board set to mega in the settings?


I have it set to mega in the settings. Which version of arduino did you use to get it going?


----------



## fietsenrex

plant_guru said:


> Ok so I have a new problem. When I go into Settings > Dosing.... as soon as the screen loads, it reboots.
> 
> Also, when I go and change how large the dosing volume is, it only goes to 990mL. (this was before it was rebooting). The dose size i changed to 20mL and I have it set to full, I only have 1 dose on the front screen.


try clearing the EEPROM and reload the code again, I had similar issues with the dosing as where the number to high for the code to work properly.
you can add the EEPROM anything library to see if it makes a difference, for me it worked great.
the current code without that library doesn't allow higher values than 255. (except for the flowrate of the pump for some reason)



mbaratt said:


> I have it set to mega in the settings. Which version of arduino did you use to get it going?


I think it was 1.0.6, but since I started using linux as an OS and working on multiple places I switched to codebender.


----------



## lovingHDTV

Here is a sketch I use to clear the EEPROM. I used it to fix a similar issue I had.




plant_guru said:


> Ok so I have a new problem. When I go into Settings > Dosing.... as soon as the screen loads, it reboots.
> 
> Also, when I go and change how large the dosing volume is, it only goes to 990mL. (this was before it was rebooting). The dose size i changed to 20mL and I have it set to full, I only have 1 dose on the front screen.


Bump: I've noticed that if I touch the screen and my finger is wet/damp at all it hangs and the icon I touched looks like static. I have to be very careful to make sure my finger is dry. I typically do this when I'm trimming, cleaning and forget to turn off the filter.

I wonder if putting a screen protector on it would help?

Anyone else see this sensitivity to moisture?

david


----------



## fietsenrex

I've the issue that when my fingers are wet the screen doesn't respond at all or just random.


----------



## plant_guru

lovingHDTV said:


> Here is a sketch I use to clear the EEPROM. I used it to fix a similar issue I had.
> 
> 
> 
> 
> Bump: I've noticed that if I touch the screen and my finger is wet/damp at all it hangs and the icon I touched looks like static. I have to be very careful to make sure my finger is dry. I typically do this when I'm trimming, cleaning and forget to turn off the filter.
> 
> I wonder if putting a screen protector on it would help?
> 
> Anyone else see this sensitivity to moisture?
> 
> david


I actually use a stylus to touch the screen.


Is there a way to make the dosing jugs larger than 990mL? I have some 4L that I would like to use


----------



## MrMan

plant_guru said:


> I actually use a stylus to touch the screen.
> 
> 
> Is there a way to make the dosing jugs larger than 990mL? I have some 4L that I would like to use


The screens aren't capacitive so i'm not sure a stylus is the way to go. They're actually resistive touch so they respond to pressure, i find the pointy end of an empty mechanical pencil works great.

I looked at the iAqua code and don't see any limits to the dosing container size in the touch routine. It looks like it should go all the way to 2550ml and then either roll back or cause some sort of error. The code uses an int so if 255 is stored it will read 255, increase to 256 and then try to write but due to EEPROM being in bytes I believe it would rollover and write a 0. However the code would continue to run with 2560ml until it re-reads the EEPROM value.


----------



## mbaratt

OK so I switched to 1.0.6 and i'm still getting the same problem. It keeps saying "does not name a type" and "not declared in scope".


----------



## plant_guru

I don't think my dosing pumps are working. I try to read the voltage across the pins on the board, and I have no measurable voltage when the pumps should be running.

Where can I look to see where I went wrong?

BTW I have an O2Surplus shield hooked up.


----------



## MrMan

plant_guru said:


> I don't think my dosing pumps are working. I try to read the voltage across the pins on the board, and I have no measurable voltage when the pumps should be running.
> 
> Where can I look to see where I went wrong?
> 
> BTW I have an O2Surplus shield hooked up.


It's an open collector circuit, you won't read voltage across the dosing pump connector without the pump actually connected


----------



## plant_guru

MrMan said:


> It's an open collector circuit, you won't read voltage across the dosing pump connector without the pump actually connected


The pumps are connected


----------



## mbaratt

Im figured out the "was not declared in scope error" but now im getting another error saying,

java.io.IOException: Could not replace C:\Users\Matt\AppData\Local\Temp\build7470198346182104181.tmp\arial_bold.c

at processing.app.Base.saveFile(Base.java:2230)

at processing.app.Sketch.preprocess(Sketch.java:1460)

at processing.app.Sketch.preprocess(Sketch.java:1334)

at processing.app.Sketch.build(Sketch.java:1580)

at processing.app.Sketch.build(Sketch.java:1562)

at processing.app.Editor$DefaultRunHandler.run(Editor.java:1899)

at java.lang.Thread.run(Thread.java:619)

processing.app.debug.RunnerException: Problem moving arial_bold.c to the build folder

at processing.app.Sketch.preprocess(Sketch.java:1463)

at processing.app.Sketch.preprocess(Sketch.java:1334)

at processing.app.Sketch.build(Sketch.java:1580)

at processing.app.Sketch.build(Sketch.java:1562)

at processing.app.Editor$DefaultRunHandler.run(Editor.java:1899)

at java.lang.Thread.run(Thread.java:619)


----------



## lovingHDTV

Can anyone recommend an SDCARD that is working well for them? Mine got corrupted again. I had a different 2GB one, but it didn't work at all, nothing could be loaded. I copied everything over to the original SDCARD and it is working again. this time around I flipped the lock slide, not sure that will do anything but figured it couldn't hurt.

I'd prefer just buying a new card that will work more reliably.

thanks
david


----------



## fietsenrex

lovingHDTV said:


> Can anyone recommend an SDCARD that is working well for them? Mine got corrupted again. I had a different 2GB one, but it didn't work at all, nothing could be loaded. I copied everything over to the original SDCARD and it is working again. this time around I flipped the lock slide, not sure that will do anything but figured it couldn't hurt.
> 
> I'd prefer just buying a new card that will work more reliably.
> 
> thanks
> david


I've got an old 512MB card that works like a charm, smaller is better in this case.



mbaratt said:


> Im figured out the "was not declared in scope error" but now im getting another error saying,


try this one: https://codebender.cc/sketch:78688



plant_guru said:


> The pumps are connected


is the 12v connected?


----------



## mbaratt

I finally got the code uploaded successfully but my screen is going crazy now. None of the icons on the home screen are showing up also.


----------



## plant_guru

lovingHDTV said:


> Here is a sketch I use to clear the EEPROM. I used it to fix a similar issue I had.
> 
> david


I cleared the EEPROM and loaded the sketch back on the arduino. I went and played with a few setting back in the program in the dosing area and it is rebooting again.

Am I the only one having these issues???


----------



## lovingHDTV

I have had them, which is why I use that sketch. I've noticed that they tend to happen when I'm making changes or playing around, but then go away after I get things settled. 

I've recently had issues with the files on the sdcard getting corrupted causing reboots.

I wish I could figure out why it happens sometimes, but once I stop changing things it seems to stop rebooting for me. I think that the eeprom writing isn't very robust. I've considered changing the write to a write, read, verify to ensure it stored correctly, but haven't gotten to it.

david



plant_guru said:


> I cleared the EEPROM and loaded the sketch back on the arduino. I went and played with a few setting back in the program in the dosing area and it is rebooting again.
> 
> Am I the only one having these issues???


----------



## plant_guru

It only happens in the dosing settings 




lovingHDTV said:


> I have had them, which is why I use that sketch. I've noticed that they tend to happen when I'm making changes or playing around, but then go away after I get things settled.
> 
> I've recently had issues with the files on the sdcard getting corrupted causing reboots.
> 
> I wish I could figure out why it happens sometimes, but once I stop changing things it seems to stop rebooting for me. I think that the eeprom writing isn't very robust. I've considered changing the write to a write, read, verify to ensure it stored correctly, but haven't gotten to it.
> 
> david


----------



## mbaratt

When I hook up my screen using the pins it doesn't work but when I use the tft shield the home screen comes on but i cant access anything


----------



## MrMan

mbaratt said:


> When I hook up my screen using the pins it doesn't work but when I use the tft shield the home screen comes on but i cant access anything


Did you modify your tft shield to use the proper pins for touch? The iAqua software uses pins 42-46 whereas tft shields come wired for pins 2-6.



plant_guru said:


> It only happens in the dosing settings


Can you be more specific? IE does it reset as soon as you press the dosing settings button, when it finishes loading the screen, when you press a button in the settings menu, what are the values at when it resets etc. 

When you reset the EEPROM values did it load the dosing settings screen OK? If so try that again and only change one value at a time going in/out of the menu till you figure out what change causes the software to start resetting.


----------



## mbaratt

No i didnt modify anything to to use the shield. How would I modify it to use the shield?


----------



## MrMan

mbaratt said:


> No i didnt modify anything to to use the shield. How would I modify it to use the shield?


To be blunt, read the thread. Somewhere around page 10 (guessing here) anotherhobby posted pictures of how it needs to be modified. Basically remove the header that connects to pins 2-6 and then add jumper wires between pins 2-6 and 42-46, easier to do with the picture he posted.


----------



## mbaratt

MrMan said:


> To be blunt, read the thread. Somewhere around page 10 (guessing here) anotherhobby posted pictures of how it needs to be modified. Basically remove the header that connects to pins 2-6 and then add jumper wires between pins 2-6 and 42-46, easier to do with the picture he posted.


Thanks a lot. Ill post my results


----------



## mbaratt

I removed the headers from pins 2-6 and put jumpers from there to 42-46 and it still doesn't work.


----------



## mbaratt

MrMan said:


> To be blunt, read the thread. Somewhere around page 10 (guessing here) anotherhobby posted pictures of how it needs to be modified. Basically remove the header that connects to pins 2-6 and then add jumper wires between pins 2-6 and 42-46, easier to do with the picture he posted.


The touch still doesn't work correctly. Is there any code that needs to be altered after doing that modification? Sometimes when I touch the screen on the right side it reloads the home screen for some reason.


----------



## lovingHDTV

If you monitor the serial output does it print anything?

You could search the thread for calibration, there was talk around page 93 about similar issues.

Do you have the RTC hooked up? I couldn't get anything to work until I hooked up the clock.

david



mbaratt said:


> The touch still doesn't work correctly. Is there any code that needs to be altered after doing that modification? Sometimes when I touch the screen on the right side it reloads the home screen for some reason.


----------



## mbaratt

lovingHDTV said:


> If you monitor the serial output does it print anything?
> 
> You could search the thread for calibration, there was talk around page 93 about similar issues.
> 
> Do you have the RTC hooked up? I couldn't get anything to work until I hooked up the clock.
> 
> david


If i just connect the display to the shield and run the code shouldn't the screen touch still work?


----------



## mbaratt

lovingHDTV said:


> If you monitor the serial output does it print anything?
> 
> You could search the thread for calibration, there was talk around page 93 about similar issues.
> 
> Do you have the RTC hooked up? I couldn't get anything to work until I hooked up the clock.
> 
> david


I got the touch to "kinda" work. The only button that seems to work correctly is the home button everywhere else that I touch brings up the feeding screen. On the serial monitor it says "RTC is not running". There was talk early in the forum about commenting out RTC did anyone figure that out? Im not sure how to hook up my RTC module because mine looks different than the one in the schematic, Ill attach a photo of what mine looks like.


----------



## fietsenrex

I think I have the same as you, if I remember correctly I only connected the P2 side and the VCC and GND from the P1 side.
but there is a schematic somewhere in this thread in the first couple of pages on how to wire the RTC.

you're not the first with this issue in this thread.


----------



## cairo

HTML:







mbaratt said:


> I got the touch to "kinda" work. The only button that seems to work correctly is the home button everywhere else that I touch brings up the feeding screen. On the serial monitor it says "RTC is not running". There was talk early in the forum about commenting out RTC did anyone figure that out? Im not sure how to hook up my RTC module because mine looks different than the one in the schematic, Ill attach a photo of what mine looks like.


Arduino. --------- Rtc
Gnd. -----------> Gnd
5v. -------------> Vcc
Sda(pin20) ----> Sda
Scl(pin21) -----> Scl

Use p1 (it will work with p2 too)


----------



## diztly

thanks mr.man
this my board with mr.man schematic, but uln 2003 ic not fit inboard feet to small, but is ok.

can any guys help how to change code pin TFT and Utouch to standart pin 7,6,5,4,3. 
LED PWM Drive only via PCA9685

thanks


----------



## MrMan

diztly said:


> thanks mr.man
> this my board with mr.man schematic, but uln 2003 ic not fit inboard feet to small, but is ok.
> 
> can any guys help how to change code pin TFT and Utouch to standart pin 7,6,5,4,3.
> LED PWM Drive only via PCA9685
> 
> thanks


The shield is routed such that it uses pins 42-46 instead of 2-6 for the LCD screen, not sure why you would want to use the other pins. But if you wanted to use a standard TFT shield over this shield you could change the UTouch initialization:

UTouch myTouch(46,45,44,43,42); //This is what the shield is designed for
UTouch myTouch(6, 5, 4, 3, 2); // For standard TFT shield

For the code to use PCA9685 for LED PWM just make sure that the below boolean is true in your code:
boolean PCA9685Installed = true;


----------



## opentoideas

Crickey, been through this whole thread twice now!

have put together an IAqua from AH's code as linked on the first page and have a couple of issues that I hope you guys can help with.

not hooked up yet just bench testing so mega - tft shield - tft - rtc and SD card. 

changed the boolean for LED PWM control and thanks to a post earlier also maxRGBW to 254 which has solved some of the issues I was seeing with the other logic that was supposed to do this but there are the things I have left.

on the LED settings screen when trying to set the values for the different phases some increase in 10s and others in single units. is this normal? also there does not seem to be any error check so you can take it to invalid numbers eg 260 which then unsurprisingly causes errors is this the way it works for others or do I have something thats gone wrong?

Also I notice that the power settings dont remain after a reset. is this normal? I am not using the power scheduling but did expect it to keep the settings.

so everything off except LED 1. reset and turn on settings are LED off filter( I think) and heater on

having a look at this controller to replace my current Jarduino build but it needs to be reliable and predictable and not sure if this is more error prone than I hoped or hopefully got something weird going on.

anyway off to work through the code to see what I can find but are these the same for others or just mine?


----------



## lovingHDTV

I'm still having issue with the sdcard. I put another one in there and get about a week before an icon get corrupted and I have to copy over new ones.

I even slide the "lock" tab on it, but I'm not sure if that is a software thing or not.

Any other ideas? A week or two between corrupts isn't good enough.

EDIT: After reading around a bit, it sounds like the most logic answer is bad power supply. I had another 12v 2A supply so I hooked it up with that. The other supply is larger, but older so maybe it has something wrong with it. We'll give this new one a go.

thanks
david


----------



## fietsenrex

opentoideas said:


> changed the boolean for LED PWM control and thanks to a post earlier also maxRGBW to 254 which has solved some of the issues I was seeing with the other logic that was supposed to do this but there are the things I have left.
> 
> on the LED settings screen when trying to set the values for the different phases some increase in 10s and others in single units. is this normal? also there does not seem to be any error check so you can take it to invalid numbers eg 260 which then unsurprisingly causes errors is this the way it works for others or do I have something thats gone wrong?


I've got the same thing but as soon as i hit 100 (990-100) it goes in increments of 1 instead of 10. 
I don't have any issues with value's below the real 100 I can set it to 980 if I want, which translates to 98 in real value.

but I've added the EEPROM anything library because my dosing was screwing up, so maybe that is why it is working without problems for me.


----------



## HiThere

Hi,

I am also currently building my controller. So far, everything went well, but now I have a question for the electronic experts:
When comparing the modified TFT shield with the custom PCB of MrMan, I noticed that there is an additional pnp transistor for the backlight wiring in the custom PCB. Is there a specific reason for that?
I also noticed that there are a couple of free pins when using a cable to connect from the TFT shield to the screen. Since I ideally don't want to use extra wiring, is there any reason against using them for the backlight pwm signal or other things (the ambient light sensor, for example)?

Thanks for this awesome project, I learned a lot so far :nerd:


----------



## opentoideas

fietsenrex said:


> I've got the same thing but as soon as i hit 100 (990-100) it goes in increments of 1 instead of 10.
> I don't have any issues with value's below the real 100 I can set it to 980 if I want, which translates to 98 in real value.
> 
> but I've added the EEPROM anything library because my dosing was screwing up, so maybe that is why it is working without problems for me.


good catch, ok so under 100 its adding a trailing digit so it appears to be heading up in increments of 10 although its not. oddly the trailing digit is the unit from the prior phase so for me i am trying to set the moon value as 0,0,0,10 but with the 1/2 sun value set at 138.137.136.135 i get 008.0007.006.305 for the moon setting. (not real light values just numbers used to test and track the wierd behavior of this)

i don't have it hooked up to anything yet so i will presume its working for the moment as i already have the tank running on another arduino based controller and until i am sure this one is behaving its not going anywhere near my tank!

has anyone had the same problem with power states? even though i will have the lights on 24/7 it looks like i have to run a schedule for them to come on after a reset(i.e. power failure). not ideal but not a problem - they just wont be going through a relay . however something is still wrong with the lighting as i cant seem to get rid of the "?" on the home screen. i believe this only shows when there is not a valid lighting plan in place

i have the values set under settings for each phase and i have a lighting schedule in place. what else is there?


----------



## fietsenrex

Power behaves correctly, since there is no schedule to verify the state of the outlet.
This is a fail-safe feature to keep your filter and heater running as long as there is power, the rest is optional for keeping fish alive 

As for the lighting you should see the correct lighting mode/state symbol as soon as the schedule is loaded and the homescreen reloaded
For the digits, is it in the display when you're adjusting the digits or when you're switching the lightmode?


----------



## plant_guru

> Can you be more specific? IE does it reset as soon as you press the dosing settings button, when it finishes loading the screen, when you press a button in the settings menu, what are the values at when it resets etc.
> 
> When you reset the EEPROM values did it load the dosing settings screen OK? If so try that again and only change one value at a time going in/out of the menu till you figure out what change causes the software to start resetting.


It happens right after the dosing settings screen is refreshed.

It is also happening if I leave it for a few days and hit the feeding button.


----------



## lovingHDTV

I had similar problems, and replacing the power supply seems to have fixed them (at least I haven't had the problem in the last 5 day).

I always had issues when hitting the feed button, or any buttons if my fingers were damp. I have no issues now.

It may be worth a shot, if you have a power supply.

david



plant_guru said:


> It happens right after the dosing settings screen is refreshed.
> 
> It is also happening if I leave it for a few days and hit the feeding button.


----------



## diztly

MrMan said:


> The shield is routed such that it uses pins 42-46 instead of 2-6 for the LCD screen, not sure why you would want to use the other pins. But if you wanted to use a standard TFT shield over this shield you could change the UTouch initialization:
> 
> UTouch myTouch(46,45,44,43,42); //This is what the shield is designed for
> UTouch myTouch(6, 5, 4, 3, 2); // For standard TFT shield
> 
> For the code to use PCA9685 for LED PWM just make sure that the below boolean is true in your code:
> boolean PCA9685Installed = true;



thx Mr.man problem solved. roud:roud:
how to control PWM LED 5 and 6.with PCA9685Installed. thanks before.


----------



## DeWayne

Hello All, 
I have beed reading this forum about iAqua boards and firmware, But there seems to be multiple boards with a slight variation in the such as MrMan and Robs.

Can anyone tell me where i can find this out so I can consolidate all this together.

Board (Schematic and PCB Layout) - 
Bill of Materials - 
Firmware - 
Librarys - 
Extra
Version

I would like to get all the information together so I can choose the road I want to take to build a aqurqrium / aquaponics controller

Currently I am researching this and is a goot opportunity to post all the information as an update from a date in time.

Thank you all for your help.


----------



## diztly

DeWayne said:


> Hello All,
> I have beed reading this forum about iAqua boards and firmware, But there seems to be multiple boards with a slight variation in the such as MrMan and Robs.
> 
> Can anyone tell me where i can find this out so I can consolidate all this together.
> 
> Board (Schematic and PCB Layout) -
> Bill of Materials -
> Firmware -
> Librarys -
> Extra
> Version
> 
> I would like to get all the information together so I can choose the road I want to take to build a aqurqrium / aquaponics controller
> 
> Currently I am researching this and is a goot opportunity to post all the information as an update from a date in time.
> 
> Thank you all for your help.


agree with you brother...:laugh2:


----------



## MrMan

DeWayne said:


> Hello All,
> I have beed reading this forum about iAqua boards and firmware, But there seems to be multiple boards with a slight variation in the such as MrMan and Robs.
> 
> Can anyone tell me where i can find this out so I can consolidate all this together.
> 
> Board (Schematic and PCB Layout) -
> Bill of Materials -
> Firmware -
> Librarys -
> Extra
> Version
> 
> I would like to get all the information together so I can choose the road I want to take to build a aqurqrium / aquaponics controller
> 
> Currently I am researching this and is a goot opportunity to post all the information as an update from a date in time.
> 
> Thank you all for your help.


Check my sig for all of my files. I believe there were some errors with the BOM on some small resistor parts that i haven't had a chance to go through yet but for the most part it's accurate.

Rob had to remove all of his stuff since he decided to start selling his PCBs and software (not allowed by forum rules). So you won't find anything on here anymore and it's less DIY. AnotherHobby's software is linked on the first page but the PCB to match his software was done by 02, not sure where in the thread you can find his board, if you find it let me know and i'll update this post


----------



## lovingHDTV

It has been about a month now and I've had absolutely no issues since going with the new power supply.

david



lovingHDTV said:


> I'm still having issue with the sdcard. I put another one in there and get about a week before an icon get corrupted and I have to copy over new ones.
> 
> I even slide the "lock" tab on it, but I'm not sure if that is a software thing or not.
> 
> Any other ideas? A week or two between corrupts isn't good enough.
> 
> EDIT: After reading around a bit, it sounds like the most logic answer is bad power supply. I had another 12v 2A supply so I hooked it up with that. The other supply is larger, but older so maybe it has something wrong with it. We'll give this new one a go.
> 
> thanks
> david


----------



## ceres_ces

wich tft display model did you buy? is it a ILI9341 TFT LCD? are you useing an elecfreacks 2.2 mega sheld to connect to your's mega?


----------



## ceres_ces

i'm going to buy this tft lcd 3.2 it is an SD ILI9341 IT TE175 (the ebay code is 321749581438)
i need your suggest about the difference between your ADS7843 controller and this.
is it compatible with your's libraries? or it will crash like sainsmart?


----------



## diztly

anyone can help, with iAqua Mr.Man version
I have a problem in the temperature sensor.
I'll put a chiller for this temperature sensor not for heater,
but this sensor is on and off following the indicator,
if the indicator in heatsink mode relay switched of.
if indicator in water mode relay switched on.
so every 10 seconds this relay on-off 
:crying:


----------



## fietsenrex

is it possible to assign the chiller to AUX1 or AUX2?
so that the heating function for the water remains only for the water.


----------



## diztly

thanks Fietsenrex.

I think it possible to assign the chiller to AUX1 or AUX2, just i do not know how to control it.
in Indonesia so hot, so I do not need a heater.
What there is a code that must be changed, I need this functionality.
or my upload code some missing or error.


----------



## fietsenrex

first off I'm NO expert in coding

but in my opinion if no heater is needed you can just invert the values for the switching of the heating.
instead of switching on the heater when it's to cold it'll switch on the chiller if its to hot.

just look up "void checkTemp()" and invert it and check if it works.


----------



## MrMan

ceres_ces said:


> i'm going to buy this tft lcd 3.2 it is an SD ILI9341 IT TE175 (the ebay code is 321749581438)
> i need your suggest about the difference between your ADS7843 controller and this.
> is it compatible with your's libraries? or it will crash like sainsmart?


ILI9341 is on the list of compatible controllers but depending on where it is purchased you have to change the code. But from ebay i'm not sure how that would work. What sainsmart screen do you have that is crashing? Did you update the initialization to match the screen? (ie UTFT myGLCD(*SSD1289*,38,39,40,41); )



diztly said:


> anyone can help, with iAqua Mr.Man version
> I have a problem in the temperature sensor.
> I'll put a chiller for this temperature sensor not for heater,
> but this sensor is on and off following the indicator,
> if the indicator in heatsink mode relay switched of.
> if indicator in water mode relay switched on.
> so every 10 seconds this relay on-off
> :crying:


That's a weird bug, there are two different routines for checking or drawing the temperature, I don't see how which one being drawn can change the relay state. What version of my code are you running?



fietsenrex said:


> first off I'm NO expert in coding
> 
> but in my opinion if no heater is needed you can just invert the values for the switching of the heating.
> instead of switching on the heater when it's to cold it'll switch on the chiller if its to hot.
> 
> just look up "void checkTemp()" and invert it and check if it works.


Yup, that's probably the easiest way to modify the code for a chiller. Use the high temp for when the chiller turns ON and low temp for when it turns OFF so that it doesn't have to turn on too often. I think this would do it:



Code:


if(sensor1Enabled)
  {
    sensorW.requestTemperatures();  // get temp from sensor
    if(displayInC == false) temperature = sensorW.getTempF(waterSensor);
    if(displayInC == true)  temperature = sensorW.getTempC(waterSensor);
    temperature = temperature + sensor1Calibration;
    int intTemperature=temperature; // create an integer var of the temp
    if (intTemperature >= heatOffTemp)  // temp over threshold, turn chiller ON
    {
      AlarmPwrHeat_On(); // turn on chiller power
    }
    if (intTemperature <= heatOnTemp) // turn chiller off when temp drops below setting
    {
      AlarmPwrHeat_Off(); // turn chiller off
    }
  }

This would use the same temperatures as the normal program but instead of turning the heater off when temperature gets too high it'll turn the chiller on. You'd probably want to change the default state of the chiller to be off as well, would be found in the startups tab in the smartStartup routine.


Code:


//// POWER STARTUP:  HEATER  
  AlarmPwrHeat_Off(); // the chiller is ALWAYS OFF until overtemp is reached


----------



## diztly

problem solved. 
many thanks Mr.Man.


----------



## diztly

add 1 dosing pump.
lcd 240 x 400


----------



## diztly

i need explanation. one channel in PCA9685 can handle how many bulk driver.?
i need to run led 150watt led/ channel, it may take 5 driver, assuming one driver lifted 30 watts.
this driver i have https://learn.sparkfun.com/tutorials/picobuck-hookup-guide-v12


----------



## lovingHDTV

the PCA9685 can source 10mA of current the way it is hooked up on MrMan's board.

I didn't see on the picobuck what the input current requirement is. You would need to figure that out, then you can figure out how many it will drive by dividing the 10mA, by what each board needs.


EDIT: Ok I found the data sheet (http://cdn.sparkfun.com/datasheets/Components/LED/AL8805.pdf) for the AL8805W5 and it specs about 40uA per control input, so you should be able to drive several of these boards in a parallel.

david



diztly said:


> i need explanation. one channel in PCA9685 can handle how many bulk driver.?
> i need to run led 150watt led/ channel, it may take 5 driver, assuming one driver lifted 30 watts.
> this driver i have https://learn.sparkfun.com/tutorials/picobuck-hookup-guide-v12


----------



## diztly

lovingHDTV said:


> the PCA9685 can source 10mA of current the way it is hooked up on MrMan's board.
> 
> I didn't see on the picobuck what the input current requirement is. You would need to figure that out, then you can figure out how many it will drive by dividing the 10mA, by what each board needs.
> 
> 
> EDIT: Ok I found the data sheet (http://cdn.sparkfun.com/datasheets/Components/LED/AL8805.pdf) for the AL8805W5 and it specs about 40uA per control input, so you should be able to drive several of these boards in a parallel.
> 
> david


thx. mr.david roud:roud:

today my cheap another driver come to my hand from ebay :
http://www.ebay.com/itm/5-pcs-3W-5-35V-LED-Driver-700mA-PWM-Dimming-DC-to-DC-Step-down-Constant-Current-/252056674079?hash=item3aafbf9f1f:g:C~gAAOSwrklVgOCT









but this driver on with LOW, off with HIGH. 
how to reverse the function, because PCA output is On with HIGH, off with LOW.


thx fo All
wardizt


----------



## lovingHDTV

It looks like this is possible withe Adafruit_PWMServoDriver, you just have to call it in inverted mode.

On line ~220 of MrAqua you will see something like:
//initialize PCA9865
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);


I think all you need to do is:
//initialize PCA9865
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40, t);

This should invert the outputs, but I've not tried it, just read the library information.

david



diztly said:


> thx. mr.david roud:roud:
> 
> today my cheap another driver come to my hand from ebay :
> [Ebay Link Removed] Pcs 3W 5 35V LED Driver 700mA PWM Dimming DC to DC Step Down Constant Current | eBay[/url]
> 
> 
> 
> 
> 
> 
> 
> 
> 
> but this driver on with LOW, off with HIGH.
> how to reverse the function, because PCA output is On with HIGH, off with LOW.
> 
> 
> thx fo All
> wardizt


----------



## fietsenrex

diztly said:


> add 1 dosing pump.
> lcd 240 x 400


does the pump also function properly?
how much work was it to change the code to get it working?


----------



## diztly

lovingHDTV said:


> It looks like this is possible withe Adafruit_PWMServoDriver, you just have to call it in inverted mode.
> 
> On line ~220 of MrAqua you will see something like:
> //initialize PCA9865
> Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);
> 
> 
> I think all you need to do is:
> //initialize PCA9865
> Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40, t);
> 
> This should invert the outputs, but I've not tried it, just read the library information.
> 
> david



thank you mr. david, I'll try. I hope this works.roud:roud:



fietsenrex said:


> does the pump also function properly?
> how much work was it to change the code to get it working?


for the code is successful, for the hardware I have not tried, perhaps using a PIN 7, and need remove some way to ULN2003 in the PCB, to connect with the dosing pump.


----------



## BDoss1985

I have everything on the way. .... automating a crypt emersed setup/overhead sump

Sent from my SM-N910V using Tapatalk


----------



## rodoselada

Hello,

I am having this weird prblem when 'm trying to set the color intensity/light.
Pretty much everything works (except some bugs that I need to fix - somehow), but when I try to adjust the light intensity, the color button stays grayed out and doesnt react to finger or pen clicks.
The light sometimes pops up, some times it doesnt, but not all of the LEDs are online at any particular moment.

I am using Adruino Mega, but following Mr. Man's shield.

Thank you in advance,
Dorin


----------



## BDoss1985

What light are you using with it Dorin?

Sent from my SM-N910V using Tapatalk


----------



## MrMan

rodoselada said:


> Hello,
> 
> I am having this weird prblem when 'm trying to set the color intensity/light.
> Pretty much everything works (except some bugs that I need to fix - somehow), but when I try to adjust the light intensity, the color button stays grayed out and doesnt react to finger or pen clicks.
> The light sometimes pops up, some times it doesnt, but not all of the LEDs are online at any particular moment.
> 
> I am using Adruino Mega, but following Mr. Man's shield.
> 
> Thank you in advance,
> Dorin


The icon you are talking about is just to change the colors of the bargraphs, it does not affect the light intensities. That is done through the "Lights" menu (top left icon).

You probably didn't change "lightCSP" to false. If it is set to true the software is set to use the e-series light. And since you can't change the colors of the channels, that feature is grayed out.


----------



## rodoselada

> What light are you using with it Dorin?
Click to expand...

i use dyi led





> The icon you are talking about is just to change the colors of the bargraphs, it does not affect the light intensities. That is done through the "Lights" menu (top left icon).
> 
> You probably didn't change "lightCSP" to false. If it is set to true the software is set to use the e-series light. And since you can't change the colors of the channels, that feature is grayed out.
> ]


thank you Ryan i fixed


my heatsink temperature probe hi show me -127'C, Lcd is flashing and arduino restarting


----------



## MrMan

rodoselada said:


> my heatsink temperature probe hi show me -127'C, Lcd is flashing and arduino restarting


What version of software are you running? With v4.3.4 (current version in my post) it should display "N/C" if the temperature is below -25C since that generally means the software couldn't communicate with the probe. Someone found a bug in my earlier versions that caused the heatsink sensor to not work.

Flashing/restarting: Try with the newest software, otherwise provide more info such as when it restarts (ie you were able to take the above pic so it's not as soon as it loads the logo, what screen loading causes it to reset? what action are you doing?)


----------



## Gadgetboy

Hi Guys

First off i must say a big thank you to 02 and everyone involved in the creation of this project.
I have been going through the forum and reading all advise and problems people encounter.
I do however have a question that i hope someone can answer for me, i have the ITEAD 3.2BLCD shield and i cant seem to find any documentation on it on how to setup the dimming of the backlight. i have managed to connect everything up and is reading temp and date and time.

I hope someone here can steer me in the right direction.


----------



## Gadgetboy

*ITEAD LCD Display*

Hi Guys

Anyone worked with the ITEAD 3.2b lcd display?
I want to connect the dimming part of the code but i cant find documentation on these LCD. I would appreciate any help or advise.:crying:


----------



## Arun.

MrMan said:


> What version of software are you running? With v4.3.4 (current version in my post) it should display "N/C" if the temperature is below -25C since that generally means the software couldn't communicate with the probe. Someone found a bug in my earlier versions that caused the heatsink sensor to not work.
> 
> Flashing/restarting: Try with the newest software, otherwise provide more info such as when it restarts (ie you were able to take the above pic so it's not as soon as it loads the logo, what screen loading causes it to reset? what action are you doing?)


Version 4.3.4 or 2.3.4? I can't find V4.3.4 anywhere


----------



## MrMan

Arun. said:


> Version 4.3.4 or 2.3.4? I can't find V4.3.4 anywhere


Oops, I meant 2.3.4 

Sent from my Nexus 6P using Tapatalk


----------



## Gadgetboy

Hi guys. First off I want to say a big thanks to all the people that have made this project come alive. I have a quick question though, has anyone used the Itead 3.2b led display? I have one and can't seem to find any documentation or schematics on how to get the display to dim with the coding. The display is also very dim when using the 5v from my mega. Any help?















Sent from my iPhone using Tapatalk


----------



## Gadgetboy

Hi The DS1307 uses a 3.3v power supply, try changing the pins to 3.3v on the mega and test.


----------



## MrMan

Gadgetboy said:


> Hi The DS1307 uses a 3.3v power supply, try changing the pins to 3.3v on the mega and test.


It's 5V not 3.3V, you can check the datasheet under "Recommended DC operating conditions"


----------



## Gadgetboy

OK. The one I got is 3.3v. Must be various versions available. Question as I am a newbie why is the screen icon greyed out on the latest version?


Sent from my iPhone using Tapatalk


----------



## Reefguy2012

Would you sell your codes? I'm doing a saltwater build I'm trying to get help.


----------



## fietsenrex

the code's are opensource.
the original build by AH is on the first page along with the partslist
the one made by MrMan is in his signature.


----------



## ceres_ces

Some one want to check up my new features to iAqua before to condivide it?
i started from MrAqua version 2.3.4 and add:
- Home screen PH Meter value
- PH Meter Calibration Process
- CO2 Relay control by PH value
- Water change function and related schedule
I really need an help! because i'm a dummies!
now my project uses Arduino mega, elefreaks TFT shield and ds1307 
Thanks


----------



## adam12

lovingHDTV said:


> I'd be interested in the board and code. Still trying to figure out what I want to build.
> 
> I like the ATO, don't need the third dosing pump, like the PWM channels.
> 
> thanks,
> david


hi im try compiled this program and i have this error tmElements_t prevRTC, saveRTC;
and why libery is not load 
thanks

Bump: hi i have question im try use our v2.3.4 jan 18,2016
and i have problem compiling this is erro why tmElements_t prevRTC, saveRTC;
and when im download libery is only 3 libery is load
thanks please help me


----------



## adam12

hi im try compiled this program and i have this error !!!!

tmElements_t prevRTC, saveRTC;

and why libery is not load
thanks


----------



## adam12

hi im try apload ver 2.2.3 and i i have same error 

tmElements_t prevRTC, saveRTC;

when im try compiling this please help me this is my
email 
[email protected]


----------



## cooldex

Hi Mr Man
I tried to download the PCB files and schematics files from the below link but does not work. 

"www.filedropper.com/iaquamegashieldrev2"

Can you please help me to get the above files.

Cheers
Dexter


----------



## MrMan

ceres_ces said:


> Some one want to check up my new features to iAqua before to condivide it?
> i started from MrAqua version 2.3.4 and add:
> - Home screen PH Meter value
> - PH Meter Calibration Process
> - CO2 Relay control by PH value
> - Water change function and related schedule
> I really need an help! because i'm a dummies!
> now my project uses Arduino mega, elefreaks TFT shield and ds1307
> Thanks


I think setting it up to act as a ph controller wouldn't be too hard, but without a ph monitor it would be hard to test. Not sure I have time to work on that right now though. What did you have in mind for water change function?



adam12 said:


> hi im try apload ver 2.2.3 and i i have same error
> 
> tmElements_t prevRTC, saveRTC;
> 
> when im try compiling this please help me this is my
> email
> [email protected]


Sounds like a library issue. Try moving all of the folders out of your library and then copy the ones from my download. Be sure to close Arduino while doing it so that it reloads the libraries after.



cooldex said:


> Hi Mr Man
> I tried to download the PCB files and schematics files from the below link but does not work.
> 
> "www.filedropper.com/iaquamegashieldrev2"
> 
> Can you please help me to get the above files.
> 
> Cheers
> Dexter


Check my sig, you're trying to download from an old link 


Random: I'm working on a software update to allow aux1 and aux2 to be used as repeated timers rather than on a 24hr schedule. IE you can configure them to turn on every 3 hours for 10 minutes. I found i want to run my eheim skimmer often enough to prevent film but not all day, so this was my solution.

Timer disabled:









Timer enabled:


----------



## cooldex

Matchless said:


> problem solved
> 
> Deleted some characters in library pcf8574.cpp and my build works now.
> 
> 
> the Original code: if (Wire.requestFrom(_address, (uint8_t)1) != 1)
> 
> I removed !=1 .
> This solved everything


Hi
How can I get your modified code?


----------



## fred73

Hi 

I'm using Mr Man circuit board with version 2.3.4. TFt is TE175 ILI9341. (3.2" TFT Display Touch Panel + PCB 262K Color screen SD SSD1289 ) 

I'm getting the following error when compiling . Any help would be great 

I can see that the TFT is listed, do i still need to declare or change any code for it to work 


Arduino: 1.6.0 (Windows 8), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

MrAqua_v2_3_4.ino:271:1: error: 'IRsend' does not name a type
MrAqua_v2_3_4.ino: In function 'void checkLightRamp()':
MrAqua_v2_3_4.ino:916:36: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:917:41: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:918:41: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:919:41: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino: In function 'void resyncLights()':
MrAqua_v2_3_4.ino:1508:5: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino: In function 'void checkLightFade(int, int)':
MrAqua_v2_3_4.ino:1907:11: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:1926:11: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:1957:11: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:1976:11: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2007:11: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2026:11: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2057:11: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2076:11: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino: In function 'void updateIRValues(byte, byte, byte)':
MrAqua_v2_3_4.ino:2217:20: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2218:20: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2219:20: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2220:20: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2230:20: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2231:20: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2232:20: error: 'irsend' was not declared in this scope
MrAqua_v2_3_4.ino:2233:20: error: 'irsend' was not declared in this scope
Touch.ino: In function 'void processMyTouch()':
Touch.ino:273:29: error: 'irsend' was not declared in this scope
Touch.ino:284:29: error: 'irsend' was not declared in this scope
Touch.ino:295:29: error: 'irsend' was not declared in this scope
Touch.ino:306:29: error: 'irsend' was not declared in this scope
Touch.ino:393:31: error: 'irsend' was not declared in this scope
Touch.ino:404:31: error: 'irsend' was not declared in this scope
Touch.ino:415:31: error: 'irsend' was not declared in this scope
Touch.ino:426:31: error: 'irsend' was not declared in this scope
Touch.ino:436:13: error: 'irsend' was not declared in this scope
Touch.ino:502:36: error: 'irsend' was not declared in this scope
Touch.ino:503:41: error: 'irsend' was not declared in this scope
Touch.ino:504:41: error: 'irsend' was not declared in this scope
Touch.ino:505:41: error: 'irsend' was not declared in this scope
Touch.ino:519:31: error: 'irsend' was not declared in this scope
Touch.ino:524:31: error: 'irsend' was not declared in this scope
Touch.ino:529:31: error: 'irsend' was not declared in this scope
Touch.ino:534:31: error: 'irsend' was not declared in this scope
Touch.ino:3430:29: error: 'irsend' was not declared in this scope
Touch.ino:3441:29: error: 'irsend' was not declared in this scope
Touch.ino:3452:29: error: 'irsend' was not declared in this scope
Touch.ino:3463:29: error: 'irsend' was not declared in this scope
Touch.ino:3554:30: error: 'irsend' was not declared in this scope
Touch.ino:3555:30: error: 'irsend' was not declared in this scope
Touch.ino:3565:30: error: 'irsend' was not declared in this scope
Touch.ino:3566:30: error: 'irsend' was not declared in this scope
Touch.ino:3576:30: error: 'irsend' was not declared in this scope
Touch.ino:3577:30: error: 'irsend' was not declared in this scope
Touch.ino:3587:30: error: 'irsend' was not declared in this scope
Touch.ino:3588:30: error: 'irsend' was not declared in this scope
Touch.ino:3597:13: error: 'irsend' was not declared in this scope
Touch.ino:3633:36: error: 'irsend' was not declared in this scope
Touch.ino:3634:41: error: 'irsend' was not declared in this scope
Touch.ino:3635:41: error: 'irsend' was not declared in this scope
Touch.ino:3636:41: error: 'irsend' was not declared in this scope
Touch.ino:3650:31: error: 'irsend' was not declared in this scope
Touch.ino:3655:31: error: 'irsend' was not declared in this scope
Touch.ino:3660:31: error: 'irsend' was not declared in this scope
Touch.ino:3665:31: error: 'irsend' was not declared in this scope
Touch.ino:3685:11: error: 'irsend' was not declared in this scope
Touch.ino:3705:11: error: 'irsend' was not declared in this scope
Touch.ino:3725:11: error: 'irsend' was not declared in this scope
Touch.ino:3745:11: error: 'irsend' was not declared in this scope
Touch.ino:3765:11: error: 'irsend' was not declared in this scope
Touch.ino:3785:11: error: 'irsend' was not declared in this scope
Touch.ino:3805:11: error: 'irsend' was not declared in this scope
Touch.ino:3825:11: error: 'irsend' was not declared in this scope
startups.ino: In function 'void setStartupLighting()':
startups.ino:756:23: error: 'irsend' was not declared in this scope
startups.ino:761:23: error: 'irsend' was not declared in this scope
startups.ino:766:23: error: 'irsend' was not declared in this scope
startups.ino:771:23: error: 'irsend' was not declared in this scope
startups.ino:776:23: error: 'irsend' was not declared in this scope
Error compiling.


----------



## jjgloster

I came across this thread & decided that I wanted to give this project a try. I just need a little help. I am going to list the items that I have purchased. Please let me know what else I need to complete the project.

-Funduino MEGA2560
-3.2"inch TFT LCD Display
-TFT 3.2'' Mega Touch LCD Shield
-Launch and Receiver Infrared Diodes 5mm Bulbs Emitter 940nm IR LEDs 9LN
-BC337 TRANSISTOR NPN 500MA 45V PHILIPS
-600V 15A Dual Row 12 Positions Screw Terminal Electric Barrier Strip Block
-1/4W 30 values 1/4W 1% Metal Film Resistors Resistance Assortment Kit Set
-SR260 2A 60V schottky diode
-I2C RTC DS1307 AT24C32 Real Time Clock Module For Arduino AVR ARM PIC SMD
-Waterproof Digital Thermal Probe Sensor DS18B20

Does it matter which prototype shield I get? Do all proto shields have the same function? The one shown at the beginning of this thread is an adafruit. These are the 2 that I am currently looking at. Will either of them work?

















Also, has someone condensed all the directions into 1 post to make it easier? It's kind of hard to complete a project from a thread with 106 pages.


----------



## fietsenrex

for the original build you're quite on the good track, not sure if the RTC will work properly.
also for the original build you will only need the first 20 pages or so, just look up all the posts from anotherhobby in this thread and you're on your way 
i condensed it, took me an hour to get all the proper images and schematics. unfortunately for you I tossed them all out as soon as my build was finished.

as long as your prototype shield fits on a mega, I don't see why it wouldn't work


----------



## jjgloster

fietsenrex said:


> for the original build you're quite on the good track, not sure if the RTC will work properly.
> also for the original build you will only need the first 20 pages or so, just look up all the posts from anotherhobby in this thread and you're on your way
> i condensed it, took me an hour to get all the proper images and schematics. unfortunately for you I tossed them all out as soon as my build was finished.
> 
> as long as your prototype shield fits on a mega, I don't see why it wouldn't work


I'm a noob when it comes to Arduino. I have no idea how to do the prototype shield. That's why I was trying to buy the exact same one to I can just replicate what I saw.

What makes think the RTC will not work properly? I made sure I ordered a DS1307.

If you don't mind, when my protoshield comes in, can you help me out with it?


----------



## BDoss1985

A little tip, to load the code into your arduino use code bender instead of arduino software .. my build is almost done. Using a busboard with the exact layout of the breadboard is an option its permanent soldered.

Sent from my SM-N910V using Tapatalk


----------



## fietsenrex

jjgloster said:


> I'm a noob when it comes to Arduino. I have no idea how to do the prototype shield. That's why I was trying to buy the exact same one to I can just replicate what I saw.
> 
> What makes think the RTC will not work properly? I made sure I ordered a DS1307.
> 
> If you don't mind, when my protoshield comes in, can you help me out with it?


sorry got the RTC mixed up with another build, you have the correct one
as for the prototype shield, I got the blue one with holes.
as long as you follow the schematic provided by another hobby you should be fine, I was a n00b myself when I build the controller, got it working and adopted it to my own preference 

https://codebender.cc/sketch:78688

my codebender code, just FYI the temp is set in C and not in F, and I cut out the change log and credits, also deleted some blank lines to save some time in scrolling


----------



## MadMac

fietsenrex said:


> sorry got the RTC mixed up with another build, you have the correct one
> as for the prototype shield, I got the blue one with holes.
> as long as you follow the schematic provided by another hobby you should be fine, I was a n00b myself when I build the controller, got it working and adopted it to my own preference
> 
> https://codebender.cc/sketch:78688
> 
> my codebender code, just FYI the temp is set in C and not in F, and I cut out the change log and credits, also deleted some blank lines to save some time in scrolling


many thx @fietsenrex
respect
i was looking for the temp in C... 
can you tell me the parts you use here in europa?
i'm not sure what i need for the iAqua version here in europa... because of the 240v and different parts you find here...
My PCB is ready... 

many thx and respect to all people contribute to this project...
just amazing awesome!

all the best
M.


----------



## BDoss1985

Idk about yours but my rtc was the same number but doesn't look like AHs mine has terminals on both sides. @fietsenrex you don't happen to know how to use the pwm on diy leds?


Sent from my SM-N910V using Tapatalk


----------



## Kingtriton92

Thanks for providing the code and all the build info. I was looking at the Robo DIY and a few Rasberry Pi and Pine64 builds on Instructables but for the cost (I already have most of whats needed for this build) your design wins. You should package all the bits, pre-load the SD and sell these as a kit. I bet a lot more guys would build and use this if all they had to do was open a box and follow instructions.


----------



## fietsenrex

BDoss1985 said:


> Idk about yours but my rtc was the same number but doesn't look like AHs mine has terminals on both sides. @fietsenrex you don't happen to know how to use the pwm on diy leds?
> 
> 
> Sent from my SM-N910V using Tapatalk


Yes I do, as you can see in my tank journal I even build my own fixture.
Didn't go as smooth as planned but I might be able to help you out a bit



Kingtriton92 said:


> Thanks for providing the code and all the build info. I was looking at the Robo DIY and a few Rasberry Pi and Pine64 builds on Instructables but for the cost (I already have most of whats needed for this build) your design wins. You should package all the bits, pre-load the SD and sell these as a kit. I bet a lot more guys would build and use this if all they had to do was open a box and follow instructions.


Robo-tank already Did that.


----------



## Daszkalosz

Hello everyone!
Congratulations to the aquarium controller!  nice work 
Terrarium does not control someone this way?
- UVB meter
- Timer
- Opening sensor
- Heating control
- humidification

Thanks


----------



## BDoss1985

Timers are already used just use the aux slots, pretty much all of the others can be added just search the internet for the code, the one I'm building will have a humidity control to turn on the mist system.

Sent from my SM-N910V using Tapatalk


----------



## MadMac

hello @ all,
many many thx for all the infos here!
@ AnotherHobby
respect very very well done and many thx for sharing this work!
I see the interface now @ rob-tank too...
Does someone know where to make the pcb board here in europa?
I'm going with MrAqua and want to make the shield...
still did not find a good pcb maker here in germany ... all to expensive... more than 100€ for a prototype lol

maybe someone has one has a board to sell?
I will buy it 

@ MrMan
many many thx for all the work and the pcb !
Respect
this makes it much easier to wire...
Any chance to get the Fritzing diagram?
if you do a new shield plz add the rest of the channels that are not in use yet...
so that we can add a humidity sensor and other things if we need to.

all the best!
M.


----------



## dkatsariotis

Hi all, after a long time using iaqua I decide to combine it with an Ethernet shield in order to have remote access and monitor. I made a simple web server to monitor parameters such as temperature, pH and control lights, co2 and cooling fans. Currently I am developing an Android application in order to control iaqua from Internet.

Sent from my Lenovo A7010a48 using Tapatalk


----------



## MrMan

MadMac said:


> hello @ all,
> many many thx for all the infos here!
> @ AnotherHobby
> respect very very well done and many thx for sharing this work!
> I see the interface now @ rob-tank too...
> Does someone know where to make the pcb board here in europa?
> I'm going with MrAqua and want to make the shield...
> still did not find a good pcb maker here in germany ... all to expensive... more than 100€ for a prototype lol
> 
> maybe someone has one has a board to sell?
> I will buy it
> 
> @ MrMan
> many many thx for all the work and the pcb !
> Respect
> this makes it much easier to wire...
> Any chance to get the Fritzing diagram?
> if you do a new shield plz add the rest of the channels that are not in use yet...
> so that we can add a humidity sensor and other things if we need to.
> 
> all the best!
> M.


I don't actually have a fritzing diagram, just the schematic for the PCB shield showing the connectors. You could already add a humidity sensor on T1/2/3 if you modified the code, at least one of the digital pin humidity sensors. Not sure what other 'channels' you're looking for, all 16 PWM channels?

As for ordering the PCBs, I use iTead studios but i've also heard pcbway is good. Both are chinese based and very affordable for this sort of project.

Ryan


----------



## justarduino

Hi All 

First of all thanks for sharing such wonderful stuffs, I am following this forum for quite some time now. I started the project with a goal of just making a led lights for my fish only aquarium, but it quickly took a snow ball effect and today i am almost done with the fully blown aquarium controller. My thanks to Stillo(from where it started for me), AH and MrMan(both on this forum) for making and sharing such a wounder full work. 
After AH i have followed MrMan, and have tried to make it as DIY as possible for me. I am going with 3 dossing pumps, 5 relay(power outlet) and 3 fans(2 on heat-sink and 1 for the project box). LED panel includes 15 3w cree with mix colors connected to meanwell 5xLD700 module. i know for 30x15x21 inch tank this is little overkill but i enjoyed making it. the project box is powered with 12v5A PS, and a 5v800ma(replaced old 9v after issue) for Arduino.

At present in assembling mode, facing few issue and need help on it.

1) Everything seamed fine till i stared finale testing with all components attached like relay board and pumps. the issue i have is that graphics loads incomplete and i have to reload the sketch from laptop and again as soon as i am on the external power supply its gone.
I have 3 powers supply for test 12v5A, 9V1A and 5V.8A. my plan was to use the 12v for peripherals and 9v for the Arduino connected to Vin. 
with 9v at Vin the graphics was loading well till now but when all the components where connected it started showing incomplete graphics.
I tried changing the SD cards with no success. I tried connecting the 12v PS at Vin it worked but the regulator was getting hot. I feel that the regulator has gone bad, as its giving 6.12v at 5v out pin(which should give 5v) if i connect 9v at Vin it gives 4.75~4.88 fluctuating. and gives 4.88v constant when 5v connected at usb port. 
finally i have used 5V PS connected to USB port tested for a couple of days its working fine. I hope i wont need the usb port for programming once its done.

But still thinking what could be the issue.

2) Auto-Dimming function is not working, the screen comes back to home after 2 min fine, but screen continues to remain bright. have checked the circuit and connections many times now.i am using eleckfrek tft shield with 3.2 inch TFT. the shield is modified as per AH's instruction. Want to run the screen at minimum when idle 

3) how should i power the 12v Fans? should i do it similar like we did for the dossing pumps with mosfet? 

4) when i start the arduino, all the relay's are ON and the dosing pump starts and stops.

5) want to have a battery backup for arduino, at our place we have frequent power cuts.
dont want the arduino to suffer.

Will come up with some pictures of my build once it take shape.


----------



## ceres_ces

i found a very sweetable arduino version called "Fishino". It include a rtc, a sd card and a wifi in a MEGA 100 compatible.
I found it really helpful to solve me the problem of sandwitch of shields and with some adjustment of the tft shield i got out all the usable pins so now i have a fishino with a tft shield on top and nothing else.


----------



## ceres_ces

Near End Project


----------



## lovingHDTV

the fishino looks very promising.


----------



## MrMan

justarduino said:


> At present in assembling mode, facing few issue and need help on it.
> 
> 1) Everything seamed fine till i stared finale testing with all components attached like relay board and pumps. the issue i have is that graphics loads incomplete and i have to reload the sketch from laptop and again as soon as i am on the external power supply its gone.
> I have 3 powers supply for test 12v5A, 9V1A and 5V.8A. my plan was to use the 12v for peripherals and 9v for the Arduino connected to Vin.
> with 9v at Vin the graphics was loading well till now but when all the components where connected it started showing incomplete graphics.
> I tried changing the SD cards with no success. I tried connecting the 12v PS at Vin it worked but the regulator was getting hot. I feel that the regulator has gone bad, as its giving 6.12v at 5v out pin(which should give 5v) if i connect 9v at Vin it gives 4.75~4.88 fluctuating. and gives 4.88v constant when 5v connected at usb port.
> finally i have used 5V PS connected to USB port tested for a couple of days its working fine. I hope i wont need the usb port for programming once its done.
> 
> But still thinking what could be the issue.
> 
> 2) Auto-Dimming function is not working, the screen comes back to home after 2 min fine, but screen continues to remain bright. have checked the circuit and connections many times now.i am using eleckfrek tft shield with 3.2 inch TFT. the shield is modified as per AH's instruction. Want to run the screen at minimum when idle
> 
> 3) how should i power the 12v Fans? should i do it similar like we did for the dossing pumps with mosfet?
> 
> 4) when i start the arduino, all the relay's are ON and the dosing pump starts and stops.
> 
> 5) want to have a battery backup for arduino, at our place we have frequent power cuts.
> dont want the arduino to suffer.
> 
> Will come up with some pictures of my build once it take shape.


1) It sounds like the regulator is toast, I'm not sure it's designed to handle 12V especially with any sort of load. I think someone else also had issues with images loading and found out it was due to a power supply issue. Powering with USB and a separate 12V supply for pumps/fans is fine, just make sure to tie the grounds together. Alternatively get a higher power LDO/DCDC converter to step the 12V down to 5V and use that directly on the 5V pin.

2) I never got the auto-dimming to work well enough for me to use, so I just run 100% all the time. If you want it to dim in idle i'd suggest modifying the code to dim to 25% (or whatever) after no touch for X seconds. I actually like the sound of that and may try it out myself...

3) Yup, positive fan wire to +12V, negative fan wire to mosfet drain with source tied to 12V ground.

4) This has to do with the initial pin states, I'll take a look on my setup to see if it also does this. What software are you using?



ceres_ces said:


> i found a very sweetable arduino version called "Fishino". It include a rtc, a sd card and a wifi in a MEGA 100 compatible.
> I found it really helpful to solve me the problem of sandwitch of shields and with some adjustment of the tft shield i got out all the usable pins so now i have a fishino with a tft shield on top and nothing else.


That looks like a nice arduino for a lot of projects actually, not just fish related. That being said all it adds for this build is an RTC so it seems a bit expensive for that. But you've got the option of adding wifi to the controller if you ever wanted now.


Edit: Added v2.3.6 to my main post if anyone wants to try it out.


----------



## justarduino

Thanks MrMan, 
I am using MrAqua_v2_3_4.ino


----------



## Matchless

cooldex said:


> Hi
> How can I get your modified code?


Sorry for my late reaction (I'm very busy atm)

I tried to upload the files but I experienced some problems with uploading the zip file . 
But now with an other laptop the upload worked.
Maybe you have to change the arduino pins in the code because I have an homebuild Iaqua interface with different pin layout.


My aquarium is now running from my posting earlier till now stable and without any problems 

greetings from holland.
Matchless


----------



## ceres_ces

dkatsariotis said:


> Hi all, after a long time using iaqua I decide to combine it with an Ethernet shield in order to have remote access and monitor. I made a simple web server to monitor parameters such as temperature, pH and control lights, co2 and cooling fans. Currently I am developing an Android application in order to control iaqua from Internet.
> 
> Sent from my Lenovo A7010a48 using Tapatalk


i'm very interesting about it. because i'm working to do... so i'm vey plasure if you decide to condivide your work.


----------



## dkatsariotis

ceres_ces said:


> i'm very interesting about it. because i'm working to do... so i'm vey plasure if you decide to condivide your work.


Hello, 

I will post everything here as soon as I finish it. Currently I am sending data from modded iAqua such as Temperature, pH, Lights+co2+fans status into a MySQL database. I wrote a PHP and HTML code to get values and remote control the Arduino. As soon as I finish testing I will start making the Android app.

Temperature and pH values are being sent every 1 minutes. When I give a command for lights,co2,fans on or off values are stored into MySQL and Arduino reads them every 5 second and performs the required actions.

Sent from my Lenovo A7010a48 using Tapatalk


----------



## ceres_ces

my job (and my sons) dont allow me to spent a lot of time for the project. i promised me to condivide a perfect sketch in order to simplify the reading. but next days at my job look like hell. so i decide to condivide my modifided version of iAqua (MrMan 4.2.3) as it is. you found these modifications: - i placed an elefreaks tft shield on the top of arduino and then the TFT on it. - i've mapped the tft pins and the library to work on this settings. - i've create a new *.h page for the PH control with the calibrate function like found in the df robot. then i create the managing pages. - i create create a water change function in order to change some water in the tank when planned in the shedule. so pay attention to all the mapped pin for the level switch and the addess of eeprom to store the data. - i've modified the homepage to show ph -i've modified the check temp function in order to manage a cooling fan to cool the tank water. all seems working fine at this point. for the internet manage and the app i'm wait for better days.


----------



## ceres_ces

https://www.dropbox.com/s/kzub2ljrd98masc/MrAqua_MYL.zip?dl=0


----------



## alphabeta

guys, anyone implemented the Ph reading? What's the probe? I figure out maybe to give now a try to this feature too.


----------



## ceres_ces

Is call "probe" in a Ph meter the part of the sensor that you can put in the solution.
In my sketch i've implement the ph reading and the calibration. So if you want you can download it from my dropbox link. When you calibrate the sensor you can extimate the accuracy, so the probe-life, comparing the difference of mVolt reading from the sensor in a few reading.


----------



## alphabeta

ceres_ces said:


> Is call "probe" in a Ph meter the part of the sensor that you can put in the solution.
> In my sketch i've implement the ph reading and the calibration. So if you want you can download it from my dropbox link. When you calibrate the sensor you can extimate the accuracy, so the probe-life, comparing the difference of mVolt reading from the sensor in a few reading.


thanks. i call the probe the same thing  so, which hardware do you use for PH reading? Thanks for coding, that part is easier  for me. if that is already discussed, could you please point to it?


----------



## ceres_ces

I use a DFROBOT ph shield with a H 101 PH electrode.


----------



## fietsenrex

I'm guessign it works with the shield build by MrMan?


----------



## ceres_ces

you could connect the DFRobot shield by wire in a pin for input. but i remember you that my sketch is modified to work without the MrMan shield. i tryed to get one but become too expensive. (build in china and send in italy more than 290$)...


----------



## fietsenrex

ceres_ces said:


> you could connect the DFRobot shield by wire in a pin for input. but i remember you that my sketch is modified to work without the MrMan shield. i tryed to get one but become too expensive. (build in china and send in italy more than 290$)...


Cost me about ?100 in tota
Everything shipped from the states, and now I have to assemble it..

But thanks for the reply, I'll try to figure it out as soon as I have some spare time.


----------



## rodoselada

ceres_ces said:


> you could connect the DFRobot shield by wire in a pin for input. but i remember you that my sketch is modified to work without the MrMan shield. i tryed to get one but become too expensive. (build in china and send in italy more than 290$)...


Hi guys, Hi ceres_ces, if you want i can send you pcb
Dorin


----------



## alphabeta

is this the kit? https://www.dfrobot.com/index.php?route=product/product&product_id=1110 
thanks for pointing out. looks cool, and decent price. How long is the lifetime of the probe?


----------



## ceres_ces

alphabeta said:


> is this the kit? https://www.dfrobot.com/index.php?route=product/product&product_id=1110
> thanks for pointing out. looks cool, and decent price. How long is the lifetime of the probe?


Hi alphabeta! Yes it is. Is the same kit that I have.


----------



## fietsenrex

You could ask dfrobot.
But if I recall correctlye is was something like a year, and then you need to recalibrate.
Time until is is completely dead depends on the probe itself, some run for 5 years and some for 10 months


----------



## alphabeta

thanks ceres_ces and fietsenrex.


----------



## tylergvolk

*Aqua Controller For Sale*

I have the OP's aqua controller for sale if anyone is interested please message me. Thanks.

http://www.plantedtank.net/forums/1...controller-sale-anotherhobby.html#post9592241


----------



## NguyenVu

*after add Const before Uint8_t Sinclair, new errors*



alphabeta said:


> make them const, both arial and Sinclair.
> In arial_bold.c and Sinclair_S.c, like
> 
> //////////////////////////////////////////
> #include <avr/pgmspace.h>
> 
> const uint8_t Sinclair_S[764] PROGMEM={
> 
> ////////////////////////////////////////////


after add Const before Uint...

i have new errors
plz see errors .zip
thanks


----------



## fietsenrex

your board is set to UNO instead of MEGA.
also I think you should use 1.0.6 instead of 1.6.12

other than that I think your missing the alarms library, did you load them all properly?


----------



## Brian Rodgers

Sweet! "Feeling ambitious?" Not particularly, but it certainly is great to see how ambitious you are. Thank you so much for sharing and I will stay tuned closely, as we have a 2600 gallon 10,000 liter Brook trout tank aquaponics system and I'm always interested to see how automation at this level works.


----------



## NguyenVu

fietsenrex said:


> your board is set to UNO instead of MEGA.
> also I think you should use 1.0.6 instead of 1.6.12
> 
> other than that I think your missing the alarms library, did you load them all properly?


Thanks for your help, i added libraries to "C:\Program Files (x86)\Arduino\libraries"
and i used 1.0.6 but new errors:


Code:


iAqua:157: error: 'IRsend' does not name a type
iAqua.ino: In function 'void loop()':
iAqua:758: error: 'irsend' was not declared in this scope
iAqua:759: error: 'irsend' was not declared in this scope
iAqua:760: error: 'irsend' was not declared in this scope
iAqua:761: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void processMyTouch()':
iAqua:3088: error: 'irsend' was not declared in this scope
iAqua:3106: error: 'irsend' was not declared in this scope
iAqua:3123: error: 'irsend' was not declared in this scope
iAqua:3140: error: 'irsend' was not declared in this scope
iAqua:3244: error: 'irsend' was not declared in this scope
iAqua:3245: error: 'irsend' was not declared in this scope
iAqua:3253: error: 'irsend' was not declared in this scope
iAqua:3254: error: 'irsend' was not declared in this scope
iAqua:3262: error: 'irsend' was not declared in this scope
iAqua:3263: error: 'irsend' was not declared in this scope
iAqua:3271: error: 'irsend' was not declared in this scope
iAqua:3272: error: 'irsend' was not declared in this scope
iAqua:3282: error: 'irsend' was not declared in this scope
iAqua:3301: error: 'irsend' was not declared in this scope
iAqua:3302: error: 'irsend' was not declared in this scope
iAqua:3303: error: 'irsend' was not declared in this scope
iAqua:3304: error: 'irsend' was not declared in this scope
iAqua:3325: error: 'irsend' was not declared in this scope
iAqua:3330: error: 'irsend' was not declared in this scope
iAqua:3335: error: 'irsend' was not declared in this scope
iAqua:3340: error: 'irsend' was not declared in this scope
iAqua:3375: error: 'irsend' was not declared in this scope
iAqua:3397: error: 'irsend' was not declared in this scope
iAqua:3419: error: 'irsend' was not declared in this scope
iAqua:3441: error: 'irsend' was not declared in this scope
iAqua:3463: error: 'irsend' was not declared in this scope
iAqua:3485: error: 'irsend' was not declared in this scope
iAqua:3507: error: 'irsend' was not declared in this scope
iAqua:3529: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void resyncLights()':
iAqua:5858: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void smartStartup()':
iAqua:6469: error: 'irsend' was not declared in this scope
iAqua:6474: error: 'irsend' was not declared in this scope
iAqua:6479: error: 'irsend' was not declared in this scope
iAqua:6484: error: 'irsend' was not declared in this scope
iAqua:6489: error: 'irsend' was not declared in this scope
iAqua:6494: error: 'irsend' was not declared in this scope
iAqua:6501: error: 'irsend' was not declared in this scope
iAqua:6506: error: 'irsend' was not declared in this scope
iAqua:6511: error: 'irsend' was not declared in this scope
iAqua:6516: error: 'irsend' was not declared in this scope
iAqua:6521: error: 'irsend' was not declared in this scope
iAqua:6528: error: 'irsend' was not declared in this scope
iAqua:6533: error: 'irsend' was not declared in this scope
iAqua:6538: error: 'irsend' was not declared in this scope
iAqua:6543: error: 'irsend' was not declared in this scope
iAqua:6550: error: 'irsend' was not declared in this scope
iAqua:6555: error: 'irsend' was not declared in this scope
iAqua:6560: error: 'irsend' was not declared in this scope
iAqua:6567: error: 'irsend' was not declared in this scope
iAqua:6572: error: 'irsend' was not declared in this scope
iAqua:6577: error: 'irsend' was not declared in this scope
iAqua:6584: error: 'irsend' was not declared in this scope
iAqua:6589: error: 'irsend' was not declared in this scope
iAqua:6594: error: 'irsend' was not declared in this scope
iAqua:6599: error: 'irsend' was not declared in this scope
iAqua:6604: error: 'irsend' was not declared in this scope
iAqua:6609: error: 'irsend' was not declared in this scope
iAqua:6614: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void checkLightFade(int, int)':
iAqua:7205: error: 'irsend' was not declared in this scope
iAqua:7225: error: 'irsend' was not declared in this scope
iAqua:7256: error: 'irsend' was not declared in this scope
iAqua:7276: error: 'irsend' was not declared in this scope
iAqua:7307: error: 'irsend' was not declared in this scope
iAqua:7327: error: 'irsend' was not declared in this scope
iAqua:7358: error: 'irsend' was not declared in this scope
iAqua:7378: error: 'irsend' was not declared in this scope

i find some page 55,65, http://www.plantedtank.net/forums/7465681-post1120.html

and i review libraries: IRremote still there

i don't know how to fix


----------



## NguyenVu

kman said:


> and here is O2Surplus' shield:


Can you tell me where i can buy this board iAqua and this project.
thanks


----------



## NguyenVu

fietsenrex said:


> your board is set to UNO instead of MEGA.
> also I think you should use 1.0.6 instead of 1.6.12
> 
> other than that I think your missing the alarms library, did you load them all properly?


thanks for your help, i used 1.0.6 and have some next errors


Code:


iAqua:157: error: 'IRsend' does not name a type
iAqua.ino: In function 'void loop()':
iAqua:758: error: 'irsend' was not declared in this scope
iAqua:759: error: 'irsend' was not declared in this scope
iAqua:760: error: 'irsend' was not declared in this scope
iAqua:761: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void processMyTouch()':
iAqua:3088: error: 'irsend' was not declared in this scope
iAqua:3106: error: 'irsend' was not declared in this scope
iAqua:3123: error: 'irsend' was not declared in this scope
iAqua:3140: error: 'irsend' was not declared in this scope
iAqua:3244: error: 'irsend' was not declared in this scope
iAqua:3245: error: 'irsend' was not declared in this scope
iAqua:3253: error: 'irsend' was not declared in this scope
iAqua:3254: error: 'irsend' was not declared in this scope
iAqua:3262: error: 'irsend' was not declared in this scope
iAqua:3263: error: 'irsend' was not declared in this scope
iAqua:3271: error: 'irsend' was not declared in this scope
iAqua:3272: error: 'irsend' was not declared in this scope
iAqua:3282: error: 'irsend' was not declared in this scope
iAqua:3301: error: 'irsend' was not declared in this scope
iAqua:3302: error: 'irsend' was not declared in this scope
iAqua:3303: error: 'irsend' was not declared in this scope
iAqua:3304: error: 'irsend' was not declared in this scope
iAqua:3325: error: 'irsend' was not declared in this scope
iAqua:3330: error: 'irsend' was not declared in this scope
iAqua:3335: error: 'irsend' was not declared in this scope
iAqua:3340: error: 'irsend' was not declared in this scope
iAqua:3375: error: 'irsend' was not declared in this scope
iAqua:3397: error: 'irsend' was not declared in this scope
iAqua:3419: error: 'irsend' was not declared in this scope
iAqua:3441: error: 'irsend' was not declared in this scope
iAqua:3463: error: 'irsend' was not declared in this scope
iAqua:3485: error: 'irsend' was not declared in this scope
iAqua:3507: error: 'irsend' was not declared in this scope
iAqua:3529: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void resyncLights()':
iAqua:5858: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void smartStartup()':
iAqua:6469: error: 'irsend' was not declared in this scope
iAqua:6474: error: 'irsend' was not declared in this scope
iAqua:6479: error: 'irsend' was not declared in this scope
iAqua:6484: error: 'irsend' was not declared in this scope
iAqua:6489: error: 'irsend' was not declared in this scope
iAqua:6494: error: 'irsend' was not declared in this scope
iAqua:6501: error: 'irsend' was not declared in this scope
iAqua:6506: error: 'irsend' was not declared in this scope
iAqua:6511: error: 'irsend' was not declared in this scope
iAqua:6516: error: 'irsend' was not declared in this scope
iAqua:6521: error: 'irsend' was not declared in this scope
iAqua:6528: error: 'irsend' was not declared in this scope
iAqua:6533: error: 'irsend' was not declared in this scope
iAqua:6538: error: 'irsend' was not declared in this scope
iAqua:6543: error: 'irsend' was not declared in this scope
iAqua:6550: error: 'irsend' was not declared in this scope
iAqua:6555: error: 'irsend' was not declared in this scope
iAqua:6560: error: 'irsend' was not declared in this scope
iAqua:6567: error: 'irsend' was not declared in this scope
iAqua:6572: error: 'irsend' was not declared in this scope
iAqua:6577: error: 'irsend' was not declared in this scope
iAqua:6584: error: 'irsend' was not declared in this scope
iAqua:6589: error: 'irsend' was not declared in this scope
iAqua:6594: error: 'irsend' was not declared in this scope
iAqua:6599: error: 'irsend' was not declared in this scope
iAqua:6604: error: 'irsend' was not declared in this scope
iAqua:6609: error: 'irsend' was not declared in this scope
iAqua:6614: error: 'irsend' was not declared in this scope
iAqua.ino: In function 'void checkLightFade(int, int)':
iAqua:7205: error: 'irsend' was not declared in this scope
iAqua:7225: error: 'irsend' was not declared in this scope
iAqua:7256: error: 'irsend' was not declared in this scope
iAqua:7276: error: 'irsend' was not declared in this scope
iAqua:7307: error: 'irsend' was not declared in this scope
iAqua:7327: error: 'irsend' was not declared in this scope
iAqua:7358: error: 'irsend' was not declared in this scope
iAqua:7378: error: 'irsend' was not declared in this scope

i saw some post page 55,65 and i review libraries IRremote still there
uhm, if i have used 1.0.5 r2 there are more errors )))

can u send me libraries and all file you used?
headache 
Thanks


----------



## fietsenrex

everything should be complete on the first page

I don't have any of the files anymore I switched to codebender:
https://codebender.cc/sketch:78688

please keep in mind this is NOT the original software, it works with the way anotherhobby has build this project but I've made some changes.
there are some shortcuts from the home screen directly to some settings pages
temperature is in C not in F (easy to switch)
and lights are set to PWM not to IR (also easy to switch)


----------



## NguyenVu

fietsenrex said:


> everything should be complete on the first page
> 
> I don't have any of the files anymore I switched to codebender:
> https://codebender.cc/sketch:78688
> 
> please keep in mind this is NOT the original software, it works with the way anotherhobby has build this project but I've made some changes.
> there are some shortcuts from the home screen directly to some settings pages
> temperature is in C not in F (easy to switch)
> and lights are set to PWM not to IR (also easy to switch)


Thanks for your help.


----------



## erze

IRFZ44 nFET in the schematics you draw pFET ,thus 1n4001 not neded they are included in IRFZ44


----------



## erze

I f any body can help me.I am testing the Mr.Man version (2.2.3 2.3.6) it seems to be working except the autodim and return to homescreen function.The voltage on ambient light sensor input is changing if the light is modifying,but the pwm output doesn't changes.The screen luminosity doesn't changes at all (just if i use manual changing in screen settings menu and reset).Checked pin allocation (8,pwm8) on hardware,software they are ok.The phenomenon is the same in 2.2.3 and 2.3.6 too.( of course i have tried different settings in the screen settings menu but no results.) any idea?


----------



## MrMan

erze said:


> I f any body can help me.I am testing the Mr.Man version (2.2.3 2.3.6) it seems to be working except the autodim and return to homescreen function.The voltage on ambient light sensor input is changing if the light is modifying,but the pwm output doesn't changes.The screen luminosity doesn't changes at all (just if i use manual changing in screen settings menu and reset).Checked pin allocation (8,pwm8) on hardware,software they are ok.The phenomenon is the same in 2.2.3 and 2.3.6 too.( of course i have tried different settings in the screen settings menu but no results.) any idea?


Both features work on my build with the same software. You didn't mention the settings on your controller for return home, autodim level or autodim seconds, what are they set to?

While i did get the auto-dim feature to work i never really liked how it functioned so my plan was to change the program to dim to a set value after a set time had elapsed without a button press (similar to the return home function). I've done the code but havn't tested it yet, it's here if anyone wanted to try it out:

MrAqua_v2_4_0.zip


----------



## erze

Thank you for the quick reply and help.
I have tested the new version 2.4.0 and i have the same problem so it probably wont be some software error.
I have tried all possible setting on screen settings menu ( return to home 1-5 min; auto-dim level 1-10 and off ;auto-dim seconds 1- 10 sec,the only setting which worked was the brightness setting,of course i have resetted after each modifying)
The brightness setting cannot be reduced to 1 only to 2 (despite 1-10 is mentioned) if this indicates you something.
I have no pressure sensor conected(still haven't) and float switches.I am planning to simulate them by resistors ...maybe.
but modified to false in ato in the sketch-- no effect.
After uploading new sketch the old settings stiil remain.In this forum a have read somewhere that need a line in the sketch to erase the EEPROM ,could it be the problem? some old data in memory?
I am using direct pwm drive for RGB,it is working but have to verify the last schedule line switch off time and only on red there is some flickering (from software rytmically like the serial communication led flashing) have to verify by an oscilloscope in the future.
Thanks


----------



## justarduino

*Dosing pump issue.*

Hi
I have an issue now when i started assembling all the circuits and connecting wires. The dosing pumps remains ON continuously.
I checked the pins D10,11 & 12 it provides high voltage of 5V when it is scheduled otherwise it remains 0v. 
Looks like i have done some mistake with connections but failed to find out as everything looks OK. any troubleshooting tips?

I am using 12v5a supply to power Relays and the Dosing pumps and a step down converter to power 5v to Arduino mega Vin pin.

a side note - while assembling i smoked my 3.2TFT(ssd1289) now awaiting for a new one but its ili9341, hope that should not be a problem now.


----------



## Adrian Marcus Pearce

Hi, A fantastic controller, I've been watching and building one too. MrMan do you have and of the shields for sale and if so how much ?


----------



## varun

iam getting many errors while compiling pls help

Bump: In file included from C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:208:0:

C:\Users\YOGA3\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared

static bool read(tmElements_t &tm);

^

C:\Users\YOGA3\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared

static bool write(tmElements_t &tm);

^

In file included from C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:210:0:

C:\Users\YOGA3\Documents\Arduino\libraries\TimeAlarms/TimeAlarms.h:71:31: error: 'timeDayOfWeek_t' does not name a type

AlarmID_t alarmRepeat(const timeDayOfWeek_t DOW, const int H, const int M, const int S, OnTick_t onTickHandler); // as above, with day of week 

^

C:\Users\YOGA3\Documents\Arduino\libraries\TimeAlarms/TimeAlarms.h:75:29: error: 'timeDayOfWeek_t' does not name a type

AlarmID_t alarmOnce(const timeDayOfWeek_t DOW, const int H, const int M, const int S, OnTick_t onTickHandler); // as above, with day of week 

 ^

MrAqua_v2_3_6:360: error: 'tmElements_t' does not name a type

tmElements_t prevRTC, saveRTC;

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5hsunS.raw","5msunS.raw","5lsunS.raw","5moonS.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:545:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5hmsunF.raw","5lsunF.raw","5moonF.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:545:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:545:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5hsun.raw","5msun.raw","5lsun.raw","5moon.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5editF.raw", "5editN.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:554:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5saveF.raw", "5saveN.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:554:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:556:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5resynF.raw", "5resynN.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:556:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:558:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5canF.raw", "5canN.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:558:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:562:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Wup.raw", "5Wdown.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:562:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:564:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Rup.raw", "5Rdown.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:564:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:566:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Gup.raw", "5Gdown.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:566:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:568:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Bup.raw", "5Bdown.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:568:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:570:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Fup.raw", "5Fdown.raw"}; // disabled button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:570:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:574:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3light_F.raw","3light_N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:574:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:576:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3filt_F.raw","3filt_N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:576:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:578:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3circ_F.raw","3circ_N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:578:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:580:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3heat_F.raw","3heat_N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:580:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:582:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3co2_F.raw","3co2_N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:582:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:584:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3aux1_F.raw","3aux1_N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:584:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:586:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3aux2_F.raw","3aux2_N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:586:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:590:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3dotR.raw","3dotG.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:590:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:594:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1lightF.raw","1lightN.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:594:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:596:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1filtF.raw","1filtN.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:596:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:598:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1circF.raw","1circN.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:598:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:600:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1heatF.raw","1heatN.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:600:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:602:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1co2F.raw","1co2N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:602:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:604:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1aux1F.raw","1aux1N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:604:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:606:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1aux2F.raw","1aux2N.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:606:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1hsun.raw","1msun.raw","1lsun.raw","1moon.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"21lastq.raw","21ocres.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:621:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"24whUp.raw", "24whDn.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:621:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:625:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"11dis.raw","11enab.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:625:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:628:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"11disB.raw","11enabB.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:628:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:630:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3off.raw","3on.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:630:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:633:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1wlow.raw","1whigh.raw"};

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:633:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void setup()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:671:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(26, 110, 188, 72, "iAqua.raw");

^

MrAqua_v2_3_6:674: error: 'setSyncProvider' was not declared in this scope

setSyncProvider(RTC.get);

^

MrAqua_v2_3_6:676: error: 'timeStatus' was not declared in this scope

if(timeStatus()!= timeSet)

^

MrAqua_v2_3_6:676: error: 'timeSet' was not declared in this scope

if(timeStatus()!= timeSet)

^

MrAqua_v2_3_6:679: error: 'saveRTC' was not declared in this scope

saveRTC.Year = 45;

^

MrAqua_v2_3_6:685: error: 'makeTime' was not declared in this scope

RTC.set(makeTime(saveRTC));

 ^

MrAqua_v2_3_6:686: error: 'setTime' was not declared in this scope

setTime(makeTime(saveRTC));

^

MrAqua_v2_3_6:689: error: 'now' was not declared in this scope

lastFeedingTime = now(); //not storing feeding time in eeprom due to high rate of writing

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void loop()':

MrAqua_v2_3_6:825: error: 'now' was not declared in this scope

time_t currentTime = now();

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLightRamp()':

MrAqua_v2_3_6:954: error: 'now' was not declared in this scope

time_t currentTime = now();

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkATO()':

MrAqua_v2_3_6:996: error: 'now' was not declared in this scope

ATOStartTime = now();

^

MrAqua_v2_3_6:1000: error: 'now' was not declared in this scope

if(((now() - ATOStartTime) >= ATOWaitTime)&&(ATOPumpState == false))

^

MrAqua_v2_3_6:1013: error: 'now' was not declared in this scope

if(((now() - ATOPumpStartTime) >= ATORunTime)&&(ATOPumpState == true))

^

MrAqua_v2_3_6:1053: error: 'now' was not declared in this scope

if(((now() - ATOPumpStartTime) >= ATORunTime)&&(ATOPumpState == true))

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawATO()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1077:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(150, 52, 60, 55, "1warn.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1081:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(150, 52, 55, 55, "1atoon.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1087:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("T", 122, 36); //print letters individually due to space constraints

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1088:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("A", 135, 36);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1089:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("N", 148, 36);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1090:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("K", 161, 36);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1091:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("ATO", 186, 36);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1096:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(122, 45, 115, 45, "logo.raw",2); //display a iAqua logo if ATO is disabled

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawTemp()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1233:51: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(30, 35, 60, 51, "1thermR.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1236:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(30, 35, 60, 51, "1therm.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1245:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1246:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1251:71: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true)myFiles.load(90, 94, 14, 12, "c_R.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1252:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(90, 94, 14, 12, "f_R.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1266:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(30, 35, 60, 51, "1temp2.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1271:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1272:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1280:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(30, 35, 60, 51, "1temp3.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1285:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1286:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1291:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(36, 36, 48, 48, "1quest.raw");

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkFeeding()':

MrAqua_v2_3_6:1299: error: 'now' was not declared in this scope

dimTime = now(); // keep the screen bright duing feeding

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawFeeding()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1333:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("HR", 12, 146);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1336:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(">99", 4, 130);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1337:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("HR", 12, 146);

^

MrAqua_v2_3_6:1346: error: 'now' was not declared in this scope

int feedingMinsLeft = (feedingTotalSeconds-(now()-startFeedingTime))/60;

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1367:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("<", (fx-16), 130);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1377:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("<", 24, 80);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkDosing()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1425:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses1 > 4)myFiles.load(112, 122, 23, 50, "1ferts.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1426:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses1 < 5)myFiles.load(112, 122, 23, 50, "1fertse.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1427:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses2 > 4)myFiles.load(138, 122, 23, 50, "1ferts.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1428:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses2 < 5)myFiles.load(138, 122, 23, 50, "1fertse.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1429:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses3 > 4)myFiles.load(112, 183, 23, 50, "1ferts.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1430:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses3 < 5)myFiles.load(112, 183, 23, 50, "1fertse.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLighting()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1492:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(75, 151, 12, 20, "1arrow.raw",4);

^

MrAqua_v2_3_6:1496: error: 'now' was not declared in this scope

unsigned long rightNow = now();

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1520:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("MIN", 69, 219);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1524:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(57, 140, 48, 48, "1quest.raw");

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void feedingStop()':

MrAqua_v2_3_6:1661: error: 'now' was not declared in this scope

lastFeedingTime = now();

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void SaveTime()':

MrAqua_v2_3_6:1686: error: 'saveRTC' was not declared in this scope

time_t saveTime = makeTime(saveRTC);

^

MrAqua_v2_3_6:1686: error: 'makeTime' was not declared in this scope

time_t saveTime = makeTime(saveRTC);

^

MrAqua_v2_3_6:1687: error: 'setTime' was not declared in this scope

setTime(saveTime);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void updateTimeDate(boolean)':

MrAqua_v2_3_6:1698: error: 'hour' was not declared in this scope

if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {

^

MrAqua_v2_3_6:1698: error: 'prevRTC' was not declared in this scope

if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {

^

MrAqua_v2_3_6:1698: error: 'minute' was not declared in this scope

if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {

^

MrAqua_v2_3_6:1701: error: 'hourFormat12' was not declared in this scope

if(displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);

^

MrAqua_v2_3_6:1701: error: 'isPM' was not declared in this scope

if(displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);

^

MrAqua_v2_3_6:1709: error: 'day' was not declared in this scope

if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {

^

MrAqua_v2_3_6:1709: error: 'prevRTC' was not declared in this scope

if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {

^

MrAqua_v2_3_6:1709: error: 'month' was not declared in this scope

if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void printValueUpdate()':

MrAqua_v2_3_6:1718: error: 'now' was not declared in this scope

time_t printTime = now();

^

MrAqua_v2_3_6:1720: error: 'hourFormat12' was not declared in this scope

if(hourFormat12(printTime) < 10)Serial.print(F("0"));

^

MrAqua_v2_3_6:1721: error: 'hourFormat12' was not declared in this scope

Serial.print(hourFormat12(printTime));

^

MrAqua_v2_3_6:1723: error: 'minute' was not declared in this scope

if(minute(printTime) < 10)Serial.print(F("0"));

^

MrAqua_v2_3_6:1724: error: 'minute' was not declared in this scope

Serial.print(minute(printTime));

^

MrAqua_v2_3_6:1726: error: 'second' was not declared in this scope

if(second(printTime) < 10)Serial.print(F("0"));

^

MrAqua_v2_3_6:1727: error: 'second' was not declared in this scope

Serial.print(second(printTime));

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void printDate(int, int)':

MrAqua_v2_3_6:1812: error: 'weekday' was not declared in this scope

strcat(chDate, dayShortStr(weekday()));

^

MrAqua_v2_3_6:1812: error: 'dayShortStr' was not declared in this scope

strcat(chDate, dayShortStr(weekday()));

^

MrAqua_v2_3_6:1814: error: 'month' was not declared in this scope

strcat(chDate, monthShortStr(month()));

^

MrAqua_v2_3_6:1814: error: 'monthShortStr' was not declared in this scope

strcat(chDate, monthShortStr(month()));

 ^

MrAqua_v2_3_6:1816: error: 'day' was not declared in this scope

itoa(day(), tmpChar, 10);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'time_t tmConvert_t(int, byte, byte, byte, byte, byte)':

MrAqua_v2_3_6:1826: error: 'tmElements_t' was not declared in this scope

tmElements_t tmSet;

^

MrAqua_v2_3_6:1827: error: 'tmSet' was not declared in this scope

tmSet.Year = YYYY - 1970;

^

MrAqua_v2_3_6:1833: error: 'makeTime' was not declared in this scope

return makeTime(tmSet); //convert to time_t

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'int calcFeeding()':

MrAqua_v2_3_6:1894: error: 'now' was not declared in this scope

time_t timeSinceLastFeed = now() - lastFeedingTime;

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLightFade(int, int)':

MrAqua_v2_3_6:1933: error: 'now' was not declared in this scope

unsigned long rightNow = now();

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1963:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("MIN", 69, 219);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'byte lunarCycleScaling()':

MrAqua_v2_3_6:2347: error: 'tmElements_t' was not declared in this scope

tmElements_t fixedDate = {0,35,20,0,7,1,0};

^

MrAqua_v2_3_6:2349: error: 'fixedDate' was not declared in this scope

time_t newMoonCycle = makeTime(fixedDate);

^

MrAqua_v2_3_6:2349: error: 'makeTime' was not declared in this scope

time_t newMoonCycle = makeTime(fixedDate);

^

MrAqua_v2_3_6:2350: error: 'now' was not declared in this scope

long phase = (now() - newMoonCycle) % lp;

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'byte getLunarCycleDay()':

MrAqua_v2_3_6:2358: error: 'tmElements_t' was not declared in this scope

tmElements_t fixedDate = {0,35,20,0,7,1,0};

^

MrAqua_v2_3_6:2360: error: 'fixedDate' was not declared in this scope

time_t newMoonCycle = makeTime(fixedDate);

^

MrAqua_v2_3_6:2360: error: 'makeTime' was not declared in this scope

time_t newMoonCycle = makeTime(fixedDate);

^

MrAqua_v2_3_6:2361: error: 'now' was not declared in this scope

long phase = (now() - newMoonCycle) % lp;

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenHome()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:18:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(0, 254, 240, 66, "dock.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:19:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "1home.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:40:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(5, 172, 46, 46, "1feed.raw",4);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenFeeding()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:79:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "2feed.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:83:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "foothome.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:91:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(67, 223, 48, 48, "2stop.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:92:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 223, 48, 48, "2restart.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:95:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(74, 110, 92, 92, "2feeding.raw",2);

^

Screens:124: error: 'now' was not declared in this scope

startFeedingTime = now(); // mark when feeding started

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenPower()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:144:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "foothome.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:147:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "3power.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:156:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(73, 77, 40, 40, "3allon.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:157:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(128, 77, 40, 40, "3alloff.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenSettings()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:187:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "4extras.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:197:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "foothome.raw",2);  // footer home button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:201:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 50, 48, 63, "4lights.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:205:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 50, 48, 63, "4lightsF.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:207:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(67, 50, 48, 63, "4clock.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:208:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 50, 48, 63, "4feeding.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:209:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(181, 50, 48, 63, "4sched.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:210:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 118, 48, 63, "4sensors.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:211:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(67, 118, 48, 63, "4dosing.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:212:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 118, 48, 63, "4screen.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:213:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(181, 118, 48, 63, "4ato.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:214:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 186, 48, 63, "4lunar.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:215:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if (lightCSP==true) myFiles.load(67, 186, 48, 63, "4colorF.raw",2);//gray out icon for IR lights

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:216:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if (lightCSP==false)myFiles.load(67, 186, 48, 63, "4color.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:217:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 186, 48, 63, "4graph.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLights()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:229:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "5lights.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:242:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightsIR()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:499:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "5lights.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:512:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenSensors()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:657:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "18sense.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:666:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "foothome.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:693:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(100, 259, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:694:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(180, 259, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:699:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(sensor1Enabled) myFiles.load(210, 58, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:700:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(sensor2Enabled) myFiles.load(210, 111, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:701:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(sensor3Enabled) myFiles.load(210, 164, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenHeatsink()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:714:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "18sense.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:723:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:743:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:753:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:754:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:757:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 106, 96, 48, "19fanon.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:767:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:768:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:785:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:786:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenInternalTemp()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:803:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "18sense.raw",2);

 ^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:812:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:832:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:838:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 106, 96, 48, "19fanon.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:848:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:849:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:856:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:857:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:874:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:875:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenClock()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:892:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "6clock.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:908:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("24H", 12, 72);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:911:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 91, 72);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:914:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("S", 172, 72);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:919:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 20, 194);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:922:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("D", 91, 194);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:925:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("Y", 172, 194);

^

Screens:932: error: 'saveRTC' was not declared in this scope

saveRTC.Hour = hour();

^

Screens:932: error: 'hour' was not declared in this scope

saveRTC.Hour = hour();

^

Screens:933: error: 'minute' was not declared in this scope

saveRTC.Minute = minute(); 

^

Screens:935: error: 'day' was not declared in this scope

saveRTC.Day = day();

^

Screens:936: error: 'month' was not declared in this scope

saveRTC.Month = month();

^

Screens:937: error: 'year' was not declared in this scope

saveRTC.Year = (year()-1970);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:962:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("00", 201, 108);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:993:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 286, 84, 26, "6cancel.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:994:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(144, 286, 84, 26, "6set.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenFeedSettings()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1007:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "2feed.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1034:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenHeater()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1069:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "8heat.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1078:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1098:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(17, 40, 48, 48, "8off.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1108:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1109:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1112:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(17, 106, 48, 48, "8on.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1122:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1123:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1140:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1141:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenSchedule()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1159:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1168:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1171:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 50, 48, 63, "9power.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1172:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(67, 50, 48, 63, "4dosing.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1173:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 50, 48, 63, "4lights.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenDosing(byte)':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1188:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "10dose.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1197:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 293, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1205:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 39, 46, 48,"15pump1.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1206:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(70, 39, 46, 48,"15pump2.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1207:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(128, 39, 46, 48,"15pump3.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1273:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 170, 48, 48, "10test.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1304:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 236, 48, 48, "10fill.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrSchedule()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1326:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1338:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1378:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 84); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1399:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 84); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1417:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("S2", 64, 109);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1428:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 102, 109); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1449:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 109); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1477:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 134); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1498:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 134); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1516:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("S2", 64, 158);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1527:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 102, 158); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1548:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 158);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1576:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 183); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1597:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 183); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1624:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 208); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1645:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 208); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1674:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 234); 

 ^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1695:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 234); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1724:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 258); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1745:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 258); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrScheduleItem(int)':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1769:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1778:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1792:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 91, 77);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1797:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 172, 77);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1802:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 91, 158);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1807:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 172, 158);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1846:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("LIGHT2 S2", 96, 50);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrAuxItem(int)':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1946:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1955:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1994:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 73);

 ^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1995:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 73);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1996:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 112, 148);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1997:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("S", 178, 148);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2002:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 73);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2003:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 73);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2004:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 148);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2005:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 148);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenATO()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2085:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "17ATO.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2094:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenResyncLights()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2163:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "5lights.raw");

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightRamps()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2190:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2202:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2221:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 104, 66, 19, "13ramp1.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2222:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 130, 66, 19, "13ramp2.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2223:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 156, 66, 19, "13ramp3.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2224:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 182, 66, 19, "13ramp4.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2225:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 208, 66, 19, "13ramp5.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2226:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 234, 66, 19, "13ramp6.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2239:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 109); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2260:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 109); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2283:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 135); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2304:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 135); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2327:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 160); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2348:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 160); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2371:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 186); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2392:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 186); 

 ^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2415:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 212); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2436:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 212); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2459:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 238); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2480:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 238); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2506:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 56, 288); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2527:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 176, 288); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightRampItem(byte)':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2554:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2569:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2574:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(15, 160, 29, 45, "14down.raw",2); // down arrow

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2584:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 83, 103);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2589:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 162, 103);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2594:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 83, 214);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2599:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 162, 214);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenDosingSched(byte)':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2722:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2735:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2738:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 61, 46, 48,"15pump1.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2739:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 110, 46, 48,"15pump2.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2740:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 159, 46, 48,"15pump3.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenScreen()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2850:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "16screen.raw");

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2942:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw");

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLunar()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2953:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "21moon.raw");

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2963:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw"); // footer button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenColor(byte)':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:3043:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "22color.raw");

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:3053:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw"); // footer settings button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenGraphLEDs()':

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:3134:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "23graph.raw");

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:3144:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw"); // footer settings button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino: In function 'void processMyTouch()':

Touch:50: error: 'now' was not declared in this scope

ATOPumpStartTime = now();

^

Touch:667: error: 'saveRTC' was not declared in this scope

saveRTC.Hour=(saveRTC.Hour+1);

^

Touch:679: error: 'saveRTC' was not declared in this scope

saveRTC.Hour=(saveRTC.Hour-1);

^

Touch:691: error: 'saveRTC' was not declared in this scope

saveRTC.Minute=(saveRTC.Minute+1);

^

Touch:704: error: 'saveRTC' was not declared in this scope

saveRTC.Minute=(saveRTC.Minute-1);

^

Touch:716: error: 'saveRTC' was not declared in this scope

saveRTC.Second=(saveRTC.Second+1);

^

Touch:729: error: 'saveRTC' was not declared in this scope

saveRTC.Second=(saveRTC.Second-1);

^

Touch:742: error: 'saveRTC' was not declared in this scope

saveRTC.Month=(saveRTC.Month+1);

^

Touch:755: error: 'saveRTC' was not declared in this scope

saveRTC.Month=(saveRTC.Month-1);

^

Touch:767: error: 'saveRTC' was not declared in this scope

saveRTC.Day=(saveRTC.Day+1);

^

Touch:780: error: 'saveRTC' was not declared in this scope

saveRTC.Day=(saveRTC.Day-1);

^

Touch:792: error: 'saveRTC' was not declared in this scope

saveRTC.Year=(saveRTC.Year+1);

^

Touch:805: error: 'saveRTC' was not declared in this scope

saveRTC.Year=(saveRTC.Year-1);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:960:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:961:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:978:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:979:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:1200:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 175, 48, 48, "10test2.raw"); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:1214:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 175, 48, 48, "10test.raw"); 

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:1297:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 242, 48, 48, "10fill.raw");

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3071:55: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(210, 58, 26, 26, "footextr.raw",2); //draw setting button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3089:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(210, 111, 26, 26, "footextr.raw",2);//draw setting button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3107:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(210, 164, 26, 26, "footextr.raw",2);//draw setting button

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3207:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3208:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3225:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3226:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3300:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3301:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3318:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3319:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:4147:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 73);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:4148:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 73);

^

C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:4149:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 112, 148);

^


----------



## MrMan

varun said:


> iam getting many errors while compiling pls help
> 
> Bump:
> 
> 
> 
> Code:
> 
> 
> In file included from C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:208:0:
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared
> 
> static bool read(tmElements_t &tm);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared
> 
> static bool write(tmElements_t &tm);
> 
> ^
> 
> In file included from C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:210:0:
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\TimeAlarms/TimeAlarms.h:71:31: error: 'timeDayOfWeek_t' does not name a type
> 
> AlarmID_t alarmRepeat(const timeDayOfWeek_t DOW, const int H,  const int M,  const int S, OnTick_t onTickHandler); // as above, with day of week
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\TimeAlarms/TimeAlarms.h:75:29: error: 'timeDayOfWeek_t' does not name a type
> 
> AlarmID_t alarmOnce(const timeDayOfWeek_t DOW, const int H,  const int M,  const int S, OnTick_t onTickHandler); // as above, with day of week
> 
> ^
> 
> MrAqua_v2_3_6:360: error: 'tmElements_t' does not name a type
> 
> tmElements_t prevRTC, saveRTC;
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5hsunS.raw","5msunS.raw","5lsunS.raw","5moonS.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:545:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5hmsunF.raw","5lsunF.raw","5moonF.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:545:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:545:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5hsun.raw","5msun.raw","5lsun.raw","5moon.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5editF.raw", "5editN.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:554:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5saveF.raw", "5saveN.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:554:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:556:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5resynF.raw", "5resynN.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:556:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:558:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5canF.raw", "5canN.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:558:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:562:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5Wup.raw", "5Wdown.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:562:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:564:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5Rup.raw", "5Rdown.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:564:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:566:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5Gup.raw", "5Gdown.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:566:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:568:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5Bup.raw", "5Bdown.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:568:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:570:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "5Fup.raw", "5Fdown.raw"}; // disabled button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:570:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:574:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "3light_F.raw","3light_N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:574:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:576:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "3filt_F.raw","3filt_N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:576:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:578:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "3circ_F.raw","3circ_N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:578:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:580:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "3heat_F.raw","3heat_N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:580:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:582:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "3co2_F.raw","3co2_N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:582:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:584:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "3aux1_F.raw","3aux1_N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:584:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:586:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "3aux2_F.raw","3aux2_N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:586:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:590:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "3dotR.raw","3dotG.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:590:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:594:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "1lightF.raw","1lightN.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:594:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:596:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "1filtF.raw","1filtN.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:596:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:598:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "1circF.raw","1circN.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:598:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:600:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "1heatF.raw","1heatN.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:600:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:602:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "1co2F.raw","1co2N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:602:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:604:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "1aux1F.raw","1aux1N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:604:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:606:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "1aux2F.raw","1aux2N.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:606:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "1hsun.raw","1msun.raw","1lsun.raw","1moon.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "21lastq.raw","21ocres.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:621:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "24whUp.raw", "24whDn.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:621:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:625:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "11dis.raw","11enab.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:625:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:628:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "11disB.raw","11enabB.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:628:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:630:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "3off.raw","3on.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:630:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:633:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> "1wlow.raw","1whigh.raw"};
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:633:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void setup()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:671:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(26, 110, 188, 72, "iAqua.raw");
> 
> ^
> 
> MrAqua_v2_3_6:674: error: 'setSyncProvider' was not declared in this scope
> 
> setSyncProvider(RTC.get);
> 
> ^
> 
> MrAqua_v2_3_6:676: error: 'timeStatus' was not declared in this scope
> 
> if(timeStatus()!= timeSet)
> 
> ^
> 
> MrAqua_v2_3_6:676: error: 'timeSet' was not declared in this scope
> 
> if(timeStatus()!= timeSet)
> 
> ^
> 
> MrAqua_v2_3_6:679: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Year = 45;
> 
> ^
> 
> MrAqua_v2_3_6:685: error: 'makeTime' was not declared in this scope
> 
> RTC.set(makeTime(saveRTC));
> 
> ^
> 
> MrAqua_v2_3_6:686: error: 'setTime' was not declared in this scope
> 
> setTime(makeTime(saveRTC));
> 
> ^
> 
> MrAqua_v2_3_6:689: error: 'now' was not declared in this scope
> 
> lastFeedingTime = now(); //not storing feeding time in eeprom due to high rate of writing
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void loop()':
> 
> MrAqua_v2_3_6:825: error: 'now' was not declared in this scope
> 
> time_t currentTime = now();
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLightRamp()':
> 
> MrAqua_v2_3_6:954: error: 'now' was not declared in this scope
> 
> time_t currentTime = now();
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkATO()':
> 
> MrAqua_v2_3_6:996: error: 'now' was not declared in this scope
> 
> ATOStartTime = now();
> 
> ^
> 
> MrAqua_v2_3_6:1000: error: 'now' was not declared in this scope
> 
> if(((now() - ATOStartTime) >= ATOWaitTime)&&(ATOPumpState == false))
> 
> ^
> 
> MrAqua_v2_3_6:1013: error: 'now' was not declared in this scope
> 
> if(((now() - ATOPumpStartTime) >= ATORunTime)&&(ATOPumpState == true))
> 
> ^
> 
> MrAqua_v2_3_6:1053: error: 'now' was not declared in this scope
> 
> if(((now() - ATOPumpStartTime) >= ATORunTime)&&(ATOPumpState == true))
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawATO()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1077:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(150, 52, 60, 55, "1warn.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1081:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(150, 52, 55, 55, "1atoon.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1087:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("T", 122, 36); //print letters individually due to space constraints
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1088:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("A", 135, 36);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1089:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("N", 148, 36);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1090:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("K", 161, 36);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1091:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("ATO", 186, 36);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1096:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(122, 45, 115, 45, "logo.raw",2); //display a iAqua logo if ATO is disabled
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawTemp()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1233:51: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(30, 35, 60, 51, "1thermR.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1236:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(30, 35, 60, 51, "1therm.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1245:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1246:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1251:71: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true)myFiles.load(90, 94, 14, 12, "c_R.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1252:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(90, 94, 14, 12, "f_R.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1266:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(30, 35, 60, 51, "1temp2.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1271:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1272:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1280:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(30, 35, 60, 51, "1temp3.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1285:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1286:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1291:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(36, 36, 48, 48, "1quest.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkFeeding()':
> 
> MrAqua_v2_3_6:1299: error: 'now' was not declared in this scope
> 
> dimTime = now(); // keep the screen bright duing feeding
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawFeeding()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1333:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("HR", 12, 146);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1336:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(">99", 4, 130);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1337:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("HR", 12, 146);
> 
> ^
> 
> MrAqua_v2_3_6:1346: error: 'now' was not declared in this scope
> 
> int feedingMinsLeft = (feedingTotalSeconds-(now()-startFeedingTime))/60;
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1367:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("<", (fx-16), 130);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1377:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("<", 24, 80);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkDosing()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1425:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(doses1 > 4)myFiles.load(112, 122, 23, 50, "1ferts.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1426:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(doses1 < 5)myFiles.load(112, 122, 23, 50, "1fertse.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1427:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(doses2 > 4)myFiles.load(138, 122, 23, 50, "1ferts.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1428:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(doses2 < 5)myFiles.load(138, 122, 23, 50, "1fertse.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1429:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(doses3 > 4)myFiles.load(112, 183, 23, 50, "1ferts.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1430:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(doses3 < 5)myFiles.load(112, 183, 23, 50, "1fertse.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLighting()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1492:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(75, 151, 12, 20, "1arrow.raw",4);
> 
> ^
> 
> MrAqua_v2_3_6:1496: error: 'now' was not declared in this scope
> 
> unsigned long rightNow = now();
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1520:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("MIN", 69, 219);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1524:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(57, 140, 48, 48, "1quest.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void feedingStop()':
> 
> MrAqua_v2_3_6:1661: error: 'now' was not declared in this scope
> 
> lastFeedingTime = now();
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void SaveTime()':
> 
> MrAqua_v2_3_6:1686: error: 'saveRTC' was not declared in this scope
> 
> time_t saveTime = makeTime(saveRTC);
> 
> ^
> 
> MrAqua_v2_3_6:1686: error: 'makeTime' was not declared in this scope
> 
> time_t saveTime = makeTime(saveRTC);
> 
> ^
> 
> MrAqua_v2_3_6:1687: error: 'setTime' was not declared in this scope
> 
> setTime(saveTime);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void updateTimeDate(boolean)':
> 
> MrAqua_v2_3_6:1698: error: 'hour' was not declared in this scope
> 
> if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {
> 
> ^
> 
> MrAqua_v2_3_6:1698: error: 'prevRTC' was not declared in this scope
> 
> if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {
> 
> ^
> 
> MrAqua_v2_3_6:1698: error: 'minute' was not declared in this scope
> 
> if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {
> 
> ^
> 
> MrAqua_v2_3_6:1701: error: 'hourFormat12' was not declared in this scope
> 
> if(displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);
> 
> ^
> 
> MrAqua_v2_3_6:1701: error: 'isPM' was not declared in this scope
> 
> if(displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);
> 
> ^
> 
> MrAqua_v2_3_6:1709: error: 'day' was not declared in this scope
> 
> if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {
> 
> ^
> 
> MrAqua_v2_3_6:1709: error: 'prevRTC' was not declared in this scope
> 
> if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {
> 
> ^
> 
> MrAqua_v2_3_6:1709: error: 'month' was not declared in this scope
> 
> if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void printValueUpdate()':
> 
> MrAqua_v2_3_6:1718: error: 'now' was not declared in this scope
> 
> time_t printTime = now();
> 
> ^
> 
> MrAqua_v2_3_6:1720: error: 'hourFormat12' was not declared in this scope
> 
> if(hourFormat12(printTime) < 10)Serial.print(F("0"));
> 
> ^
> 
> MrAqua_v2_3_6:1721: error: 'hourFormat12' was not declared in this scope
> 
> Serial.print(hourFormat12(printTime));
> 
> ^
> 
> MrAqua_v2_3_6:1723: error: 'minute' was not declared in this scope
> 
> if(minute(printTime) < 10)Serial.print(F("0"));
> 
> ^
> 
> MrAqua_v2_3_6:1724: error: 'minute' was not declared in this scope
> 
> Serial.print(minute(printTime));
> 
> ^
> 
> MrAqua_v2_3_6:1726: error: 'second' was not declared in this scope
> 
> if(second(printTime) < 10)Serial.print(F("0"));
> 
> ^
> 
> MrAqua_v2_3_6:1727: error: 'second' was not declared in this scope
> 
> Serial.print(second(printTime));
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void printDate(int, int)':
> 
> MrAqua_v2_3_6:1812: error: 'weekday' was not declared in this scope
> 
> strcat(chDate, dayShortStr(weekday()));
> 
> ^
> 
> MrAqua_v2_3_6:1812: error: 'dayShortStr' was not declared in this scope
> 
> strcat(chDate, dayShortStr(weekday()));
> 
> ^
> 
> MrAqua_v2_3_6:1814: error: 'month' was not declared in this scope
> 
> strcat(chDate, monthShortStr(month()));
> 
> ^
> 
> MrAqua_v2_3_6:1814: error: 'monthShortStr' was not declared in this scope
> 
> strcat(chDate, monthShortStr(month()));
> 
> ^
> 
> MrAqua_v2_3_6:1816: error: 'day' was not declared in this scope
> 
> itoa(day(), tmpChar, 10);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'time_t tmConvert_t(int, byte, byte, byte, byte, byte)':
> 
> MrAqua_v2_3_6:1826: error: 'tmElements_t' was not declared in this scope
> 
> tmElements_t tmSet;
> 
> ^
> 
> MrAqua_v2_3_6:1827: error: 'tmSet' was not declared in this scope
> 
> tmSet.Year = YYYY - 1970;
> 
> ^
> 
> MrAqua_v2_3_6:1833: error: 'makeTime' was not declared in this scope
> 
> return makeTime(tmSet);         //convert to time_t
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'int calcFeeding()':
> 
> MrAqua_v2_3_6:1894: error: 'now' was not declared in this scope
> 
> time_t timeSinceLastFeed = now() - lastFeedingTime;
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLightFade(int, int)':
> 
> MrAqua_v2_3_6:1933: error: 'now' was not declared in this scope
> 
> unsigned long rightNow = now();
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1963:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("MIN", 69, 219);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'byte lunarCycleScaling()':
> 
> MrAqua_v2_3_6:2347: error: 'tmElements_t' was not declared in this scope
> 
> tmElements_t fixedDate = {0,35,20,0,7,1,0};
> 
> ^
> 
> MrAqua_v2_3_6:2349: error: 'fixedDate' was not declared in this scope
> 
> time_t newMoonCycle = makeTime(fixedDate);
> 
> ^
> 
> MrAqua_v2_3_6:2349: error: 'makeTime' was not declared in this scope
> 
> time_t newMoonCycle = makeTime(fixedDate);
> 
> ^
> 
> MrAqua_v2_3_6:2350: error: 'now' was not declared in this scope
> 
> long phase = (now() - newMoonCycle) % lp;
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'byte getLunarCycleDay()':
> 
> MrAqua_v2_3_6:2358: error: 'tmElements_t' was not declared in this scope
> 
> tmElements_t fixedDate = {0,35,20,0,7,1,0};
> 
> ^
> 
> MrAqua_v2_3_6:2360: error: 'fixedDate' was not declared in this scope
> 
> time_t newMoonCycle = makeTime(fixedDate);
> 
> ^
> 
> MrAqua_v2_3_6:2360: error: 'makeTime' was not declared in this scope
> 
> time_t newMoonCycle = makeTime(fixedDate);
> 
> ^
> 
> MrAqua_v2_3_6:2361: error: 'now' was not declared in this scope
> 
> long phase = (now() - newMoonCycle) % lp;
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenHome()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:18:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(0, 254, 240, 66, "dock.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:19:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "1home.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:40:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(5, 172, 46, 46, "1feed.raw",4);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenFeeding()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:79:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "2feed.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:83:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "foothome.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:91:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(67, 223, 48, 48, "2stop.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:92:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(124, 223, 48, 48, "2restart.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:95:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(74, 110, 92, 92, "2feeding.raw",2);
> 
> ^
> 
> Screens:124: error: 'now' was not declared in this scope
> 
> startFeedingTime = now(); // mark when feeding started
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenPower()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:144:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "foothome.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:147:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "3power.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:156:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(73, 77, 40, 40, "3allon.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:157:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(128, 77, 40, 40, "3alloff.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenSettings()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:187:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "4extras.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:197:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "foothome.raw",2);  // footer home button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:201:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(10, 50, 48, 63, "4lights.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:205:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(10, 50, 48, 63, "4lightsF.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:207:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(67, 50, 48, 63, "4clock.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:208:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(124, 50, 48, 63, "4feeding.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:209:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(181, 50, 48, 63, "4sched.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:210:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(10, 118, 48, 63, "4sensors.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:211:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(67, 118, 48, 63, "4dosing.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:212:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(124, 118, 48, 63, "4screen.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:213:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(181, 118, 48, 63, "4ato.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:214:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(10, 186, 48, 63, "4lunar.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:215:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if (lightCSP==true) myFiles.load(67, 186, 48, 63, "4colorF.raw",2);//gray out icon for IR lights
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:216:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if (lightCSP==false)myFiles.load(67, 186, 48, 63, "4color.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:217:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(124, 186, 48, 63, "4graph.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLights()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:229:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "5lights.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:242:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightsIR()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:499:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "5lights.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:512:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenSensors()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:657:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "18sense.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:666:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "foothome.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:693:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(100, 259, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:694:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(180, 259, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:699:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(sensor1Enabled) myFiles.load(210, 58, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:700:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(sensor2Enabled) myFiles.load(210, 111, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:701:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(sensor3Enabled) myFiles.load(210, 164, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenHeatsink()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:714:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "18sense.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:723:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:743:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:753:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:754:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:757:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(10, 106, 96, 48, "19fanon.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:767:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:768:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:785:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:786:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenInternalTemp()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:803:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "18sense.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:812:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:832:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:838:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(10, 106, 96, 48, "19fanon.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:848:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:849:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:856:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:857:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:874:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:875:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenClock()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:892:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "6clock.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:908:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("24H", 12, 72);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:911:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 91, 72);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:914:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("S", 172, 72);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:919:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 20, 194);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:922:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("D", 91, 194);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:925:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("Y", 172, 194);
> 
> ^
> 
> Screens:932: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Hour = hour();
> 
> ^
> 
> Screens:932: error: 'hour' was not declared in this scope
> 
> saveRTC.Hour = hour();
> 
> ^
> 
> Screens:933: error: 'minute' was not declared in this scope
> 
> saveRTC.Minute = minute();
> 
> ^
> 
> Screens:935: error: 'day' was not declared in this scope
> 
> saveRTC.Day = day();
> 
> ^
> 
> Screens:936: error: 'month' was not declared in this scope
> 
> saveRTC.Month = month();
> 
> ^
> 
> Screens:937: error: 'year' was not declared in this scope
> 
> saveRTC.Year = (year()-1970);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:962:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("00", 201, 108);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:993:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(12, 286, 84, 26, "6cancel.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:994:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(144, 286, 84, 26, "6set.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenFeedSettings()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1007:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "2feed.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1034:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenHeater()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1069:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "8heat.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1078:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1098:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(17, 40, 48, 48, "8off.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1108:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1109:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1112:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(17, 106, 48, 48, "8on.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1122:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1123:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1140:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1141:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenSchedule()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1159:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "9sched.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1168:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1171:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(10, 50, 48, 63, "9power.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1172:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(67, 50, 48, 63, "4dosing.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1173:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(124, 50, 48, 63, "4lights.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenDosing(byte)':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1188:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "10dose.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1197:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 293, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1205:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(12, 39, 46, 48,"15pump1.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1206:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(70, 39, 46, 48,"15pump2.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1207:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(128, 39, 46, 48,"15pump3.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1273:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(92, 170, 48, 48, "10test.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1304:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(92, 236, 48, 48, "10fill.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrSchedule()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1326:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "9sched.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1338:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footschd.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1378:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 103, 84);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1399:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 152, 84);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1417:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("S2", 64, 109);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1428:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 102, 109);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1449:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 152, 109);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1477:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 103, 134);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1498:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 152, 134);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1516:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("S2", 64, 158);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1527:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 102, 158);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1548:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 152, 158);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1576:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 103, 183);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1597:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 152, 183);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1624:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 103, 208);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1645:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 152, 208);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1674:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 103, 234);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1695:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 152, 234);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1724:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 103, 258);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1745:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 152, 258);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrScheduleItem(int)':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1769:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "9sched.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1778:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footschd.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1792:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("H", 91, 77);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1797:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 172, 77);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1802:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("H", 91, 158);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1807:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 172, 158);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1846:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("LIGHT2 S2", 96, 50);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrAuxItem(int)':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1946:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "9sched.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1955:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footschd.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1994:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("H", 112, 73);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1995:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 178, 73);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1996:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 112, 148);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:1997:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("S", 178, 148);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2002:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("H", 112, 73);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2003:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 178, 73);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2004:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("H", 112, 148);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2005:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 178, 148);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenATO()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2085:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "17ATO.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2094:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenResyncLights()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2163:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "5lights.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightRamps()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2190:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "9sched.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2202:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footschd.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2221:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(9, 104, 66, 19, "13ramp1.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2222:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(9, 130, 66, 19, "13ramp2.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2223:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(9, 156, 66, 19, "13ramp3.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2224:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(9, 182, 66, 19, "13ramp4.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2225:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(9, 208, 66, 19, "13ramp5.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2226:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(9, 234, 66, 19, "13ramp6.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2239:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 116, 109);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2260:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 196, 109);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2283:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 116, 135);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2304:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 196, 135);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2327:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 116, 160);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2348:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 196, 160);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2371:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 116, 186);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2392:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 196, 186);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2415:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 116, 212);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2436:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 196, 212);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2459:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 116, 238);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2480:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 196, 238);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2506:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 56, 288);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2527:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print(":", 176, 288);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightRampItem(byte)':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2554:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "9sched.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2569:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footschd.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2574:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(15, 160, 29, 45, "14down.raw",2); // down arrow
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2584:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("H", 83, 103);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2589:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 162, 103);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2594:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("H", 83, 214);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2599:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 162, 214);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenDosingSched(byte)':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2722:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "9sched.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2735:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footschd.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2738:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(12, 61, 46, 48,"15pump1.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2739:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(12, 110, 46, 48,"15pump2.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2740:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(12, 159, 46, 48,"15pump3.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenScreen()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2850:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "16screen.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2942:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenLunar()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2953:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "21moon.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:2963:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw"); // footer button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenColor(byte)':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:3043:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "22color.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:3053:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw");  // footer settings button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino: In function 'void screenGraphLEDs()':
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:3134:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(2, 2, 30, 30, "23graph.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Screens.ino:3144:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(107, 294, 26, 26, "footextr.raw");  // footer settings button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino: In function 'void processMyTouch()':
> 
> Touch:50: error: 'now' was not declared in this scope
> 
> ATOPumpStartTime = now();
> 
> ^
> 
> Touch:667: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Hour=(saveRTC.Hour+1);
> 
> ^
> 
> Touch:679: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Hour=(saveRTC.Hour-1);
> 
> ^
> 
> Touch:691: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Minute=(saveRTC.Minute+1);
> 
> ^
> 
> Touch:704: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Minute=(saveRTC.Minute-1);
> 
> ^
> 
> Touch:716: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Second=(saveRTC.Second+1);
> 
> ^
> 
> Touch:729: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Second=(saveRTC.Second-1);
> 
> ^
> 
> Touch:742: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Month=(saveRTC.Month+1);
> 
> ^
> 
> Touch:755: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Month=(saveRTC.Month-1);
> 
> ^
> 
> Touch:767: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Day=(saveRTC.Day+1);
> 
> ^
> 
> Touch:780: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Day=(saveRTC.Day-1);
> 
> ^
> 
> Touch:792: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Year=(saveRTC.Year+1);
> 
> ^
> 
> Touch:805: error: 'saveRTC' was not declared in this scope
> 
> saveRTC.Year=(saveRTC.Year-1);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:960:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:961:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:978:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:979:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:1200:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(92, 175, 48, 48, "10test2.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:1214:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(92, 175, 48, 48, "10test.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:1297:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(92, 242, 48, 48, "10fill.raw");
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3071:55: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(210, 58, 26, 26, "footextr.raw",2); //draw setting button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3089:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(210, 111, 26, 26, "footextr.raw",2);//draw setting button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3107:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myFiles.load(210, 164, 26, 26, "footextr.raw",2);//draw setting button
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3207:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3208:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3225:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3226:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3300:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3301:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3318:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:3319:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:4147:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("H", 112, 73);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:4148:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 178, 73);
> 
> ^
> 
> C:\Users\YOGA3\Documents\Arduino\libraries\MrAqua_v2_3_6\Touch.ino:4149:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
> 
> myGLCD.print("M", 112, 148);
> 
> ^


If you add [ CODE ] [ /CODE ] around what you copied it won't be such a long post, just remove the spaces. That said I haven't seen that error before, have you tried googling it? You should move the MrAqua folder into the Arduino folder rather than the library folder. What version of Arduino are you using?


----------



## varun

hi , thanks for your reply , i have moved the Mraqua folder from library. i have tried everything actually .Arduino 1.6.12
..

I copied all librarries from your zip file and pasted in library folder. and tried to compile your program.


i doubts are 

is it necessary to put those PNG files somewhere . 
coz i dont have much experience with tough screen HMI's . only used 16x4 and other displays.

pls help me if u have any picture for wiring up pls forward me to "[email protected]"..


Also please let me know whther i can use the following LCD from itead

https://www.itead.cc/nextion-nx4024t032.html


it requires less wirng right .

Bump: meanwhile sorry for posting such a lengthy thread


----------



## varun

hi Mrman,

i have tried to compile MrAqua_v2.3.4 and it was successfull. But for Version 2.3.6 its showing so much errors.i have tried to figure it out but something is wrong somewhere, are using that code? can u share the most refined code .pls

Arduino: 1.6.12 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5hsunS.raw","5msunS.raw","5lsunS.raw","5moonS.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:542:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:545:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5hmsunF.raw","5lsunF.raw","5moonF.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:545:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:545:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5hsun.raw","5msun.raw","5lsun.raw","5moon.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:548:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5editF.raw", "5editN.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:554:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5saveF.raw", "5saveN.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:554:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:556:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5resynF.raw", "5resynN.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:556:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:558:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5canF.raw", "5canN.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:558:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:562:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Wup.raw", "5Wdown.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:562:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:564:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Rup.raw", "5Rdown.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:564:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:566:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Gup.raw", "5Gdown.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:566:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:568:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Bup.raw", "5Bdown.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:568:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:570:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"5Fup.raw", "5Fdown.raw"}; // disabled button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:570:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:574:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3light_F.raw","3light_N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:574:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:576:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3filt_F.raw","3filt_N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:576:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:578:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3circ_F.raw","3circ_N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:578:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:580:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3heat_F.raw","3heat_N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:580:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:582:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3co2_F.raw","3co2_N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:582:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:584:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3aux1_F.raw","3aux1_N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:584:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:586:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3aux2_F.raw","3aux2_N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:586:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:590:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3dotR.raw","3dotG.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:590:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:594:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1lightF.raw","1lightN.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:594:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:596:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1filtF.raw","1filtN.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:596:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:598:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1circF.raw","1circN.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:598:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:600:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1heatF.raw","1heatN.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:600:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:602:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1co2F.raw","1co2N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:602:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:604:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1aux1F.raw","1aux1N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:604:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:606:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1aux2F.raw","1aux2N.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:606:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1hsun.raw","1msun.raw","1lsun.raw","1moon.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:610:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"21lastq.raw","21ocres.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:617:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:621:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"24whUp.raw", "24whDn.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:621:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:625:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"11dis.raw","11enab.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:625:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:628:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"11disB.raw","11enabB.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:628:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:630:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"3off.raw","3on.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:630:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:633:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

"1wlow.raw","1whigh.raw"};

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:633:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void setup()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:671:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(26, 110, 188, 72, "iAqua.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawATO()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1077:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(150, 52, 60, 55, "1warn.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1081:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(150, 52, 55, 55, "1atoon.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1087:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("T", 122, 36); //print letters individually due to space constraints

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1088:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("A", 135, 36);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1089:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("N", 148, 36);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1090:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("K", 161, 36);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1091:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("ATO", 186, 36);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1096:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(122, 45, 115, 45, "logo.raw",2); //display a iAqua logo if ATO is disabled

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawTemp()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1233:51: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(30, 35, 60, 51, "1thermR.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1236:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(30, 35, 60, 51, "1therm.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1245:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1246:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1251:71: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true)myFiles.load(90, 94, 14, 12, "c_R.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1252:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(90, 94, 14, 12, "f_R.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1266:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(30, 35, 60, 51, "1temp2.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1271:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1272:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1280:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(30, 35, 60, 51, "1temp3.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1285:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1286:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1291:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(36, 36, 48, 48, "1quest.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawFeeding()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1333:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("HR", 12, 146);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1336:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(">99", 4, 130);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1337:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("HR", 12, 146);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1367:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("<", (fx-16), 130);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1377:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("<", 24, 80);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkDosing()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1425:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses1 > 4)myFiles.load(112, 122, 23, 50, "1ferts.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1426:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses1 < 5)myFiles.load(112, 122, 23, 50, "1fertse.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1427:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses2 > 4)myFiles.load(138, 122, 23, 50, "1ferts.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1428:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses2 < 5)myFiles.load(138, 122, 23, 50, "1fertse.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1429:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses3 > 4)myFiles.load(112, 183, 23, 50, "1ferts.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1430:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(doses3 < 5)myFiles.load(112, 183, 23, 50, "1fertse.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLighting()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1492:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(75, 151, 12, 20, "1arrow.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1520:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("MIN", 69, 219);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1524:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(57, 140, 48, 48, "1quest.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLightFade(int, int)':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1963:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("MIN", 69, 219);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenHome()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:18:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(0, 254, 240, 66, "dock.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:19:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "1home.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:40:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(5, 172, 46, 46, "1feed.raw",4);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenFeeding()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:79:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "2feed.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:83:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "foothome.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:91:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(67, 223, 48, 48, "2stop.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:92:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 223, 48, 48, "2restart.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:95:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(74, 110, 92, 92, "2feeding.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenPower()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:144:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "foothome.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:147:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "3power.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:156:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(73, 77, 40, 40, "3allon.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:157:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(128, 77, 40, 40, "3alloff.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenSettings()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:187:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "4extras.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:197:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "foothome.raw",2); // footer home button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:201:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 50, 48, 63, "4lights.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:205:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 50, 48, 63, "4lightsF.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:207:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(67, 50, 48, 63, "4clock.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:208:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 50, 48, 63, "4feeding.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:209:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(181, 50, 48, 63, "4sched.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:210:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 118, 48, 63, "4sensors.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:211:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(67, 118, 48, 63, "4dosing.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:212:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 118, 48, 63, "4screen.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:213:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(181, 118, 48, 63, "4ato.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:214:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 186, 48, 63, "4lunar.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:215:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if (lightCSP==true) myFiles.load(67, 186, 48, 63, "4colorF.raw",2);//gray out icon for IR lights

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:216:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if (lightCSP==false)myFiles.load(67, 186, 48, 63, "4color.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:217:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 186, 48, 63, "4graph.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenLights()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:229:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "5lights.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:242:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightsIR()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:499:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "5lights.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:512:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenSensors()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:657:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "18sense.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:666:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "foothome.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:693:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(100, 259, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:694:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(180, 259, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:699:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(sensor1Enabled) myFiles.load(210, 58, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:700:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(sensor2Enabled) myFiles.load(210, 111, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:701:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(sensor3Enabled) myFiles.load(210, 164, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenHeatsink()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:714:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "18sense.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:723:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:743:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:753:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:754:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:757:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 106, 96, 48, "19fanon.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:767:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:768:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:785:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:786:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenInternalTemp()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:803:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "18sense.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:812:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:832:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:838:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 106, 96, 48, "19fanon.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:848:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:849:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:856:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:857:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:874:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:875:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenClock()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:892:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "6clock.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:908:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("24H", 12, 72);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:911:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 91, 72);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:914:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("S", 172, 72);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:919:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 20, 194);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:922:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("D", 91, 194);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:925:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("Y", 172, 194);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:962:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("00", 201, 108);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:993:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 286, 84, 26, "6cancel.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:994:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(144, 286, 84, 26, "6set.raw",2);

 ^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenFeedSettings()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1007:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "2feed.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1034:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenHeater()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1069:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "8heat.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1078:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1098:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(17, 40, 48, 48, "8off.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1108:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1109:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1112:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(17, 106, 48, 48, "8on.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1122:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1123:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1140:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1141:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenSchedule()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1159:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1168:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1171:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(10, 50, 48, 63, "9power.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1172:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(67, 50, 48, 63, "4dosing.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1173:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(124, 50, 48, 63, "4lights.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenDosing(byte)':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1188:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "10dose.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1197:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 293, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1205:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 39, 46, 48,"15pump1.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1206:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(70, 39, 46, 48,"15pump2.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1207:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(128, 39, 46, 48,"15pump3.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1273:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 170, 48, 48, "10test.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1304:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 236, 48, 48, "10fill.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrSchedule()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1326:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1338:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1378:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 84); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1399:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 84); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1417:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("S2", 64, 109);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1428:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 102, 109); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1449:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 109); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1477:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 134); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1498:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 134); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1516:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("S2", 64, 158);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1527:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 102, 158); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1548:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 158);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1576:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 183); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1597:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 183); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1624:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 208); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1645:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 208); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1674:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 234); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1695:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 234); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1724:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 103, 258); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1745:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 152, 258); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrScheduleItem(int)':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1769:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1778:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1792:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 91, 77);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1797:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 172, 77);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1802:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 91, 158);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1807:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 172, 158);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1846:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("LIGHT2 S2", 96, 50);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrAuxItem(int)':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1946:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1955:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1994:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 73);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1995:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 73);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1996:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 112, 148);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:1997:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("S", 178, 148);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2002:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 73);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2003:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 73);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2004:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 148);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2005:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 148);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenATO()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2085:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "17ATO.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2094:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenResyncLights()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2163:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "5lights.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightRamps()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2190:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2202:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2221:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 104, 66, 19, "13ramp1.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2222:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 130, 66, 19, "13ramp2.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2223:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 156, 66, 19, "13ramp3.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2224:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 182, 66, 19, "13ramp4.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2225:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 208, 66, 19, "13ramp5.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2226:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(9, 234, 66, 19, "13ramp6.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2239:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 109); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2260:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 109); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2283:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 135); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2304:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 135); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2327:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 160); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2348:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 160); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2371:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 186); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2392:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 186); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2415:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 212); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2436:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 212); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2459:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 116, 238); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2480:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 196, 238); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2506:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 56, 288); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2527:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print(":", 176, 288); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightRampItem(byte)':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2554:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2569:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2574:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(15, 160, 29, 45, "14down.raw",2); // down arrow

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2584:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 83, 103);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2589:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 162, 103);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2594:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 83, 214);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2599:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 162, 214);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenDosingSched(byte)':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2722:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "9sched.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2735:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footschd.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2738:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 61, 46, 48,"15pump1.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2739:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 110, 46, 48,"15pump2.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2740:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(12, 159, 46, 48,"15pump3.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenScreen()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2850:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "16screen.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2942:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenLunar()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2953:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "21moon.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:2963:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw"); // footer button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenColor(byte)':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:3043:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "22color.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:3053:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw"); // footer settings button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino: In function 'void screenGraphLEDs()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:3134:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(2, 2, 30, 30, "23graph.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Screens.ino:3144:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(107, 294, 26, 26, "footextr.raw"); // footer settings button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino: In function 'void processMyTouch()':

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:960:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:961:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:978:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:979:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:1200:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 175, 48, 48, "10test2.raw"); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:1214:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 175, 48, 48, "10test.raw"); 

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:1297:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(92, 242, 48, 48, "10fill.raw");

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3071:55: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(210, 58, 26, 26, "footextr.raw",2); //draw setting button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3089:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(210, 111, 26, 26, "footextr.raw",2);//draw setting button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3107:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myFiles.load(210, 164, 26, 26, "footextr.raw",2);//draw setting button

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3207:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3208:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3225:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3226:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3300:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3301:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3318:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:3319:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:4147:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 73);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:4148:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 73);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:4149:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 112, 148);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:4150:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("S", 178, 148);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:4156:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 73);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:4157:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 73);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:4158:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("H", 112, 148);

^

C:\Users\YOGA3\Desktop\COntroller master files\MrAqua_v2_3_6\Touch.ino:4159:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

myGLCD.print("M", 178, 148);

^

In file included from C:\Users\YOGA3\Documents\Arduino\libraries\IRremote\ir_Lego_PF.cpp:3:0:

C:\Users\YOGA3\Documents\Arduino\libraries\IRremote\ir_Lego_PF_BitStreamEncoder.h: In member function 'int LegoPfBitStreamEncoder::getRepeatStopPause() const':

C:\Users\YOGA3\Documents\Arduino\libraries\IRremote\ir_Lego_PF_BitStreamEncoder.h:107:38: warning: integer overflow in expression [-Woverflow]

return STOP_PAUSE_DURATION + 5 * MAX_MESSAGE_LENGTH - messageLength;

^

C:\Users\YOGA3\AppData\Local\Temp\ccOnmjKu.ltrans0.ltrans.o: In function `main':

ccOnmjKu.ltrans0.o.text.startup+0xaf92): relocation truncated to fit: R_AVR_13_PCREL against `no symbol'

collect2.exe: error: ld returned 1 exit status

Multiple libraries were found for "IRremote.h"
Used: C:\Users\YOGA3\Documents\Arduino\libraries\IRremote
Not used: C:\Program Files (x86)\Arduino\libraries\RobotIRremote
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.


----------



## varun

hi vesion Mraqua2.3.6 is showing the error


----------



## varun

I would like to redesign the control board by adding PH sensor hardware and wifi shield , can you share the drawing file for PCB , i have seen the PDF sheet.in which software you designed it ?


----------



## MrMan

varun said:


> hi , thanks for your reply , i have moved the Mraqua folder from library. i have tried everything actually .Arduino 1.6.12
> ..
> 
> I copied all librarries from your zip file and pasted in library folder. and tried to compile your program.
> 
> 
> i doubts are
> 
> is it necessary to put those PNG files somewhere .
> coz i dont have much experience with tough screen HMI's . only used 16x4 and other displays.
> 
> pls help me if u have any picture for wiring up pls forward me to "[email protected]"..
> 
> 
> Also please let me know whther i can use the following LCD from itead
> 
> https://www.itead.cc/nextion-nx4024t032.html
> 
> 
> it requires less wirng right .
> 
> Bump: meanwhile sorry for posting such a lengthy thread


The png files arn't needed, you only need to place the .raw files on the SD card. That screen won't work with this controller, you'd have to order something like this:

https://www.itead.cc/display/tft-lcm/itdb02-3-2s-v2.html

I'm not sure why you're having the errors compiling, I'm using 1.6.3 and everything compiles with the code i uploaded for me. You've selected the right board right? "Arduino Mega or Mega 2560"


----------



## varun

Do u have any updated version for the code ?
is there any PH sensor update .....

currently iam working on a planted tank controller , this can control everything but i would like to shift the HMI to color like yours . 


http://www.plantedtank.net/forums/1...aquatics-aquarium-controller.html#post9723674


----------



## Nexgen

Could someone help me find the short in my MrMan iAqua shield. I have everything soldiered to the board and I'm getting a short between the 5V pin and GND. I can connect every other pin, including the 3.3V pin, but the 5V one is giving me problems. I have looked over both the board schematic and the physical board and I can't see any visible shorts between a 5V source and ground. I may have one on the U2 chip, but that chip is also a 3.3v chip, not 5V. I will be fixing that short soon though.Is it possible that, while soldiering everything on, I got a chip, capacitor, diode, etc. to hot and there is an internal short? I apologize for the lack of pictures, I can't get any clear shots of the pins.


----------



## Matchless

Check the diodes for polarity. Did you soldered the regulator the right way?
Cut/desolder the powerpin(s) from the chip(s) and check then the 5 volt.


----------



## Nexgen

Matchless said:


> Check the diodes for polarity. Did you soldered the regulator the right way?
> Cut/desolder the powerpin(s) from the chip(s) and check then the 5 volt.


Thanks for the input. I started desoldering things and I seem to have solved the short. But now I get 4.7K ohms between the 5v and gnd pins. and if I disconnect the voltage regulator, U8, the resistance jumps to 143K ohms. But when I connect the board to my arduino, I still can't get the arduino to turn on, if connect every pin other than the 5v ones I have no issues. So does the shield have to be powered by a 12v source to work, is the 5v draw of the shield more than the arduino can handle. To clarify during my testing I am only connecting the ardunio and shield, no aux power or other accessories.


----------



## Matchless

You can power the arduino directly with 5 volt but you have to use a different pin. Or via the USB port.










Take good care of the polarity because there is no fuse on these ports


----------



## Nexgen

Matchless said:


> You can power the arduino directly with 5 volt but you have to use a different pin. Or via the USB port.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Take good care of the polarity because there is no fuse on these ports


After some further testing I realized that when I connected 12v to the 12v input of the Mr Man shield the 5v side was being pulled down to 1.7v so, on the off chance that the 5v to 3.3v voltage regulator was the issue, I disconnected to 5v side of the regulator. And this fixed the issue, so, rather then buy another, I'll probably just give both the arduino and shield each a 12v source. Thanks for the help Matchless.


----------



## Nexgen

MrMan said:


> The png files arn't needed, you only need to place the .raw files on the SD card. That screen won't work with this controller, you'd have to order something like this:
> 
> https://www.itead.cc/display/tft-lcm/itdb02-3-2s-v2.html
> 
> I'm not sure why you're having the errors compiling, I'm using 1.6.3 and everything compiles with the code i uploaded for me. You've selected the right board right? "Arduino Mega or Mega 2560"


I am having the same issue as varun. I am using arduino version 1.6.13, MrAqua v2.3.4 and v2.3.6. One statement I got that I didn't see in varun's post is I get a "exit status 1 'tmElements_t' does not name a type". This error means that there is no definition for that identifier visible to the compiler.


----------



## Matchless

@Nexgen



> the 5v side was being pulled down to 1.7v


This indicates that you still have a short.

I Guess that the 5 volt regulator is getting extremely hot. You have to find the short , other "fixes" or work arounds will give problems.

IF THE SHORT IS IN THE SHIELD YOU COULD POTENTIONALY KILL YOUR ARDUINO!!
This could be happening because the shield can shortcut the I/O pins from the arduino if the arduino pin is set as output.

Try to repair the shield without the arduino installed.
Disconnect the output of the regulator and measure the voltage. output is 5 volt? 
Then disconnect the 3.3 regulator , measure the voltage . Is it 3.3 volt?
Measure also with disconnected 3.3 regulator the 5 volt part. Short gone? Then the short is on the 3.3 part.
Keep 3.3 volt regulator disconnected and start searching the short on the 5 volt part if the shortcut is still there.

Don't try to work around the shortcut. Fix the problem.

ps.
sorry for my bad english


----------



## Nexgen

Matchless said:


> @Nexgen
> 
> 
> 
> This indicates that you still have a short.
> 
> I Guess that the 5 volt regulator is getting extremely hot. You have to find the short , other "fixes" or work arounds will give problems.
> 
> IF THE SHORT IS IN THE SHIELD YOU COULD POTENTIONALY KILL YOUR ARDUINO!!
> This could be happening because the shield can shortcut the I/O pins from the arduino if the arduino pin is set as output.
> 
> Try to repair the shield without the arduino installed.
> Disconnect the output of the regulator and measure the voltage. output is 5 volt?
> Then disconnect the 3.3 regulator , measure the voltage . Is it 3.3 volt?
> Measure also with disconnected 3.3 regulator the 5 volt part. Short gone? Then the short is on the 3.3 part.
> Keep 3.3 volt regulator disconnected and start searching the short on the 5 volt part if the shortcut is still there.
> 
> Don't try to work around the shortcut. Fix the problem.
> 
> ps.
> sorry for my bad english


Ok, I went back through and the short was on U3, I removed it and the short disappeared. Now I just need to resolder a new one back on and hope I don't screw it up. BTW your english is better than a lot of none native english speaking people

Update: I soldiered a new U3 on and I am not getting and shorts, but I broke U10, the 5 to 3.3v regulator. Would I be fine making a jumper between the 3.3v pin of the arduino and the 3.3v side of U10. Apparently there is no connection between the 3.3v pin of the arduino and the 3.3v circuit of the shield.

Also could someone direct me to the page that talks about the changes that need to be made to the tft display to make it work with the shield, I remember reading somewhere on here that someone had to modify there display. Is this modification only for certain displays, I have a sainsmart one from amazon.


----------



## MrMan

Nexgen said:


> Ok, I went back through and the short was on U3, I removed it and the short disappeared. Now I just need to resolder a new one back on and hope I don't screw it up. BTW your english is better than a lot of none native english speaking people
> 
> Update: I soldiered a new U3 on and I am not getting and shorts, but I broke U10, the 5 to 3.3v regulator. Would I be fine making a jumper between the 3.3v pin of the arduino and the 3.3v side of U10. Apparently there is no connection between the 3.3v pin of the arduino and the 3.3v circuit of the shield.
> 
> Also could someone direct me to the page that talks about the changes that need to be made to the tft display to make it work with the shield, I remember reading somewhere on here that someone had to modify there display. Is this modification only for certain displays, I have a sainsmart one from amazon.


You can connect the 3.3V pin of the Arduino to the 3.3V side of U10. I was unsure of the current draw required for the LCD screen so i decided to beef up the 3.3V rail. I never did any real testing so you may find the Arduino regulator getting hotter without U10 installed.

Also if you're using my shield there shouldn't need to be any modifications for the tft display. The previously mentioned modifications are for the tft shield which my shield replaces. This is because the iAqua software uses different pins for the screen than normal, but the shield takes care of this.


----------



## Nexgen

MrMan said:


> You can connect the 3.3V pin of the Arduino to the 3.3V side of U10. I was unsure of the current draw required for the LCD screen so i decided to beef up the 3.3V rail. I never did any real testing so you may find the Arduino regulator getting hotter without U10 installed.
> 
> Also if you're using my shield there shouldn't need to be any modifications for the tft display. The previously mentioned modifications are for the tft shield which my shield replaces. This is because the iAqua software uses different pins for the screen than normal, but the shield takes care of this.


Here is my error report


Code:


Arduino: 1.6.13 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:209:0:

C:\Program Files (x86)\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared

     static bool read(tmElements_t &tm);

                      ^

C:\Program Files (x86)\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared

     static bool write(tmElements_t &tm);

                       ^

In file included from D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:211:0:

C:\Program Files (x86)\Arduino\libraries\TimeAlarms/TimeAlarms.h:71:31: error: 'timeDayOfWeek_t' does not name a type

   AlarmID_t alarmRepeat(const timeDayOfWeek_t DOW, const int H,  const int M,  const int S, OnTick_t onTickHandler); // as above, with day of week 

                               ^

C:\Program Files (x86)\Arduino\libraries\TimeAlarms/TimeAlarms.h:75:29: error: 'timeDayOfWeek_t' does not name a type

   AlarmID_t alarmOnce(const timeDayOfWeek_t DOW, const int H,  const int M,  const int S, OnTick_t onTickHandler); // as above, with day of week 

                             ^

MrAqua_v2_3_6:369: error: 'tmElements_t' does not name a type

 tmElements_t prevRTC, saveRTC;

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:552:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:556:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:556:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:556:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:560:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:560:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:560:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:560:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:565:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:565:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:568:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:568:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:571:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:571:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:574:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:574:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:579:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:579:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:582:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:582:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:585:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:585:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:588:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:588:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:591:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 }; // disabled button

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:591:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:596:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:596:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:599:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:599:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:602:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:602:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:605:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:605:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:608:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:608:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:611:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:611:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:614:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:614:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:619:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:619:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:624:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:624:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:627:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:627:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:630:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:630:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:633:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:633:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:636:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:636:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:639:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:639:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:642:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:642:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:647:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:647:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:647:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:647:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:655:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:655:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:655:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:655:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:655:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:655:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:655:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:655:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:660:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:660:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:665:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:665:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:669:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:669:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:672:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:672:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:676:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

 };

 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:676:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void setup()':

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:714:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(26, 110, 188, 72, "iAqua.raw");

                                             ^

MrAqua_v2_3_6:717: error: 'setSyncProvider' was not declared in this scope

   setSyncProvider(RTC.get);

                          ^

MrAqua_v2_3_6:719: error: 'timeStatus' was not declared in this scope

   if (timeStatus() != timeSet)

                  ^

MrAqua_v2_3_6:719: error: 'timeSet' was not declared in this scope

   if (timeStatus() != timeSet)

                       ^

MrAqua_v2_3_6:722: error: 'saveRTC' was not declared in this scope

     saveRTC.Year = 45;

     ^

MrAqua_v2_3_6:728: error: 'makeTime' was not declared in this scope

     RTC.set(makeTime(saveRTC));

                             ^

MrAqua_v2_3_6:729: error: 'setTime' was not declared in this scope

     setTime(makeTime(saveRTC));

                              ^

MrAqua_v2_3_6:732: error: 'now' was not declared in this scope

   lastFeedingTime = now(); //not storing feeding time in eeprom due to high rate of writing

                         ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void loop()':

MrAqua_v2_3_6:868: error: 'now' was not declared in this scope

   time_t currentTime = now();

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLightRamp()':

MrAqua_v2_3_6:997: error: 'now' was not declared in this scope

   time_t currentTime = now();

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkATO()':

MrAqua_v2_3_6:1041: error: 'now' was not declared in this scope

         ATOStartTime = now();

                            ^

MrAqua_v2_3_6:1045: error: 'now' was not declared in this scope

       if (((now() - ATOStartTime) >= ATOWaitTime) && (ATOPumpState == false))

                 ^

MrAqua_v2_3_6:1058: error: 'now' was not declared in this scope

       if (((now() - ATOPumpStartTime) >= ATORunTime) && (ATOPumpState == true))

                 ^

MrAqua_v2_3_6:1098: error: 'now' was not declared in this scope

     if (((now() - ATOPumpStartTime) >= ATORunTime) && (ATOPumpState == true))

               ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawATO()':

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1122:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(150, 52, 60, 55, "1warn.raw", 2);

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1126:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(150, 52, 55, 55, "1atoon.raw", 2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1132:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("T", 122, 36); //print letters individually due to space constraints

                              ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1133:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("A", 135, 36);

                              ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1134:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("N", 148, 36);

                              ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1135:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("K", 161, 36);

                              ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1136:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("ATO", 186, 36);

                                ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1141:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(122, 45, 115, 45, "logo.raw", 2); //display a iAqua logo if ATO is disabled

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawTemp()':

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1278:52: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(30, 35, 60, 51, "1thermR.raw", 4);

                                                    ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1281:51: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(30, 35, 60, 51, "1therm.raw", 4);

                                                   ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1290:71: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if (displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw", 4);

                                                                       ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1291:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if (displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw", 4);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1296:73: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if (displayInC == true)myFiles.load(90, 94, 14, 12, "c_R.raw", 4);

                                                                         ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1297:74: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if (displayInC == false)myFiles.load(90, 94, 14, 12, "f_R.raw", 4);

                                                                          ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1311:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(30, 35, 60, 51, "1temp2.raw", 4);

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1316:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       if (displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw", 4);

                                                                     ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1317:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       if (displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw", 4);

                                                                      ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1325:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(30, 35, 60, 51, "1temp3.raw", 4);

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1330:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     if (displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw", 4);

                                                                   ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1331:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     if (displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw", 4);

                                                                    ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1336:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(36, 36, 48, 48, "1quest.raw");

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkFeeding()':

MrAqua_v2_3_6:1344: error: 'now' was not declared in this scope

     dimTime = now(); // keep the screen bright duing feeding

                   ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void drawFeeding()':

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1378:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myGLCD.print("HR", 12, 146);

                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1381:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myGLCD.print(">99", 4, 130);

                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1382:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myGLCD.print("HR", 12, 146);

                                 ^

MrAqua_v2_3_6:1391: error: 'now' was not declared in this scope

     int feedingMinsLeft = (feedingTotalSeconds - (now() - startFeedingTime)) / 60;

                                                       ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1412:39: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myGLCD.print("<", (fx - 16), 130);

                                       ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1422:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myGLCD.print("<", 24, 80);

                               ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkDosing()':

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1470:64: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (doses1 > 4)myFiles.load(112, 122, 23, 50, "1ferts.raw", 4);

                                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1471:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (doses1 < 5)myFiles.load(112, 122, 23, 50, "1fertse.raw", 4);

                                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1472:64: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (doses2 > 4)myFiles.load(138, 122, 23, 50, "1ferts.raw", 4);

                                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1473:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (doses2 < 5)myFiles.load(138, 122, 23, 50, "1fertse.raw", 4);

                                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1474:64: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (doses3 > 4)myFiles.load(112, 183, 23, 50, "1ferts.raw", 4);

                                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1475:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (doses3 < 5)myFiles.load(112, 183, 23, 50, "1fertse.raw", 4);

                                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLighting()':

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1537:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(75, 151, 12, 20, "1arrow.raw", 4);

                                                  ^

MrAqua_v2_3_6:1541: error: 'now' was not declared in this scope

     unsigned long rightNow = now();

                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1565:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("MIN", 69, 219);

                                ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:1569:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(57, 140, 48, 48, "1quest.raw");

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void feedingStop()':

MrAqua_v2_3_6:1706: error: 'now' was not declared in this scope

   lastFeedingTime = now();

                         ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void SaveTime()':

MrAqua_v2_3_6:1731: error: 'saveRTC' was not declared in this scope

   time_t saveTime = makeTime(saveRTC);

                              ^

MrAqua_v2_3_6:1731: error: 'makeTime' was not declared in this scope

   time_t saveTime = makeTime(saveRTC);

                                     ^

MrAqua_v2_3_6:1732: error: 'setTime' was not declared in this scope

   setTime(saveTime);

                   ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void updateTimeDate(boolean)':

MrAqua_v2_3_6:1743: error: 'hour' was not declared in this scope

   if ((hour() != prevRTC.Hour) || (minute() != prevRTC.Minute) || updateTime) {

             ^

MrAqua_v2_3_6:1743: error: 'prevRTC' was not declared in this scope

   if ((hour() != prevRTC.Hour) || (minute() != prevRTC.Minute) || updateTime) {

                  ^

MrAqua_v2_3_6:1743: error: 'minute' was not declared in this scope

   if ((hour() != prevRTC.Hour) || (minute() != prevRTC.Minute) || updateTime) {

                                           ^

MrAqua_v2_3_6:1746: error: 'hourFormat12' was not declared in this scope

     if (displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);

                                                      ^

MrAqua_v2_3_6:1746: error: 'isPM' was not declared in this scope

     if (displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);

                                                                         ^

MrAqua_v2_3_6:1754: error: 'day' was not declared in this scope

   if ((day() != prevRTC.Day) || (month() != prevRTC.Month) || updateTime) {

            ^

MrAqua_v2_3_6:1754: error: 'prevRTC' was not declared in this scope

   if ((day() != prevRTC.Day) || (month() != prevRTC.Month) || updateTime) {

                 ^

MrAqua_v2_3_6:1754: error: 'month' was not declared in this scope

   if ((day() != prevRTC.Day) || (month() != prevRTC.Month) || updateTime) {

                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void printValueUpdate()':

MrAqua_v2_3_6:1763: error: 'now' was not declared in this scope

   time_t printTime = now();

                          ^

MrAqua_v2_3_6:1765: error: 'hourFormat12' was not declared in this scope

   if (hourFormat12(printTime) < 10)Serial.print(F("0"));

                             ^

MrAqua_v2_3_6:1766: error: 'hourFormat12' was not declared in this scope

   Serial.print(hourFormat12(printTime));

                                      ^

MrAqua_v2_3_6:1768: error: 'minute' was not declared in this scope

   if (minute(printTime) < 10)Serial.print(F("0"));

                       ^

MrAqua_v2_3_6:1769: error: 'minute' was not declared in this scope

   Serial.print(minute(printTime));

                                ^

MrAqua_v2_3_6:1771: error: 'second' was not declared in this scope

   if (second(printTime) < 10)Serial.print(F("0"));

                       ^

MrAqua_v2_3_6:1772: error: 'second' was not declared in this scope

   Serial.print(second(printTime));

                                ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void printDate(int, int)':

MrAqua_v2_3_6:1857: error: 'weekday' was not declared in this scope

   strcat(chDate, dayShortStr(weekday()));

                                      ^

MrAqua_v2_3_6:1857: error: 'dayShortStr' was not declared in this scope

   strcat(chDate, dayShortStr(weekday()));

                                       ^

MrAqua_v2_3_6:1859: error: 'month' was not declared in this scope

   strcat(chDate, monthShortStr(month()));

                                      ^

MrAqua_v2_3_6:1859: error: 'monthShortStr' was not declared in this scope

   strcat(chDate, monthShortStr(month()));

                                       ^

MrAqua_v2_3_6:1861: error: 'day' was not declared in this scope

   itoa(day(), tmpChar, 10);

            ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'time_t tmConvert_t(int, byte, byte, byte, byte, byte)':

MrAqua_v2_3_6:1871: error: 'tmElements_t' was not declared in this scope

   tmElements_t tmSet;

   ^

MrAqua_v2_3_6:1872: error: 'tmSet' was not declared in this scope

   tmSet.Year = YYYY - 1970;

   ^

MrAqua_v2_3_6:1878: error: 'makeTime' was not declared in this scope

   return makeTime(tmSet);         //convert to time_t

                        ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'int calcFeeding()':

MrAqua_v2_3_6:1939: error: 'now' was not declared in this scope

   time_t timeSinceLastFeed = now() - lastFeedingTime;

                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'void checkLightFade(int, int)':

MrAqua_v2_3_6:1978: error: 'now' was not declared in this scope

     unsigned long rightNow = now();

                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino:2008:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myGLCD.print("MIN", 69, 219);

                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'byte lunarCycleScaling()':

MrAqua_v2_3_6:2411: error: 'tmElements_t' was not declared in this scope

   tmElements_t fixedDate = {0, 35, 20, 0, 7, 1, 0};

   ^

MrAqua_v2_3_6:2413: error: 'fixedDate' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                  ^

MrAqua_v2_3_6:2413: error: 'makeTime' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                           ^

MrAqua_v2_3_6:2414: error: 'now' was not declared in this scope

   long phase = (now() - newMoonCycle) % lp;

                     ^

D:\azell\IAqua\MrAqua_v2_3_6\MrAqua_v2_3_6.ino: In function 'byte getLunarCycleDay()':

MrAqua_v2_3_6:2422: error: 'tmElements_t' was not declared in this scope

   tmElements_t fixedDate = {0, 35, 20, 0, 7, 1, 0};

   ^

MrAqua_v2_3_6:2424: error: 'fixedDate' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                  ^

MrAqua_v2_3_6:2424: error: 'makeTime' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                           ^

MrAqua_v2_3_6:2425: error: 'now' was not declared in this scope

   long phase = (now() - newMoonCycle) % lp;

                     ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenHome()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:18:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(0, 254, 240, 66, "dock.raw",4);

                                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:19:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "1home.raw",4);

                                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:40:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(5, 172, 46, 46, "1feed.raw",4);

                                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenFeeding()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:79:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "2feed.raw",2);

                                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:83:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "foothome.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:91:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(67, 223, 48, 48, "2stop.raw",2);

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:92:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 223, 48, 48, "2restart.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:95:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(74, 110, 92, 92, "2feeding.raw",2);

                                                 ^

Screens:124: error: 'now' was not declared in this scope

     startFeedingTime = now(); // mark when feeding started

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenPower()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:144:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "foothome.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:147:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "3power.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:156:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(73, 77, 40, 40, "3allon.raw",2);

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:157:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(128, 77, 40, 40, "3alloff.raw",2);

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenSettings()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:187:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "4extras.raw",2);

                                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:197:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "foothome.raw",2);  // footer home button

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:201:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(10, 50, 48, 63, "4lights.raw",2);

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:205:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(10, 50, 48, 63, "4lightsF.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:207:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(67, 50, 48, 63, "4clock.raw",2);

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:208:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 50, 48, 63, "4feeding.raw",2);

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:209:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(181, 50, 48, 63, "4sched.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:210:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 118, 48, 63, "4sensors.raw",2);

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:211:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(67, 118, 48, 63, "4dosing.raw",2);

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:212:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 118, 48, 63, "4screen.raw",2);

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:213:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(181, 118, 48, 63, "4ato.raw",2);

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:214:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 186, 48, 63, "4lunar.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:215:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (lightCSP==true) myFiles.load(67, 186, 48, 63, "4colorF.raw",2);//gray out icon for IR lights

                                                                    ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:216:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (lightCSP==false)myFiles.load(67, 186, 48, 63, "4color.raw",2);

                                                                   ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:217:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 186, 48, 63, "4graph.raw",2);

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenLights()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:229:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "5lights.raw",2);

                                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:242:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightsIR()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:499:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "5lights.raw",2);

                                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:512:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenSensors()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:657:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "18sense.raw",2);

                                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:666:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "foothome.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:693:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(100, 259, 14, 12, "c.raw",2);

                                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:694:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(180, 259, 14, 12, "f.raw",2);

                                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:699:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(sensor1Enabled) myFiles.load(210, 58, 26, 26, "footextr.raw",2);

                                                                    ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:700:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(sensor2Enabled) myFiles.load(210, 111, 26, 26, "footextr.raw",2);

                                                                     ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:701:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(sensor3Enabled) myFiles.load(210, 164, 26, 26, "footextr.raw",2);

                                                                     ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenHeatsink()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:714:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "18sense.raw",2);

                                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:723:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:743:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:753:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

                                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:754:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

                                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:757:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 106, 96, 48, "19fanon.raw",2);

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:767:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:768:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:785:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:786:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenInternalTemp()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:803:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "18sense.raw",2);

                                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:812:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:832:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:838:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 106, 96, 48, "19fanon.raw",2);

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:848:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

                                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:849:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

                                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:856:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:857:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:874:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:875:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenClock()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:892:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "6clock.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:908:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("24H", 12, 72);

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:911:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 91, 72);

                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:914:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("S", 172, 72);

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:919:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 20, 194);

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:922:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("D", 91, 194);

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:925:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Y", 172, 194);

                             ^

Screens:932: error: 'saveRTC' was not declared in this scope

   saveRTC.Hour = hour();

   ^

Screens:932: error: 'hour' was not declared in this scope

   saveRTC.Hour = hour();

                       ^

Screens:933: error: 'minute' was not declared in this scope

   saveRTC.Minute = minute(); 

                           ^

Screens:935: error: 'day' was not declared in this scope

   saveRTC.Day = day();

                     ^

Screens:936: error: 'month' was not declared in this scope

   saveRTC.Month = month();

                         ^

Screens:937: error: 'year' was not declared in this scope

   saveRTC.Year = (year()-1970);

                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:962:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("00", 201, 108);

                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:993:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 286, 84, 26, "6cancel.raw",2);

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:994:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(144, 286, 84, 26, "6set.raw",2);

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenFeedSettings()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1007:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "2feed.raw",2);

                                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1034:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenHeater()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1069:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "8heat.raw",2);

                                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1078:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1098:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(17, 40, 48, 48, "8off.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1108:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

                                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1109:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

                                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1112:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(17, 106, 48, 48, "8on.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1122:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1123:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1140:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1141:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenSchedule()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1159:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1168:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1171:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 50, 48, 63, "9power.raw",2);

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1172:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(67, 50, 48, 63, "4dosing.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1173:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 50, 48, 63, "4lights.raw",2);

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenDosing(byte)':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1188:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "10dose.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1197:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 293, 26, 26, "footextr.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1205:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 39, 46, 48,"15pump1.raw",2);

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1206:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(70, 39, 46, 48,"15pump2.raw",2);

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1207:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(128, 39, 46, 48,"15pump3.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1273:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(92, 170, 48, 48, "10test.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1304:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(92, 236, 48, 48, "10fill.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrSchedule()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1326:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1338:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1378:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 84);         

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1399:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 84);         

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1417:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("S2", 64, 109);

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1428:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 102, 109);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1449:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 109);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1477:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 134);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1498:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 134);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1516:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("S2", 64, 158);

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1527:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 102, 158);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1548:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 158);

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1576:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 183);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1597:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 183);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1624:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 208);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1645:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 208);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1674:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 234);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1695:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 234);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1724:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 258);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1745:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 258);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrScheduleItem(int)':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1769:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1778:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1792:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("H", 91, 77);

                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1797:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 172, 77);

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1802:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("H", 91, 158);

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1807:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 172, 158);

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1846:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("LIGHT2 S2", 96, 50);

                                     ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenPwrAuxItem(int)':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1946:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1955:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1994:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("H", 112, 73);

                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1995:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("M", 178, 73);

                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1996:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("M", 112, 148);

                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:1997:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("S", 178, 148);

                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2002:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("H", 112, 73);

                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2003:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("M", 178, 73);

                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2004:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("H", 112, 148);

                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2005:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("M", 178, 148);

                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenATO()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2085:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "17ATO.raw",2);

                                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2094:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenResyncLights()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2163:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "5lights.raw");

                                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightRamps()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2190:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2202:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2221:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 104, 66, 19, "13ramp1.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2222:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 130, 66, 19, "13ramp2.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2223:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 156, 66, 19, "13ramp3.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2224:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 182, 66, 19, "13ramp4.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2225:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 208, 66, 19, "13ramp5.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2226:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 234, 66, 19, "13ramp6.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2239:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 109);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2260:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 109);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2283:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 135);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2304:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 135);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2327:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 160);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2348:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 160);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2371:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 186);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2392:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 186);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2415:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 212);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2436:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 212);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2459:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 238);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2480:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 238);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2506:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 56, 288);         

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2527:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 176, 288);         

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenLightRampItem(byte)':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2554:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2569:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2574:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(15, 160, 29, 45, "14down.raw",2); // down arrow

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2584:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("H", 83, 103);

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2589:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 162, 103);

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2594:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("H", 83, 214);

                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2599:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 162, 214);

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenDosingSched(byte)':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2722:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2735:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2738:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 61, 46, 48,"15pump1.raw",2);

                                              ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2739:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 110, 46, 48,"15pump2.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2740:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 159, 46, 48,"15pump3.raw",2);

                                               ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenScreen()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2850:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "16screen.raw");

                                            ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2942:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw");

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenLunar()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2953:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "21moon.raw");

                                          ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:2963:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw"); // footer button

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenColor(byte)':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:3043:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(2, 2, 30, 30, "22color.raw");

                                             ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:3053:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(107, 294, 26, 26, "footextr.raw");  // footer settings button

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino: In function 'void screenGraphLEDs()':

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:3134:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "23graph.raw");

                                           ^

D:\azell\IAqua\MrAqua_v2_3_6\Screens.ino:3144:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw");  // footer settings button

                                                ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino: In function 'void processMyTouch()':

Touch:50: error: 'now' was not declared in this scope

         ATOPumpStartTime = now();

                                ^

Touch:667: error: 'saveRTC' was not declared in this scope

       saveRTC.Hour=(saveRTC.Hour+1);

       ^

Touch:679: error: 'saveRTC' was not declared in this scope

       saveRTC.Hour=(saveRTC.Hour-1);

       ^

Touch:691: error: 'saveRTC' was not declared in this scope

       saveRTC.Minute=(saveRTC.Minute+1);

       ^

Touch:704: error: 'saveRTC' was not declared in this scope

       saveRTC.Minute=(saveRTC.Minute-1);

       ^

Touch:716: error: 'saveRTC' was not declared in this scope

       saveRTC.Second=(saveRTC.Second+1);

       ^

Touch:729: error: 'saveRTC' was not declared in this scope

       saveRTC.Second=(saveRTC.Second-1);

       ^

Touch:742: error: 'saveRTC' was not declared in this scope

       saveRTC.Month=(saveRTC.Month+1);

       ^

Touch:755: error: 'saveRTC' was not declared in this scope

       saveRTC.Month=(saveRTC.Month-1);

       ^

Touch:767: error: 'saveRTC' was not declared in this scope

       saveRTC.Day=(saveRTC.Day+1);

       ^

Touch:780: error: 'saveRTC' was not declared in this scope

       saveRTC.Day=(saveRTC.Day-1);

       ^

Touch:792: error: 'saveRTC' was not declared in this scope

       saveRTC.Year=(saveRTC.Year+1);

       ^

Touch:805: error: 'saveRTC' was not declared in this scope

       saveRTC.Year=(saveRTC.Year-1);

       ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:960:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:961:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:978:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:979:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:1200:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(92, 175, 48, 48, "10test2.raw"); 

                                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:1214:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(92, 175, 48, 48, "10test.raw"); 

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:1297:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(92, 242, 48, 48, "10fill.raw");

                                                 ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3071:55: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myFiles.load(210, 58, 26, 26, "footextr.raw",2); //draw setting button

                                                       ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3089:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myFiles.load(210, 111, 26, 26, "footextr.raw",2);//draw setting button

                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3107:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myFiles.load(210, 164, 26, 26, "footextr.raw",2);//draw setting button

                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3207:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3208:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3225:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3226:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3300:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3301:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3318:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:3319:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                        ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:4147:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("H", 112, 73);

                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:4148:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("M", 178, 73);

                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:4149:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("M", 112, 148);

                                   ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:4150:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("S", 178, 148);

                                   ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:4156:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("H", 112, 73);

                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:4157:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("M", 178, 73);

                                  ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:4158:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("H", 112, 148);

                                   ^

D:\azell\IAqua\MrAqua_v2_3_6\Touch.ino:4159:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("M", 178, 148);

                                   ^

D:\azell\IAqua\MrAqua_v2_3_6\alarms.ino: In function 'void updateAlarms()':

alarms:76: error: 'dowSunday' was not declared in this scope

     Alarm.alarmRepeat(dowSunday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:80: error: 'dowSunday' was not declared in this scope

     Alarm.alarmRepeat(dowSunday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:84: error: 'dowSunday' was not declared in this scope

     Alarm.alarmRepeat(dowSunday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:88: error: 'dowMonday' was not declared in this scope

     Alarm.alarmRepeat(dowMonday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:92: error: 'dowMonday' was not declared in this scope

     Alarm.alarmRepeat(dowMonday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:96: error: 'dowMonday' was not declared in this scope

     Alarm.alarmRepeat(dowMonday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:100: error: 'dowTuesday' was not declared in this scope

     Alarm.alarmRepeat(dowTuesday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:104: error: 'dowTuesday' was not declared in this scope

     Alarm.alarmRepeat(dowTuesday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:108: error: 'dowTuesday' was not declared in this scope

     Alarm.alarmRepeat(dowTuesday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:112: error: 'dowWednesday' was not declared in this scope

     Alarm.alarmRepeat(dowWednesday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:116: error: 'dowWednesday' was not declared in this scope

     Alarm.alarmRepeat(dowWednesday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:120: error: 'dowWednesday' was not declared in this scope

     Alarm.alarmRepeat(dowWednesday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:124: error: 'dowThursday' was not declared in this scope

     Alarm.alarmRepeat(dowThursday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:128: error: 'dowThursday' was not declared in this scope

     Alarm.alarmRepeat(dowThursday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:132: error: 'dowThursday' was not declared in this scope

     Alarm.alarmRepeat(dowThursday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:136: error: 'dowFriday' was not declared in this scope

     Alarm.alarmRepeat(dowFriday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:140: error: 'dowFriday' was not declared in this scope

     Alarm.alarmRepeat(dowFriday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:144: error: 'dowFriday' was not declared in this scope

     Alarm.alarmRepeat(dowFriday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:148: error: 'dowSaturday' was not declared in this scope

     Alarm.alarmRepeat(dowSaturday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:152: error: 'dowSaturday' was not declared in this scope

     Alarm.alarmRepeat(dowSaturday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:156: error: 'dowSaturday' was not declared in this scope

     Alarm.alarmRepeat(dowSaturday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

D:\azell\IAqua\MrAqua_v2_3_6\alarms.ino: In function 'void AlarmRamp1()':

alarms:497: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\alarms.ino: In function 'void AlarmRamp2()':

alarms:554: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\alarms.ino: In function 'void AlarmRamp3()':

alarms:611: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\alarms.ino: In function 'void AlarmRamp4()':

alarms:668: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\alarms.ino: In function 'void AlarmRamp5()':

alarms:725: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\alarms.ino: In function 'void AlarmRamp6()':

alarms:795: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

D:\azell\IAqua\MrAqua_v2_3_6\alarms.ino: In function 'void rampToZero()':

alarms:1008: error: 'now' was not declared in this scope

     fadeStartingSeconds = now();

                               ^

D:\azell\IAqua\MrAqua_v2_3_6\startups.ino: In function 'void smartStartup()':

startups:451: error: 'now' was not declared in this scope

   time_t currentStamp = now();

                             ^

startups:452: error: 'year' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                      ^

startups:452: error: 'month' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                              ^

startups:452: error: 'day' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                                    ^

D:\azell\IAqua\MrAqua_v2_3_6\startups.ino: In function 'void smartStartupRamp()':

startups:625: error: 'now' was not declared in this scope

   time_t currentStamp = now();

                             ^

startups:626: error: 'year' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                      ^

startups:626: error: 'month' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                              ^

startups:626: error: 'day' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                                    ^

D:\azell\IAqua\MrAqua_v2_3_6\startups.ino: In function 'void smartStartupPower()':

startups:814: error: 'now' was not declared in this scope

   time_t currentStamp = now();

                             ^

startups:815: error: 'year' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                      ^

startups:815: error: 'month' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                              ^

startups:815: error: 'day' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                                    ^

exit status 1
'tmElements_t' does not name a type

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.


----------



## Nexgen

varun said:


> hi , thanks for your reply , i have moved the Mraqua folder from library. i have tried everything actually .Arduino 1.6.12
> ..
> 
> I copied all librarries from your zip file and pasted in library folder. and tried to compile your program.
> 
> 
> i doubts are
> 
> is it necessary to put those PNG files somewhere .
> coz i dont have much experience with tough screen HMI's . only used 16x4 and other displays.
> 
> pls help me if u have any picture for wiring up pls forward me to "[email protected]"..
> 
> 
> Also please let me know whther i can use the following LCD from itead
> 
> https://www.itead.cc/nextion-nx4024t032.html
> 
> 
> it requires less wirng right .
> 
> Bump: meanwhile sorry for posting such a lengthy thread


I found a fix for the issue. Go to Sketch => Include Library => Manage Library => In the "Type" drop down select "Updatable" => Update all the libraries in that window.

I now have another issue though:|.



Code:


Arduino: 1.6.13 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\azell\AppData\Local\Temp\cc96OXwz.ltrans0.ltrans.o: In function `main':

cc96OXwz.ltrans0.o:(.text.startup+0xaf84): relocation truncated to fit: R_AVR_13_PCREL against `no symbol'

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

[\code]

P.S. not sure why this isn't displaying as code


----------



## J.OWL

*Arduino 1.6.13 ld or linker error*

I was receiving the same error. It took me a while to start unraveling the issue. "ld" is a linker error, which in a way means the arduino software can't pull together the information the code calls for because there are too many broken links within it. If you turn on verbose in the preferences it will show errors in orange. If you receive enough errors the linker "ld" will crash, the 1 exit means that 1 .exe failed and caused the exit. What it doesn't tell you is how many errors happened before that .exe crashed.

I believe I tried everything probably like you have. I tried every version of the Arduino IDE software from 1.0.6 all the way up to 1.6.14, the error displayed differently but it was still there. I loaded every version of the libraries I could find and I still could not make it work. I finally decided to start trying to debug the linker errors. BTW I tried to run the original IAqua 1.0.4 and it had the same error in 1.6.13.

I was just able to get mine to fully load today. I haven't had time to test anything to be certain the changes didn't cause unwanted results. I can e-mail the zip file for further debugging if someone would like. 


C:\Users\azell\AppData\Local\Temp\cc96OXwz.ltrans0.ltrans.o: In function `main':

cc96OXwz.ltrans0.o.text.startup+0xaf84): relocation truncated to fit: R_AVR_13_PCREL against `no symbol'

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.


----------



## Wolfire18

J.OWL said:


> I was receiving the same error. It took me a while to start unraveling the issue. "ld" is a linker error, which in a way means the arduino software can't pull together the information the code calls for because there are too many broken links within it. If you turn on verbose in the preferences it will show errors in orange. If you receive enough errors the linker "ld" will crash, the 1 exit means that 1 .exe failed and caused the exit. What it doesn't tell you is how many errors happened before that .exe crashed.
> 
> I believe I tried everything probably like you have. I tried every version of the Arduino IDE software from 1.0.6 all the way up to 1.6.14, the error displayed differently but it was still there. I loaded every version of the libraries I could find and I still could not make it work. I finally decided to start trying to debug the linker errors. BTW I tried to run the original IAqua 1.0.4 and it had the same error in 1.6.13.
> 
> I was just able to get mine to fully load today. I haven't had time to test anything to be certain the changes didn't cause unwanted results. I can e-mail the zip file for further debugging if someone would like.
> 
> 
> C:\Users\azell\AppData\Local\Temp\cc96OXwz.ltrans0.ltrans.o: In function `main':
> 
> cc96OXwz.ltrans0.o.text.startup+0xaf84): relocation truncated to fit: R_AVR_13_PCREL against `no symbol'
> 
> collect2.exe: error: ld returned 1 exit status
> 
> exit status 1
> Error compiling for board Arduino/Genuino Mega or Mega 2560.


same problem here (i guess?) when trying to upload MrAqua 2.3.6:

C:\Users\****\AppData\Local\Temp\cc9jLYNQ.ltrans0.ltrans.o: In function `main':

cc9jLYNQ.ltrans0.o.text.startup+0xaf86): relocation truncated to fit: R_AVR_13_PCREL against `no symbol'

collect2.exe: error: ld returned 1 exit status

i'm using using IDE 1.6.10 with all the libraries needed....but instead i can upload the original iAqua (1.0.4) without problems, i wonder what's/are the reason/s all of sudden. I can't figure it out as well :frown2:


----------



## Wolfire18

J.OWL said:


> I was receiving the same error. It took me a while to start unraveling the issue. "ld" is a linker error, which in a way means the arduino software can't pull together the information the code calls for because there are too many broken links within it. If you turn on verbose in the preferences it will show errors in orange. If you receive enough errors the linker "ld" will crash, the 1 exit means that 1 .exe failed and caused the exit. What it doesn't tell you is how many errors happened before that .exe crashed.
> 
> I believe I tried everything probably like you have. I tried every version of the Arduino IDE software from 1.0.6 all the way up to 1.6.14, the error displayed differently but it was still there. I loaded every version of the libraries I could find and I still could not make it work. I finally decided to start trying to debug the linker errors. BTW I tried to run the original IAqua 1.0.4 and it had the same error in 1.6.13.
> 
> I was just able to get mine to fully load today. I haven't had time to test anything to be certain the changes didn't cause unwanted results. I can e-mail the zip file for further debugging if someone would like.
> 
> 
> C:\Users\azell\AppData\Local\Temp\cc96OXwz.ltrans0.ltrans.o: In function `main':
> 
> cc96OXwz.ltrans0.o.text.startup+0xaf84): relocation truncated to fit: R_AVR_13_PCREL against `no symbol'
> 
> collect2.exe: error: ld returned 1 exit status
> 
> exit status 1
> Error compiling for board Arduino/Genuino Mega or Mega 2560.


same problem here (i guess?) when trying to upload MrAqua 2.3.6:

C:\Users\****\AppData\Local\Temp\cc9jLYNQ.ltrans0.ltrans.o: In function `main':

cc9jLYNQ.ltrans0.o.text.startup+0xaf86): relocation truncated to fit: R_AVR_13_PCREL against `no symbol'

collect2.exe: error: ld returned 1 exit status

i'm using using IDE 1.6.10 with all the libraries needed....but instead i can upload the original iAqua (1.0.4) without problems, i wonder what's the reason all of suddem. I cant figure it out as well :frown2:


----------



## sedimalko

I want to ask you whether you can change the menu with the remote control from another location? 
For example by, internet - internet shield, Teamviewer, web interface, somebody application or etc...
*It will be a really good solution for many users.*


----------



## mistergreen

sedimalko said:


> I want to ask you whether you can change the menu with the remote control from another location?
> For example by, internet - internet shield, Teamviewer, web interface, somebody application or etc...
> *It will be a really good solution for many users.*


It wasn't built for that but you can use my code for that
https://github.com/mistergreen/WAAC


Sent from my iPad using Tapatalk HD


----------



## Stanislav

Hello,
a lot of work, I saw a lot of that. and you can see the scheme podlyuchniya all this and what kind of light used for aquarium lighting.


----------



## AgMa

Hi,
Could you please confirm if this tft (evil-bay item 152335359088) is ok for this project?
It's described for arduino uno in the description.
Thanks...


----------



## MrMan

AgMa said:


> Hi,
> Could you please confirm if this tft (evil-bay item 152335359088) is ok for this project?
> It's described for arduino uno in the description.
> Thanks...


Looks like the right one. If you're building the original iAqua you'll need a tft shield as well (connects the LCD to your Mega).


----------



## AgMa

MrMan said:


> Looks like the right one. If you're building the original iAqua you'll need a tft shield as well (connects the LCD to your Mega).


Thanks for your answer!
No, I'm going to use your code. Is there any difference (for the tft) between original and your code?
I mean why I need tft shield if I'm building the original one? Can I use your code with the tft shield I've already ordered? Or I need only same pcb as yours?
Fyi I have already ordered elecfreaks v2.2 shield.


----------



## VHRCH

Hi every body

I have been follow this topic like a year, and to me is easy to understand the way you explained soltions for troubles. I am allmost finished my controller, and I already programm my arduino mega, I have to say, I wasn´t easy because I had problem programming it, and looking for why fail, fortunately I checked anwers and I found the troubles, now I think this weekend I'm going to check my Iaqua controller I hope don´t have any troubles... I post some








of my controller

Pd. I'm not good welding LOL


----------



## ThiagoAndreGoss

Hello everyone, I need a help, I installed the code and everything was perfect, but the touch is not working, but one note is that the touch in other projects works, but I love the iAqua project and I really want to use iAqua 

Can someone help me?


----------



## MrMan

ThiagoAndreGoss said:


> Hello everyone, I need a help, I installed the code and everything was perfect, but the touch is not working, but one note is that the touch in other projects works, but I love the iAqua project and I really want to use iAqua
> 
> Can someone help me?


If you read through the thread you'll see that the iAqua uses different pins for touch. So you need to modify your tft shield as shown by Anotherhobby somewhere earlier in the thread.

Sent from my Nexus 6P using Tapatalk


----------



## ThiagoAndreGoss

MrMan said:


> If you read through the thread you'll see that the iAqua uses different pins for touch. So you need to modify your tft shield as shown by Anotherhobby somewhere earlier in the thread.
> 
> Sent from my Nexus 6P using Tapatalk



Thanks, I'll look for the changes in the pins


----------



## fietsenrex

Well after a year the touch crapped out, got it running by cleaning the dusty prints.
Now a year after that and some more cleanings it has stopped completely...
Screen works everything shows up properly
It now only responds sometimes..

Any thoughts on how I could fix it?


Edit:
Got the touch working for now but some images show up corupted... 
it is always the same ones that appear corrupted, due to the design of my build I have no easy acces to the SD so that will have to wait.


----------



## ThiagoAndreGoss

MrMan said:


> If you read through the thread you'll see that the iAqua uses different pins for touch. So you need to modify your tft shield as shown by Anotherhobby somewhere earlier in the thread.
> 
> Sent from my Nexus 6P using Tapatalk



Thanks Friend, I found and made the pins pins 6-2 to 46-42, working the touch correctly, but now I have an error, when I enter the second option of feeding the screen back to the home and ican not touch anymore on the screen; can help me again?


----------



## Matchless

> Edit:
> Got the touch working for now but some images show up corupted...
> it is always the same ones that appear corrupted, due to the design of my build I have no easy acces to the SD so that will have to wait.


Seems that you have the same problem I have (sometimes).

When image is corrupted the Iaqua hangs, only a hardware reset solves the problem.

Could it be the limit of the read/write cycles of a SD card? Are the pictures every time loaded if the page or a symbol is refreshed?


----------



## AgMa

Hi,
Can someone confirm if I can use MrMan's code with the tft shield of first page (elecfreaks)?
Thanks!


----------



## MrMan

AgMa said:


> Hi,
> Can someone confirm if I can use MrMan's code with the tft shield of first page (elecfreaks)?
> Thanks!


Yes, my code uses the same pins as the original software, plus a couple extra (ie fan control, controller temp, float switches)



Matchless said:


> Seems that you have the same problem I have (sometimes).
> 
> When image is corrupted the Iaqua hangs, only a hardware reset solves the problem.
> 
> Could it be the limit of the read/write cycles of a SD card? Are the pictures every time loaded if the page or a symbol is refreshed?


Are the images corrupting when a power outlet turns on/off? Or when you load a new screen? I seem to recall there being a couple problems earlier in the thread of corrupted images when turning an outlet on which was due to EMI. I'm using isolated relays (Separate power supply to properly isolate) so i never saw this.

On another note, I'm working on a new version which adds a watchdog timer to reset the device if it hangs, I'll try to upload it soon so you can test it out since you're having hanging issues.


----------



## AgMa

MrMan said:


> Yes, my code uses the same pins as the original software, plus a couple extra (ie fan control, controller temp, float switches)


Ok thanks.
Why doesn't anyone use SS relays instead of the EM?


----------



## fietsenrex

Got it sorted.

Some symbols showed up scrambled as well, so it "couldn't" be the SD..
Some further cleaning and fidling with jumpers everything runs smoothly again.

As for the MrMan shield.. still nowhere near working..
Only thing that happens is the 12-5v stepdown getting really hot and only spitting out 1v..
Can't find a short anywhere...


----------



## ThiagoAndreGoss

Hi everyone, I'm doing the BC337 for brightness control but it is not working, can anyone help me?

Emitter: 11pwm (Jumped with 5V)
Base: 10pwm (Resistor 1k jumped 8pwm with header pin)
Collector 09pwm (Jumped A0)

I need help!


----------



## Lis610

Having the same problem. 
The pump is running when pressing the Test icon, but nothing happened when reached specific scheduled time.
Lights schedule is working.
Number of Alarms is 50
Where could be a problem?
I'm using code MrAqua v 2.3.6.


----------



## fietsenrex

ThiagoAndreGoss said:


> Hi everyone, I'm doing the BC337 for brightness control but it is not working, can anyone help me?
> 
> Emitter: 11pwm (Jumped with 5V)
> Base: 10pwm (Resistor 1k jumped 8pwm with header pin)
> Collector 09pwm (Jumped A0)
> 
> I need help!


It is not working here either but I didn't mind so I cannot help you 


Lis610 said:


> Having the same problem.
> The pump is running when pressing the Test icon, but nothing happened when reached specific scheduled time.
> Lights schedule is working.
> Number of Alarms is 50
> Where could be a problem?
> I'm using code MrAqua v 2.3.6.


Think you could set the alarms as high as 250 but you probably won't need it that high.


----------



## Matchless

MrMan said:


> Yes, my code uses the same pins as the original software, plus a couple extra (ie fan control, controller temp, float switches)
> 
> 
> 
> Are the images corrupting when a power outlet turns on/off? Or when you load a new screen? I seem to recall there being a couple problems earlier in the thread of corrupted images when turning an outlet on which was due to EMI. I'm using isolated relays (Separate power supply to properly isolate) so i never saw this.
> 
> On another note, I'm working on a new version which adds a watchdog timer to reset the device if it hangs, I'll try to upload it soon so you can test it out since you're having hanging issues.


The hang-up apears when I load a new screen. The strange thing is that the screen that hangs up the arduino is random and the image looks like video noise. Only the image not the hole screen.


----------



## ThiagoAndreGoss

thiagoandregoss said:


> hi everyone, i'm doing the bc337 for brightness control but it is not working, can anyone help me?
> 
> Emitter: 11pwm (jumped with 5v)
> base: 10pwm (resistor 1k jumped 8pwm with header pin)
> collector 09pwm (jumped a0)
> 
> i need help!




solution is it !!!


----------



## Lis610

*Dosing Pump*

AlarmMacros.not triggering. Resolved.


----------



## Heiwald

Has anyone gotten this project to work using the ili9341 screen?
Screen is labeled TFT_320QVT_9341 I’ve tried editing the libraries provided in the original post as well as the updated ones with no luck. Can’t get anything but a blank screen (white, followed by black after a few seconds...)

I have everything ready for completing this project, so I cannot explain with words just how frustrating this is.

Any help would be greatly appreciated!


----------



## jeffkrol

Might help..
TFT_320QVT_9341 only white screen


----------



## artbski

Can I use Low level trigger (SSR) board?


----------



## artbski

Can I use Low Level Trigger (SSR) ?


----------



## artbski

Lis610 said:


> AlarmMacros.not triggering. Resolved.


uncoment lines:

Alarm.delay(pumpTime); // delay while the motor runs
analogWrite(dosingPump1, 0);


----------



## artbski

my today problem is , I don' t now where is a mistake


----------



## ThiagoAndreGoss

artbski said:


> my today problem is , I don' t now where is a mistake


I also have this and also do not know how to solve it, I realize that the watchdog keeps restarting but still does not solve this problem, I just turn the power off and on again and everything works correctly.


----------



## MrMan

artbski said:


> my today problem is , I don' t now where is a mistake


I'm not sure if it's an issue or not but your screen appears to be different from what everyone else is using. The header has less pins, and does it have an SD card slot still? I'd suggest trying examples from utft and utft_tinyFAT to see if you can get your screen working with the simple examples.


----------



## ThiagoAndreGoss

MrMan said:


> I'm not sure if it's an issue or not but your screen appears to be different from what everyone else is using. The header has less pins, and does it have an SD card slot still? I'd suggest trying examples from utft and utft_tinyFAT to see if you can get your screen working with the simple examples.



My screen has 40 pins and our friend has less pins, but I even have 40 pins sometimes I have the same error as his (my screen has SD behind)

Restarting the system it resolves, but I have no idea what it could be, I will try to clean the EEPROM


----------



## artbski

Do you have any transistor for brightness control? Remove this element and see what happens.


----------



## ThiagoAndreGoss

artbski said:


> Do you have any transistor for brightness control? Remove this element and see what happens.


Yes, Transitor BC337!!!!


----------



## artbski

remove this, connect brightness directly to the Vcc and Gnd and wait for results


----------



## AgMa

@MrMan
In your code, I see:
_// MrAqua v2.4.0
// -Update auto-dimming to use an idle after x minutes timer instead of reading ambient light_

That means that auto brightness is not working in your code?


----------



## MrMan

AgMa said:


> @MrMan
> In your code, I see:
> _// MrAqua v2.4.0
> // -Update auto-dimming to use an idle after x minutes timer instead of reading ambient light_
> 
> That means that auto brightness is not working in your code?


Yup, it never worked that well for me so I had it disabled. Now it just dims after not touching it for a while.


----------



## artbski

what is a functionality of serial2 in new version of soft?


----------



## MrMan

My plan is to build an led unit and send serial commands wirelessly instead of running the pwm wires across, to reduce the number of cables in my stand. 

Sent from my Nexus 6P using Tapatalk


----------



## artbski

yes, it's a good idea. I think that the bluetooth connection will be good solution to control from PC or android phone


----------



## Matchless

MrMan said:


> My plan is to build an led unit and send serial commands wirelessly instead of running the pwm wires across, to reduce the number of cables in my stand.
> 
> Sent from my Nexus 6P using Tapatalk


I use I2C and there are only 4 wires running from the hood. I use the PCA chip and can control 16 PWM channels.

All LED drivers and 12->5 volt regulator are in the hood.


----------



## Heiwald

jeffkrol said:


> Might help..
> TFT_320QVT_9341 only white screen


I figured out the real issue. My controller won’t read the SD card and thus doesn’t initialize.
SD card is formatted as FAT(16) with 64 clusters.

As it is now, when I power up the controller, then the screen is just black. If I then remove the SD card then the home screen appears without the pictures from the SD card.
Nothing happens if I reinsert the card after.

Any suggestions?


----------



## jeffkrol

Not from me.. not really my thing BUT going back to the orig..


> SD Card Reader (*one on screen didn't work*): $3 on amazon $3 on amazon
> <2 GB SD Card: Under $5, but I had one


Only other guess is where the images are on the card root or folder? No clue if it makes a difference but sometimes does..


----------



## MrMan

jeffkrol said:


> Not from me.. not really my thing BUT going back to the orig..
> 
> 
> Only other guess is where the images are on the card root or folder? No clue if it makes a difference but sometimes does..


Yup, the raw images need to be directly on the drive, not in any folders. I think some SD cards have issues, I've got two and one works on my controller I have running and the other works on my backup controller i use to test software but i can't swap them. Maybe try getting another card? I believe for the iAqua software it needs to be less than 4GB as well.


----------



## lovingHDTV

I had a lot of issues initially with images getting corrupted. It took three tries before I found an sdcard that worked reliably.

Sent from my Nexus 5 using Tapatalk


----------



## VHRCH

Hi every body...

Today arrived my 5 PCBs, It look like O2Surplus design, just it is 10x10cm and I take out 2 of the 3 sensors of pH, Or, DO. So I hope it does not have any problem at the vias. There is a lot of difference between what I did and what I had to do : )

Have a nice day


----------



## ThiagoAndreGoss

The auto dim using ambient light sensor is working? Someone made it work?


----------



## AgMa

Guys, I have an SSD1289 3.2" TFT and I can't make touch work. I have Elecfreaks v2.2

It does not even recognize my stylus for the calibration sketch.
Is the TFT touch damaged?


----------



## ThiagoAndreGoss

agma said:


> guys, i have an ssd1289 3.2" tft and i can't make touch work. I have elecfreaks v2.2
> 
> it does not even recognize my stylus for the calibration sketch.
> Is the tft touch damaged?




jumper pin [2],[3],[4],[5],[6] >>>> [42],[43],[44],[45],[46]


----------



## AgMa

AgMa said:


> Guys, I have an SSD1289 3.2" TFT and I can't make touch work. I have Elecfreaks v2.2
> 
> *It does not even recognize my stylus for the calibration sketch.*
> Is the TFT touch damaged?


The TFT is a sainsmart TFT_320QVT.


----------



## ThiagoAndreGoss

AgMa said:


> The TFT is a sainsmart TFT_320QVT.



Check your code!!



Code:


UTouch myTouch(46,45,44,43,42);  // start up an instance of for touch
//UTouch  myTouch(6, 5, 4, 3, 2);


----------



## AgMa

ThiagoAndreGoss said:


> Check your code!!
> 
> 
> 
> Code:
> 
> 
> UTouch myTouch(46,45,44,43,42);  // start up an instance of for touch
> //UTouch  myTouch(6, 5, 4, 3, 2);


Yeah, I had uncomment pins 6-2 for my stock TFT shield but it was not working.
Finally after several tries, got it working but I didn't do anything different from what I was doing! Strange...
It's funny how sensitive is the Arduino as regard the wires, sd cards and pin contacts. I had a 2gb fat32 sd card and every image was corrupted. I tried a different 8gb fat32 sd and everything now works great!
Now I can see that touch is working because if I touch the screen, I can see the controller's light flashing, but I can't get into any setting. Maybe needs RTC to be attached?


----------



## ThiagoAndreGoss

AgMa said:


> Yeah, I had uncomment pins 6-2 for my stock TFT shield but it was not working.
> Finally after several tries, got it working but I didn't do anything different from what I was doing! Strange...
> It's funny how sensitive is the Arduino as regard the wires, sd cards and pin contacts. I had a 2gb fat32 sd card and every image was corrupted. I tried a different 8gb fat32 sd and everything now works great!
> Now I can see that touch is working because if I touch the screen, I can see the controller's light flashing, but I can't get into any setting. Maybe needs RTC to be attached?


Look at a shield link with the TFT (red line)


----------



## ThiagoAndreGoss

ThiagoAndreGoss said:


> Look at a shield link with the TFT (red line)




OR

Look Code:

// Set up UTFT...
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino 2009/Uno/Leonardo shield : <display model>,19,18,17,16
// Standard Arduino Mega/Due shield : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Due : <display model>,25,26,27,28
// Standard chipKit Uno32/uC32 : <display model>,34,35,36,37
// Standard chipKit Max32 : <display model>,82,83,84,85
// AquaLEDSource All in One Super Screw Shield : <display model>,82,83,84,85
//
// Remember to change the model parameter to suit your display module!
UTFT myGLCD(CTE70,38,39,40,41); <<<<<<<<<<< CHANGE IT >>>>>>>>>>>> UTFT myGLCD(*ITDB32WC*,38,39,40,41);


----------



## VHRCH

AgMa said:


> Yeah, I had uncomment pins 6-2 for my stock TFT shield but it was not working.
> Finally after several tries, got it working but I didn't do anything different from what I was doing! Strange...
> It's funny how sensitive is the Arduino as regard the wires, sd cards and pin contacts. I had a 2gb fat32 sd card and every image was corrupted. I tried a different 8gb fat32 sd and everything now works great!
> Now I can see that touch is working because if I touch the screen, I can see the controller's light flashing, but I can't get into any setting. Maybe needs RTC to be attached?


Change the format of your SD to FAT16 as AnotherHobby wrote: the SD card library being used only supports FAT16, which means no bigger than a 2 GB card. You'll need to get the correct card (2 GB or less) and make sure it's formatted FAT16. :wink2:


----------



## AgMa

VHRCH said:


> Change the format of your SD to FAT16 as AnotherHobby wrote: the SD card library being used only supports FAT16, which means no bigger than a 2 GB card. You'll need to get the correct card (2 GB or less) and make sure it's formatted FAT16. :wink2:


Why?Now it's 8gb fat32 and works perfect.
Also I'm using MrMan's code which is using sdfat and utft_sdraw libraries instead of tinyfat.


----------



## fietsenrex

Well, I swapped out the buffer IC's.
And nothing happens..
The screen just remains white and is flickering
The LDO remains cool
If I put on the screen backwards it does some things, but the background remains white, colors are off quite a bit.
But the LDO do get hot, voltage remains present and sufficiënt.

I use the mrman shield with the original software to test this out

So guess the IC's are faulty or improperly soldered? 
Guess plan B will be soldering on headers and ordering a display shield..


----------



## fietsenrex

Got some progress, still no touch and it reboots sometimes.
5v LDO gets hot and colors are still off..


----------



## BettaBettas

idk what anything in this thread is but it looks damn cool!


----------



## MrMan

fietsenrex said:


> Got some progress, still no touch and it reboots sometimes.
> 5v LDO gets hot and colors are still off..


You're using a smaller LDO than what it was designed for, should be a D2PAK not a smaller DPAK, would explain some of the heat issues. This is the correct way to hook it up (backwards of normal tft shields i know :icon_cry:, i regret doing it that way). I'm not sure if the screen could have been damaged from connecting it backwards or not...

Have you tried running the normal utft example programs to see if they also show the colors being off?

Bump:


----------



## fietsenrex

Well i used the LDO dk supplied according to the BOM, still need to fit the heatsinks..

As for the screen, it runs fine on the old Iaqua hardware.
I can try the utft example this evening and see what happens


----------



## fietsenrex

Could it be that the LDO isn't powerfull enough to power all the IC's? 
Voltage doesn't drop with the screen attached.. 
5v bus is 5.1v and the 3.3v bus is 3.3V
So could it be that the current requirement isn't met?


----------



## MrMan

fietsenrex said:


> Could it be that the LDO isn't powerfull enough to power all the IC's?
> Voltage doesn't drop with the screen attached..
> 5v bus is 5.1v and the 3.3v bus is 3.3V
> So could it be that the current requirement isn't met?


My bad on the part number, not sure how that happened since the schematic has the correct one. The ICs don't draw much current compared to the screen so i doubt that's a problem. If the voltage isn't dropping out you're good as is, it'll just get a bit hotter than the larger device. If you have a flux pen I've had good success putting some extra flux on the pins and touching each pin with a really fine tip on the soldering iron. They're a tricky part to hand solder

Sent from my Nexus 6P using Tapatalk


----------



## fietsenrex

Yup really hard..
I don't have a flux pen, I use resincore solder with lead. 
I just solder it all together and remove the excess solder with desoldering wire.
Worked magic on the second round, went from nothing happening to something happening where I'm currently at.


----------



## Matchless

fietsenrex said:


> Could it be that the LDO isn't powerfull enough to power all the IC's?
> Voltage doesn't drop with the screen attached..
> 5v bus is 5.1v and the 3.3v bus is 3.3V
> So could it be that the current requirement isn't met?


 Sounds like a dead screen. Can you feel if the screen is getting hot? especially the side where the flatcable is comming out. On that part of the screen the tft controller chip is located. But hopefully one of the buffer chips on the shield is not working correctly. the buffer chips works as a level convertor(5 volt to 3.3 volt and 3.3 volt to 5 volt).These buffer chips will give (if one of the chips are faulty) a wrong voltage to the tft and the tft and regulator will getting hot and eventualy die.


----------



## MrMan

Matchless said:


> Sounds like a dead screen. Can you feel if the screen is getting hot? especially the side where the flatcable is comming out. On that part of the screen the tft controller chip is located. But hopefully one of the buffer chips on the shield is not working correctly. the buffer chips works as a level convertor(5 volt to 3.3 volt and 3.3 volt to 5 volt).These buffer chips will give (if one of the chips are faulty) a wrong voltage to the tft and the tft and regulator will getting hot and eventualy die.


He did mention that the screen works with the original iAqua hardware, which i assume means a tft shield on a mega. A single pin on one of the data lines can cause a lot of problems so it just takes one short or no connect on a buffer IC to cause problems.

Sent from my Nexus 6P using Tapatalk


----------



## fietsenrex

Does a faulty ic cause random disfunction on the screen?
Becuase some of the images load poperly, and some are "tilted" but on the location of the "tilted" image the text shows up fine.
And becuase it works on the old hardware the screen and SD seem to be fine


----------



## Matchless

fietsenrex said:


> Does a faulty ic cause random disfunction on the screen?


 Yes. The signals from the tft are disrupted if U6 is defective. The signals (tft out, tft IRQ and sd card out) from tft to processor are faulty. If the processor can't get the right signals than the proc cannot send the right data.


----------



## DigityDog70

I just saw this thread, I use a RasberryPi for brewing beer and a few other things and have considered putting something together for my tanks.

Let me just ask this? In all due respect. Is it worth reading this entire thread (1729 posts) if a person wanted to get something like this going or is there a cliff notes version and or is there a Journal available?

I will definitely be creating something, most likely using a RasberryPi. There's an app. called brewtroller for brewing beer that could be used as a springboard to engineer something for Aquariums. If you haven't already, it might be fun to check out what brewtroller is doing. They share all the notes. Just do a search on it.


----------



## fietsenrex

DigityDog70 said:


> Let me just ask this? In all due respect. Is it worth reading this entire thread (1729 posts) if a person wanted to get something like this going or is there a cliff notes version and or is there a Journal available?


first 10 pages or so are all you need to build one


----------



## artbski

Please check if the light is in the changing mode and enter the settings->light modes menu.
The progress of the light changing is ended. is this correct?


----------



## AgMa

Guys, do I have to do something else before the code loading, to make touch working?
I can't make it work and I have uncomment the correct pins from the code for my shield (6-2).
Edit:
Oops, I saw the fritzing diagram again and I realized that pins 4-7 are used for RGBW leds.
I don't have leds. What do I have to change in the code to make touch working with 6-2 pins like stock?
I think a lot of code!?


----------



## rodoselada

Guys how I can add 2 more channel of light in code or if Ryan could add.

To me it works perfectly for almost a year 
Thanks again Ryan.


----------



## Matchless

rodoselada said:


> Guys how I can add 2 more channel of light in code or if Ryan could add.
> 
> To me it works perfectly for almost a year
> Thanks again Ryan.


 You can look at my changed code. I have a total of 9 light channels. But you have to take out that part or change some arduino pins.


----------



## MrMan

rodoselada said:


> Guys how I can add 2 more channel of light in code or if Ryan could add.
> 
> To me it works perfectly for almost a year
> Thanks again Ryan.


You can modify the RGBW struct to add chan7/chan8 but you'll have to update quite a few other parts of the code to use them. You could pretty much just search through the code for ".chan1" and copy the code for 7/8. The light screen and touch case will have to be updated to have 8 bargraphs, same for the bargraph color screen.


----------



## AgMa

I finally managed to get touch working, but now there is another problem.
I bought an 8 channel 5v low level trigger solid state relay, but it works in reverse. When I choose to turn off something, it turns on and the opposite.
Is there something I'm missing?


----------



## MrMan

AgMa said:


> I finally managed to get touch working, but now there is another problem.
> I bought an 8 channel 5v low level trigger solid state relay, but it works in reverse. When I choose to turn off something, it turns on and the opposite.
> Is there something I'm missing?


The "optically isolated" relay boards work in reverse, just how it is. You can either change the code or do what I did and just use the other contacts (normally closed contacts). I think this is better anyway since if the controller were to die the default state is to have the equipment on (good for heater/filter, less so for co2).

http://arduino-info.wikispaces.com/RelayIsolation


----------



## artbski

You must looking for High Level Trigger


----------



## rodoselada

Thanks a lot guys, I try to modify it, it will be really hard because I have never written code.

keep in touch


----------



## artbski

Please let me know, what's your settings for light-1 always power on and for night light.


----------



## fietsenrex

Well.. still nothing...
Got something on the screen, but no touch.
Using the calibration sketch I finaly got it calibrated, using quickpaint sketch I have verified that it is properly calibrated.
The 5v LDO is replaced for a bigger one, arduino is replaced due to a short somewhere in the atmega chip itself.

Still the LDO gets warm and it's still not working.
With some help of matchless I got the buffer IC's verified so they appear to work correctly.


----------



## MrMan

fietsenrex said:


> Well.. still nothing...
> Got something on the screen, but no touch.
> Using the calibration sketch I finaly got it calibrated, using quickpaint sketch I have verified that it is properly calibrated.
> The 5v LDO is replaced for a bigger one, arduino is replaced due to a short somewhere in the atmega chip itself.
> 
> Still the LDO gets warm and it's still not working.
> With some help of matchless I got the buffer IC's verified so they appear to work correctly.


Don't you need touch working to calibrate it? Does touch work with the examples but not with the controller code?


----------



## fietsenrex

MrMan said:


> fietsenrex said:
> 
> 
> 
> Well.. still nothing...
> Got something on the screen, but no touch.
> Using the calibration sketch I finaly got it calibrated, using quickpaint sketch I have verified that it is properly calibrated.
> The 5v LDO is replaced for a bigger one, arduino is replaced due to a short somewhere in the atmega chip itself.
> 
> Still the LDO gets warm and it's still not working.
> With some help of matchless I got the buffer IC's verified so they appear to work correctly.
> 
> 
> 
> Don't you need touch working to calibrate it? Does touch work with the examples but not with the controller code?
Click to expand...

Correct, it works with the example codes but not with the Iaqua sketch.


----------



## MrMan

fietsenrex said:


> Correct, it works with the example codes but not with the Iaqua sketch.


That seems really weird... Both using the same shield/lcd? Both the MrAqua code and UTouch example are using the same UTouch initialization? (ie. UTouch myTouch(46,45,44,43,42); )


----------



## fietsenrex

Yup, didn't change a thing in the sketch so it should all be the same.
I'll take a look at it this evening


----------



## fietsenrex

got the library's uploaded on my google drive.
https://drive.google.com/file/d/0B3K1VIsKT3MFUDJTN21VdVoySnM/view?usp=sharing

everything is the same, but it doesn't work.

LDO still get's pretty hot if you ask me..
resistance between 5V and GND is about 1,2K doesn't look like a short...


----------



## fietsenrex

switched from IDE 1.0.6 to 1.6.1 and I got it running now 
going to rewire and reinstall everything this Easter weekend


----------



## MrMan

fietsenrex said:


> switched from IDE 1.0.6 to 1.6.1 and I got it running now
> going to rewire and reinstall everything this Easter weekend


Awesome! Weird that caused touch to not work with iAqua software but the touch examples still worked... That's software for ya!


----------



## fietsenrex

Yup.. 
Think it was 1.5.8 that didn't accept the IR library's...
Why is a mysteri but atleast it works now.


----------



## Matchless

MrMan said:


> Awesome! Weird that caused touch to not work with iAqua software but the touch examples still worked... That's software for ya!


I knew that this could be a problem. The arduino IDE changes but the libraries stays the same.
That is asking for troubles.
Explanation is that the touch example is written in an older version and the Iaqua code in 1.6.1
The code in Iaqua uses commando's that are not recognised in the 1.0.6 library.

But good to hear that all is working now :smile2:


----------



## fietsenrex

Got everything fitted.
Lights and relays are working (not tested on schedule) but the dosing pumps aren't working.
So I can't calibrate them and can't use them..
Also my screen flickers and randomly dims although my auto brightness is disabled.


----------



## MrMan

fietsenrex said:


> Got everything fitted.
> Lights and relays are working (not tested on schedule) but the dosing pumps aren't working.
> So I can't calibrate them and can't use them..
> Also my screen flickers and randomly dims although my auto brightness is disabled.


Do you have a DMM? Could check the Mega pins to make sure they are going high when you hit the 'test' button, also try wiring 12V directly to the pumps. Process of elimination to find the problem, if the pins go high and the pumps work with 12V the problem is either U12 or a connection issue.

I have the screen flickering/dimming as well, I suspect some large caps on the power pins of the screen itself would help this.


----------



## fietsenrex

DMM?

there is something hapening, but not much.
got to the point where there is 11,5V on the + of the dosing pump as well as on the -
pushed the test button, the + stays at 11.5, the - drops to 9-10,5V
so I think the arduino is doing its work?

EDIT:
I use a 150W 12V led power supply, maybe that is the problem.
when I connect the wires to the + and - of the powerplug that is feeding the shield the pump runs but the arduino reboots, so I think the voltage just drops out and the power supply doesn't respond fast enough to the demand
also without the pump fitted, on the + and - of the pump, there is a difference of about 10V if I hit the test button
with the pump fitted there is only 1,5V difference..


----------



## TankedJay

Very futuristic awesome idea!! I love it


----------



## MrMan

fietsenrex said:


> DMM?
> 
> there is something hapening, but not much.
> got to the point where there is 11,5V on the + of the dosing pump as well as on the -
> pushed the test button, the + stays at 11.5, the - drops to 9-10,5V
> so I think the arduino is doing its work?
> 
> EDIT:
> I use a 150W 12V led power supply, maybe that is the problem.
> when I connect the wires to the + and - of the powerplug that is feeding the shield the pump runs but the arduino reboots, so I think the voltage just drops out and the power supply doesn't respond fast enough to the demand
> also without the pump fitted, on the + and - of the pump, there is a difference of about 10V if I hit the test button
> with the pump fitted there is only 1,5V difference..


DMM = Digital Multi-meter (ie what you are probably using to measure voltage)

It sounds like it is working properly without the pump connected (the 10V drop). The arduino only resets if the pump is connected right?

Can you measure the current draw of the pump at 12V? They're generally 200-300mA which should be no problem for the ULN, if that is the case then maybe like you said the power supply is dropping out momentarily. I believe there is a 47uF capacitor on the 12V rail near the pumps, could try adding some extra capacitance in parallel to see if it helps.


----------



## fietsenrex

Think I can get my hands on some caps..
I can swap the 47uF for a 110uF to see if it helps..

But to give you an idea, I just pushed the wires of the pump on the 12v connector on the shield while it was running, almost instantly the controller turns to black and reboots.
So bigger cap should work.

Would a cap on the pump itself also help?

By the way, got the screen in a fixed position and it stays the same brightness, so I think the problem is in the headers/ribbon cable


----------



## Matchless

Try a different power supply.

A led power supply can have more ripple . That can give problems. Or you can measure the power with an osciloscope.


----------



## fietsenrex

Different power supply, same problem 

But if the capacitor is the cuase of all this, would a 12v battery in parallel to the powersupply also solve this?
Not a permanent solution, just to test this.


----------



## Matchless

Why using the battery AND powersupply for testing?

Try without the powersupply, only the battery.

You can also try without D7 connected.


----------



## rodoselada

Hello guys
I have made my own twinstar so I call it, and I want to control it through arduino, the problem I have is writing the code, more precisely with writing on / off times.
An example of the code I used is the one from the relays only that there for 1 second (1000) for 2 seconds e (2000) and so for 30 small uses (30000) or there is another way to declare these times.
The original twinstar is on 1 minute and off 6 minutes how can I write these in small code so it can be controlled. I tried with example from the relays but there you can not use more than 32768 to be converted from milliseconds in seconds or minutes.



About the light channels I did not get out, something is wrong, it does not make the transition from one ramp to another


----------



## MrMan

fietsenrex said:


> Think I can get my hands on some caps..
> I can swap the 47uF for a 110uF to see if it helps..
> 
> But to give you an idea, I just pushed the wires of the pump on the 12v connector on the shield while it was running, almost instantly the controller turns to black and reboots.
> So bigger cap should work.
> 
> Would a cap on the pump itself also help?
> 
> By the way, got the screen in a fixed position and it stays the same brightness, so I think the problem is in the headers/ribbon cable


Can you use your meter to measure the current draw of the pumps? You could also try shorting the input protection diode (just make sure you don't apply power backwards), to make sure the diode isn't preventing the supply from handling the surge of current required by the pump.


----------



## MrMan

rodoselada said:


> Hello guys
> I have made my own twinstar so I call it, and I want to control it through arduino, the problem I have is writing the code, more precisely with writing on / off times.
> An example of the code I used is the one from the relays only that there for 1 second (1000) for 2 seconds e (2000) and so for 30 small uses (30000) or there is another way to declare these times.
> The original twinstar is on 1 minute and off 6 minutes how can I write these in small code so it can be controlled. I tried with example from the relays but there you can not use more than 32768 to be converted from milliseconds in seconds or minutes.
> 
> 
> 
> About the light channels I did not get out, something is wrong, it does not make the transition from one ramp to another


Can you post a photo of your ramp schedule screen and home screen? I know someone else had an issue when they thought the ramp length was off-time (resulting in a ramp >10 hours).


----------



## rodoselada

In the last one changed the time left over to the first picture after i pressed home button


----------



## AgMa

Hi,
@MrMan
What is internal temp code for?
Is it for the temp inside arduino's enclosure?
Also I would like to change heatsink code as I don't have led and make it heater for ato on aux1.
How can I connect the aux1 icon to enable or disable according to the heater (like aquarium heater)?
Thanks.


----------



## MrMan

rodoselada said:


> In the last one changed the time left over to the first picture after i pressed home button


What RTC are you using? Your pictures show a problem at both time since last feeding (only on last pic) and ramp, both of which use the RTC for timing.



AgMa said:


> Hi,
> @MrMan
> What is internal temp code for?
> Is it for the temp inside arduino's enclosure?
> Also I would like to change heatsink code as I don't have led and make it heater for ato on aux1.
> How can I connect the aux1 icon to enable or disable according to the heater (like aquarium heater)?
> Thanks.


Correct, internal temp is for inside the arduino enclosure, and controls fan2. If you wanted to use heatsink temp sensor for ATO instead you could copy the heater screen to use on heatsink settings screen, as well as updating the code in checktemp to control aux1 based on temp and then remove aux1 from the schedule screen.


----------



## rodoselada

I use rtc 1307


----------



## AgMa

MrMan said:


> What RTC are you using? Your pictures show a problem at both time since last feeding (only on last pic) and ramp, both of which use the RTC for timing.
> 
> 
> 
> Correct, internal temp is for inside the arduino enclosure, and controls fan2. If you wanted to use heatsink temp sensor for ATO instead you could copy the heater screen to use on heatsink settings screen, as well as updating the code in checktemp to control aux1 based on temp and then remove aux1 from the schedule screen.


Can I leave aux1 in the schedule screen just in case that will be needed?


----------



## MrMan

AgMa said:


> Can I leave aux1 in the schedule screen just in case that will be needed?


You can do whatever you'd like, could make it so it only turns on aux1 if between certain hours and not over temp or something. Or just leave it there not doing anything.

Sent from my Nexus 6P using Tapatalk


----------



## fietsenrex

hooked up the pumps to an adjustable power supply.
my old pumps "demand" .23A at 12v and .22A at 10V
my new (and unused) pump uses .37A at 12V and .38A at 10V

battery died on me, so I charging it as I type.
as for the protection diode, I need to solder on a jumper wire, but first the battery test since I'm the only one with these problems I do suspect the power supply.

although it was running in the old configuration with the old hardware as AH build it.

also found out that they "only" require 4V to run, so I would be very happy with just half power on the dosing pumps...


----------



## AgMa

Does anyone know how the timer on aux1 and aux2 works?
Can I schedule for 1 day of the week through the timer? I want aux1 to be working only one day/week.


----------



## MrMan

AgMa said:


> Does anyone know how the timer on aux1 and aux2 works?
> Can I schedule for 1 day of the week through the timer? I want aux1 to be working only one day/week.


Only the dosing pumps can be scheduled by day, the regular outlets work based on the schedule input every day of the week.


----------



## AgMa

MrMan said:


> Only the dosing pumps can be scheduled by day, the regular outlets work based on the schedule input every day of the week.


Thanks again


----------



## engi

Hi MrMan,

In your version, is there a reason to plug the sensors on two differents pins ?


----------



## MrMan

engi said:


> Hi MrMan,
> 
> In your version, is there a reason to plug the sensors on two differents pins ?


There were spare pins and it seemed easier than dealing with finding addresses of the probes and assigning them to be water or heatsink sensors.


----------



## sgianim

Hi, i have one problem:
I build the #O2surplus shield and i want to connect pwm output to ldd drivers. But it seems not to work so well (led not start from 0 and it seems transitions not to work).
I check in the 104 code and i change the pin for pwm output to fit with #O2surplus shield but i did not know what to do next (I do not know programming). 
Can can someone help me?
Sorry about my english. Have a nice day.

PS: i watch the youtube settings video and it seems i wrong with set. I will check the setings tomorrow and i'll post the result.


----------



## AgMa

Hi,
Do you know if there is code for the fans to turn on if temp gets over limit?
I can see that there is:
const int fan1pin =A11;
const int fan2pin = A12;

But these are for heatsink and internal temp.
Also I don't see anything related in alarms.ino.


----------



## MrMan

AgMa said:


> Hi,
> Do you know if there is code for the fans to turn on if temp gets over limit?
> I can see that there is:
> const int fan1pin =A11;
> const int fan2pin = A12;
> 
> But these are for heatsink and internal temp.
> Also I don't see anything related in alarms.ino.


Look at "void checkTemp()" to see the fan behaviour. The alarm.ino is only dealing with the alarm library stuff, ie time related. The code is setup to turn fan1 on if the heatsink is too hot and fan2 if the controller is too hot. But you could certainly modify the code to use the fan as a chiller based on water temp.


----------



## engi

> There were spare pins and it seemed easier than dealing with finding addresses of the probes and assigning them to be water or heatsink sensors.


Hi MrMan, thank you for your answer.

Another question :
In your last source code (2.5.1), you write this in the first lines of function setup():


> pinMode(48,OUTPUT);
> digitalWrite(48,HIGH);


What do you plug on pin 48 ?


----------



## AgMa

I always wanted to ask the same!


----------



## fietsenrex

So far still no succes with the dosing pumps..
2 different battery's same problem.
Charged them a bit over 12v, 
as soon as I hook up the 7A battery to the shield it drops to about 10v.
With the 4A battery it drops to about 8V and goes up to about 10v in about a minute.
Voltage on the battery does change as I press the test button on the dosing screen using the 4A battery 
nothing changes using the 7A battery..

Think this rules out my power supply?

Don't know what to do next to be honest.
Is it possible to use a transistor (PNP) to switch on the dosing pump? 

Or do I still need a bigger capacitor?


----------



## MrMan

fietsenrex said:


> So far still no succes with the dosing pumps..
> 2 different battery's same problem.
> Charged them a bit over 12v,
> as soon as I hook up the 7A battery to the shield it drops to about 10v.
> With the 4A battery it drops to about 8V and goes up to about 10v in about a minute.
> Voltage on the battery does change as I press the test button on the dosing screen using the 4A battery
> nothing changes using the 7A battery..
> 
> Think this rules out my power supply?
> 
> Don't know what to do next to be honest.
> Is it possible to use a transistor (PNP) to switch on the dosing pump?
> 
> Or do I still need a bigger capacitor?


A good battery shouldn't drop that much unless you're really overloading it (ie more than a couple amps), but most of the stuff runs on 3.3/5V so should be ok for this test.

You say the voltage changes when you press the test button, how much? Assuming the pump is connected did you measure the voltage at both pins when it's "running"?

You could use a transistor to turn the pumps on, but you'd want an NPN, not PNP. Although the ULN chip is just an npn transistor array so that should already be what you have.


----------



## fietsenrex

Thanks.

Well the battery's are over 10 years old..
Old lead based battery's 
Only other thing I have is 7.4v NIMH or 7.4v lipo..

The controller behaves the same way with the battery.
Just under a 2v drop messured on the pump terminals with the pump fitted.

I'll check if I can get my hands on a DMM that can messure amps..

This isn't working with just volts and ohms..


----------



## Matchless

fietsenrex said:


> Thanks.
> 
> Well the battery's are over 10 years old..
> Old lead based battery's


10Years for lead battery's is way too much. They are ready for the " milieu-park"


----------



## fietsenrex

Yup, but it is the only thing I have..
Used a fluke 111 now to try and messure the current draw.
But it doesn't show a thing..
Got the positive lead in de A so it should be good to go, set it to DC Amps and tried to messure on the power plug (the one powering the shield) 
Or do I need to hook up the fluke in series on one of the power leads?


----------



## MrMan

fietsenrex said:


> Yup, but it is the only thing I have..
> Used a fluke 111 now to try and messure the current draw.
> But it doesn't show a thing..
> Got the positive lead in de A so it should be good to go, set it to DC Amps and tried to messure on the power plug (the one powering the shield)
> Or do I need to hook up the fluke in series on one of the power leads?


Yes, you need to hook up the DMM in series with the source to measure current.

Source+ to DMM+
DMM- to Controller+
Controller- to Source-


----------



## AgMa

engi said:


> Hi MrMan, thank you for your answer.
> 
> Another question :
> In your last source code (2.5.1), you write this in the first lines of function setup():
> 
> pinMode(48,OUTPUT);
> digitalWrite(48,HIGH);
> 
> What do you plug on pin 48 ?


 @MrMan..


----------



## MrMan

AgMa said:


> @MrMan..


Pin 48 isn't used, on my shield it's connected to one of the temp sensor headers but there's no code to use it. Don't remember why it was set high now, probably for debugging something.


----------



## fietsenrex

MrMan said:


> Yes, you need to hook up the DMM in series with the source to measure current.
> 
> Source+ to DMM+
> DMM- to Controller+
> Controller- to Source-


Got it hooked up.
The controller is running on 0,2A 
When i press the test button on the dosingpump it goes up to 0.35A and then drops back to 0.2A

So something is liming the current to the dosingpumps i guess.

Behaviour is the same when using the (old) batterys..


----------



## NguyenVu

can i used this module 12V is the same picture?
Thanks


----------



## MrMan

NguyenVu said:


> can i used this module 12V is the same picture?
> Thanks


That's the same one I'm using.


----------



## engi

Hi,

I'm using MrMan last source code version with a Mega board, a TFT screen shield and 3.2 tft lcd (with sdcard reader).
What pins are reserved to screen, to screen shield, and sdcard ?

TIA,
Nicolas


----------



## AgMa

@MrMan

You say that you have disable auto brightness because it never worked well for you, but I can't find anything commented in the code for auto brightness.
How you have disable it?


----------



## Cuco

ODwyerPW said:


> Really enjoying this thread.
> A few years back beat my head to get the ColdTears Shield, Font IC, SD, 5" and 7" SSD1963 800X480 LCDs and Arduino DUE (similar to MEGA, but ARM3MX8E based with 3.3v I/O) to build a beautiful front end for my project. Looks like Graham over at Arduino.cc has picked up a few forgotten efforts and nailed allot of this for you all.
> 
> I'll be borrowing portions of what you guys are doing here...but with the components I have (Due, 5" LCD, etc..)
> 
> My device will not be a controller per se.... Not yet. I'm focused on doing Temp (several), pH, Conductivity, TDS, Salinity, ORP, Dissolved Oxygen, CO2, CO2 dose pressure, Tank Level, Sump Level, Pump Flow, Water Color, Ambient Air Temp / Humid. Basically allot of measuring and analysis. I have all the pieces.. Just need to get going... Enabling wired Ethernet and WiFi will be important ingredients.
> 
> Really like the Wide Landscape format someone created for the screen.. Can't remember where I found this example.
> Below is my small aluminum enclosure with various pieces parts...


Hi! ODwyerPW!
Do you found a landscape format code? 
I was thinking to use Jarduino, then I have prepared a acrillyc case to my reef using landscape format! Now I found iAqua project and need to adapt this!

Thanks.


----------



## MrMan

AgMa said:


> @MrMan
> 
> You say that you have disable auto brightness because it never worked well for you, but I can't find anything commented in the code for auto brightness.
> How you have disable it?


If you look at the screen settings screen it should say (0=OFF) under auto-dim level. Although my latest version removed it completely and now dims after no button presses after a certain time period.


----------



## AgMa

MrMan said:


> If you look at the screen settings screen it should say (0=OFF) under auto-dim level. Although my latest version removed it completely and now dims after no button presses after a certain time period.


So if I readd it, will it be working again?
Of course with the right hardware.
Do I have to change anything else from the screen menu (for example dim level when touch or autodim seconds)?


----------



## Le Gui

*Thanks...*

Hi everybody!

I'm Guillaume, a french guy that love computers, electronic, and... shrimps!
(sorry for my poor english...)

I have found this thread 2 month ago, what amazing work :icon_eek: !

While I wanted to build a similar project, I decided to try to adapt iAqua to my tank, so....

Thanks Dan Cunningham (AnotherHobby), thanks robsworld78, thanks Ryan Truss (MrAqua) and all the others contributors!

I started with the v2.5.1 of MrAqua (thanks again), this code is pretty cool! :wink2:

I've made my own shield to fit my need (do you think it looks like MrAqua's one? It's normal, I was inspired by it!):
There are 6 outputs with optocouplers for the LED PWM signals








Bottom view (with the PCA9685 SMD):








A view with Arduino Mega:








My mess... 0 :








First launch (dates in french (library modification) and hour in 24h format):








LED WRGB ramp (home made):








I have redraw all the icons to make the texts uniform (note the added MISC button):








For the moment, only 1 more parameter : the possibility to change the PWM frequency in the interface.
Before, PWM freq was "hard stored" in the code (120Hz) and my fish and shrimp were "blinking" on fast movements.
Now, all is visually fixed :smile2: :








The code is working, but I have some graphic improvements to do...

Now I have to debug 2-3 things, and add new stuff to fit perfectly my needs...



Once again, *THANK YOU GUYS FOR THIS WORK !!!* roud:roud:roud:


----------



## fietsenrex

WoW the adjustable PWM is really a nice touch.
I can understand why you want to change it, had some issues with humming LDD's... 
Changing the frequency silinced them


----------



## MrMan

Le Gui said:


> Hi everybody!
> 
> I'm Guillaume, a french guy that love computers, electronic, and... shrimps!
> (sorry for my poor english...)
> 
> I have found this thread 2 month ago, what amazing work :icon_eek: !
> 
> While I wanted to build a similar project, I decided to try to adapt iAqua to my tank, so....
> 
> Thanks Dan Cunningham (AnotherHobby), thanks robsworld78, thanks Ryan Truss (MrAqua) and all the others contributors!
> 
> I started with the v2.5.1 of MrAqua (thanks again), this code is pretty cool! :wink2:
> 
> 
> I have redraw all the icons to make the texts uniform (note the added MISC button):


Looks good! I never even noticed that the text on the icons were different, the last few I did myself with my stellar Paint skills, so no surprise they're different. I think you should change the font of the home screen dock to match your icons, and then upload them all so I can use them :grin2:


----------



## AgMa

My modded version:


----------



## Le Gui

MrMan said:


> Looks good! I never even noticed that the text on the icons were different, the last few I did myself with my stellar Paint skills, so no surprise they're different. I think you should change the font of the home screen dock to match your icons, and then upload them all so I can use them :grin2:


I'm working on it! :wink2:
When finished, I'll post it here so that everyone who want can use it!



AgMa said:


> My modded version:


Nice! Are the dock icons fixed or you can chose in the interface witch icon you want in the dock?


----------



## AgMa

No, they are fixed.
Dock icons were made from @dkatsariotis, credits go to him


----------



## Le Gui

Hi all! :smile2:

I'm back with good news : dock with new fonts is ready!









If you like it, you can download here all pics I have draw:
New font icons
To download : hit the down arrow in the upper right corner of your screen


There are:
-dock 240x66px
-12 icons 48x63px of settings screen (including MISC icon)
-4 round icon 30x30px to replace square ones in "moon" "color" "graph" "misc" screens (upper left corner)
-1 foot icon "reset" for misc screen
-1 square 48x48px PWM icon for the misc screen

Now I am working on "edit" "save" "cancel" "resync" buttons (in LED screen)

If you think there are missing icons with text (ie unused icons for me) : ask me, and I'll draw the icon with same font for you! :wink2:


----------



## mmaksiu

Can you please share the source code?
Best regards.

Bump:


Le Gui said:


> Hi everybody!
> 
> I'm Guillaume, a french guy that love computers, electronic, and... shrimps!
> (sorry for my poor english...)
> 
> I have found this thread 2 month ago, what amazing work :icon_eek: !
> 
> While I wanted to build a similar project, I decided to try to adapt iAqua to my tank, so....
> 
> Thanks Dan Cunningham (AnotherHobby), thanks robsworld78, thanks Ryan Truss (MrAqua) and all the others contributors!
> 
> I started with the v2.5.1 of MrAqua (thanks again), this code is pretty cool! :wink2:
> 
> I've made my own shield to fit my need (do you think it looks like MrAqua's one? It's normal, I was inspired by it!):
> There are 6 outputs with optocouplers for the LED PWM signals
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Bottom view (with the PCA9685 SMD):
> 
> 
> 
> 
> 
> 
> 
> 
> 
> A view with Arduino Mega:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> My mess... 0 :
> 
> 
> 
> 
> 
> 
> 
> 
> 
> First launch (dates in french (library modification) and hour in 24h format):
> 
> 
> 
> 
> 
> 
> 
> 
> 
> LED WRGB ramp (home made):
> 
> 
> 
> 
> 
> 
> 
> 
> 
> I have redraw all the icons to make the texts uniform (note the added MISC button):
> 
> 
> 
> 
> 
> 
> 
> 
> 
> For the moment, only 1 more parameter : the possibility to change the PWM frequency in the interface.
> Before, PWM freq was "hard stored" in the code (120Hz) and my fish and shrimp were "blinking" on fast movements.
> Now, all is visually fixed :smile2: :
> 
> 
> 
> 
> 
> 
> 
> 
> 
> The code is working, but I have some graphic improvements to do...
> 
> Now I have to debug 2-3 things, and add new stuff to fit perfectly my needs...
> 
> 
> 
> Once again, *THANK YOU GUYS FOR THIS WORK !!!* roud:roud:roud:


Can you please share the source code?
Best regards.


----------



## Le Gui

mmaksiu said:


> Can you please share the source code?
> Best regards.


Here is my version of iAqua. It is not finished at this time...
I tried to comment most of my modifications.

You can download it here.

I hope it can help!

Otherwise : have some of you tried my icons? Are they readable enough?
Thanks for your returns! :smile:


----------



## Matchless

How did you made the icons? I want to build a PH function.


----------



## Le Gui

Matchless said:


> How did you made the icons? I want to build a PH function.


Hi!
I've just made a short tuto for making your own icons.
Just download this archive, and read the readme file!

I hope it can help! :smile2:


----------



## mmaksiu

Thank you very much for the code. I will test it in the near future. The icons are readable enough, but I have a 3.5 "tft 320x480 and I paint the icons on x65


----------



## fietsenrex

Ugh..
A new problem developed last weekend..
My screen was 100% black, fiddling with the wires didn't do a thing.
So i rebooted it and it got stuck powercycling...
I left it off for some time and booted up flawless.
Yesterday the screen was black again, treid to reboot but failed..
It is now permanent stuck in a power cycle, it was off a full night and this morning still the same issue

Think its in the cap's since i hear a high pitch (charging) humm just before it switches off and restarts.
Something like a jacob's ladder just before the arc leaves it..


----------



## AgMa

@MrMan
Is it possible to make a newer fritzing schematic with ATO installation?
Thanks a lot!!!


----------



## MrMan

fietsenrex said:


> Ugh..
> A new problem developed last weekend..
> My screen was 100% black, fiddling with the wires didn't do a thing.
> So i rebooted it and it got stuck powercycling...
> I left it off for some time and booted up flawless.
> Yesterday the screen was black again, treid to reboot but failed..
> It is now permanent stuck in a power cycle, it was off a full night and this morning still the same issue
> 
> Think its in the cap's since i hear a high pitch (charging) humm just before it switches off and restarts.
> Something like a jacob's ladder just before the arc leaves it..


What are you using to power the controller now?



AgMa said:


> @MrMan
> Is it possible to make a newer fritzing schematic with ATO installation?
> Thanks a lot!!!


Havn't used Fritzing before, but the ATO on my shield is designed for a DC pump so operates the same as the dosing pumps, just an open drain FET.


----------



## fietsenrex

MrMan said:


> fietsenrex said:
> 
> 
> 
> Ugh..
> A new problem developed last weekend..
> My screen was 100% black, fiddling with the wires didn't do a thing.
> So i rebooted it and it got stuck powercycling...
> I left it off for some time and booted up flawless.
> Yesterday the screen was black again, treid to reboot but failed..
> It is now permanent stuck in a power cycle, it was off a full night and this morning still the same issue
> 
> Think its in the cap's since i hear a high pitch (charging) humm just before it switches off and restarts.
> Something like a jacob's ladder just before the arc leaves it..
> 
> 
> 
> What are you using to power the controller now?
Click to expand...

Same 12v power supply as always.
Don't know the brand or anything, it only says 12v 150W 
But got it working with first powering the 5v part with a phonecharger on the USB of the arduino and when it was running it "accepted" the 12v.
Managed to do a powercycle and everything is running properly now.


----------



## AgMa

MrMan said:


> Havn't used Fritzing before, but the ATO on my shield is designed for a DC pump so operates the same as the dosing pumps, just an open drain FET.


Is it powered through the relay or with a mosfet?
And the float switches? What resistors are needed and where?


----------



## Matchless

@fietsenrek

can you measure the power supply?
Open the powermodule and look for defective caps. This is a common problem with chinese power supplies.

And it can kill your arduino or screen!!
So resolve the problem ,do not work around it.


----------



## fietsenrex

Matchless said:


> @fietsenrek
> 
> can you measure the power supply?
> Open the powermodule and look for defective caps. This is a common problem with chinese power supplies.
> 
> And it can kill your arduino or screen!!
> So resolve the problem ,do not work around it.


Measure what exactly?
It is cast in resin So replacing something will be hard...

Plan is to resolve the problem since it bugs me that i couldn't pinpoint the cause..


----------



## Matchless

fietsenrex said:


> Measure what exactly?
> It is cast in resin So replacing something will be hard...
> 
> Plan is to resolve the problem since it bugs me that i couldn't pinpoint the cause..


Measure the Voltage without nothing atached
Is it 12v?
Then take a halogeenlamp (12v) and connect it tot the powersupply. 
Measure again the Voltage.
Do you have a oscilloscoop? Then you could measure if there is a ripple.

If you connect the shield with Arduino tot a 5volt supply the problem is there too?
When the screen goes black measure the voltages. 5v and 12v. Are they correct?


----------



## fietsenrex

Matchless said:


> fietsenrex said:
> 
> 
> 
> Measure what exactly?
> It is cast in resin So replacing something will be hard...
> 
> Plan is to resolve the problem since it bugs me that i couldn't pinpoint the cause..
> 
> 
> 
> Measure the Voltage without nothing atached
> Is it 12v?
> Then take a halogeenlamp (12v) and connect it tot the powersupply.
> Measure again the Voltage.
> Do you have a oscilloscoop? Then you could measure if there is a ripple.
> 
> If you connect the shield with Arduino tot a 5volt supply the problem is there too?
> When the screen goes black measure the voltages. 5v and 12v. Are they correct?
Click to expand...

With nothing connected it is 12v(ish)
With the controller attached it is the same 12v(ish)
I don't have a 12v bulb laying around, also don't have a scope unfortunately.

The "problem" is that everything is running properly now.
It doesn't crash or reboot, the humming sound is gone..
It is more like a ghost hunt now..


----------



## mmaksiu

Hello.
Please suggest settings.
How best to set the channels: cold white, red + photo, royal blue to set the sun and moon phases?


----------



## fietsenrex

mmaksiu said:


> Hello.
> Please suggest settings.
> How best to set the channels: cold white, red + photo, royal blue to set the sun and moon phases?


depends on taste and power needs/output..
In high sun my white is at 80% and red and blue at about 60%
Moon is my white and red 0% and blue 1%


----------



## Matchless

@fietsenrek

Don't trust the powersupply.
The humming sound is made by the transformer or the FET in the supply.
There is a oscilator circuit that feeds the FET and the FET feeds the transformer. The sound is the oscilator what you hear.
This humming is mostly caused by bad caps.

Buy a new (good) one .


----------



## fietsenrex

Matchless said:


> @fietsenrek
> 
> Don't trust the powersupply.
> The humming sound is made by the transformer or the FET in the supply.
> There is a oscilator circuit that feeds the FET and the FET feeds the transformer. The sound is the oscilator what you hear.
> This humming is mostly caused by bad caps.
> 
> Buy a new (good) one .


going to, problem is that the socket/outlet is not grounded.. so I'll have to fix that first.


----------



## AgMa

MrMan said:


> Glad your sorted out the screen setting issue, I still haven't unpacked my iAqua stuff so haven't been able to test anything. I put in a variable to allow shorter times between presses when adjusting certain values, like container size where you need to change by large amounts. There might be some variables that still have the slow adjustment time so feel free to let me know if any others need quicker button press rates.


Hi,
Could you please tell us which variable is?
It is not always working and I want to take a look of it.
If it is working and I zero eeprom and flash an other -again yours- version, it is not working.


----------



## Stanislav

Hello, cool work. But I also want to make such a controller. With most of it I figured out the connection, but still you could not make the last version of the circuit diagram of the connection. my mail:[email protected]


----------



## jjgloster

I bought most if not all of the parts for this project & lost interest in it because I didn't know what I was doing. I'm willing to sell all of the parts if any one is interested.


----------



## MrMan

AgMa said:


> Hi,
> Could you please tell us which variable is?
> It is not always working and I want to take a look of it.
> If it is working and I zero eeprom and flash an other -again yours- version, it is not working.


I think that post was from quite a while ago, but the variable i'm talking about here is "touchWaitTime"

Can you be more specific about what is not working?


----------



## AgMa

MrMan said:


> I think that post was from quite a while ago, but the variable i'm talking about here is "touchWaitTime"
> 
> Can you be more specific about what is not working?


I was almost sure it was that variable!
Yeah, that post is quite old, but I prefer "searching" before "asking".
Lets say I want to increase the temp. 
The up or down buttons respond as they have to, quickly if button is long pressed.
If I change something in the code and I flash the new code to test it, it is not working as it was before.
It is working on random times.


----------



## bushrunner

*way off topic sort of*

Hi all, a newbie ? about the original "I Aqua".I understand it is an old topic but I have been reading it for the last week or so following it ok but I have lost the thread on the 20k resistors that AH mentions at the beginning. I can't seem to find a solution for the problem after that first was brought up. If there is an answer could someone please let me know. Please. 
alan


----------



## AgMa

Do we need resistor between arduino and float switches? And what type?


----------



## Stanislav

All regards, how to connect the pca9685 to the 12VDC RGBW tape. I connected it according to the standard scheme and the summer shines in half the sun.


----------



## fietsenrex

bushrunner said:


> Hi all, a newbie ? about the original "I Aqua".I understand it is an old topic but I have been reading it for the last week or so following it ok but I have lost the thread on the 20k resistors that AH mentions at the beginning. I can't seem to find a solution for the problem after that first was brought up. If there is an answer could someone please let me know. Please.
> alan


I don't recall using any 20K resistors in the original build


----------



## AgMa

I just changed my tft. It was an ili9341_16 and I changed it with a sainsmart ssd1289 because ili had burned some lines.
The problem is that I can't make dimming work on ssd screen. Dimming was fine with ili tft but when I connect it to ssd, the screen flashes and I can't see raw images.
If I connect the tft's led backlight directly to 5v it's fine.
Any help?


----------



## Burakko

Has anyone managed to run it on DUE? Problem almost with every library.


----------



## fietsenrex

AgMa said:


> I just changed my tft. It was an ili9341_16 and I changed it with a sainsmart ssd1289 because ili had burned some lines.
> The problem is that I can't make dimming work on ssd screen. Dimming was fine with ili tft but when I connect it to ssd, the screen flashes and I can't see raw images.
> If I connect the tft's led backlight directly to 5v it's fine.
> Any help?


Did you check the pin-out of both screens?


----------



## AgMa

I gave the screen to a friend to try in his iAqua and it is working fine.
I can't understand what is going on...


----------



## fietsenrex

Maybe a bad header or something?


----------



## AgMa

fietsenrex said:


> Maybe a bad header or something?


The strange thing is that ili is working fine.
Ssd is working "almost" fine if I connect pin19 from tft shield to tft led backlight, but refuses to boot if I connect the cable from dimming circuit.
There is something in dimming circuit that affects SSD screen and doesn't affect the ILI one.


----------



## justarduino

*Led light less bright when connected to controller*

Hi All,
Facing some issue with the LED lights have build along with this controller. 
I have 15x3w LED’s, 3 each hooked to mean-well LDD700H. 12v8amp PSU.
If i connect PSU directly to the LDD, i get enough light intensity. 
But when i connected through the controller the LED doesn't give 100% brightness even though i keep the light bar on the controller to full 100%. The light is not even half of what i get when connect directly to PSU.
Help appreciated.


----------



## fietsenrex

Did you tie the ground of the psu to the ground of the controller?


----------



## justarduino

Thanks Fietsenrex,
Yes i have connected the ground of PSU to Arduino as i am able to control the intensity of the LED's from the controller. The issue is if i set 100% intensity on the controller it is still very low as compared to directly giving 12v to the LDD700H. This LED are Cree 3W.
I read the current on the output of LDD700, its 690mA when powering directly with12v(without PWM) and the same when i connect the controller(PWM) i get just 20mA which is way too low.
Need to know if their are any settings in the code.


----------



## fietsenrex

There is a boolean in the code stating if you use the PCA chip or direct PWM, you could try to check that part


----------



## justarduino

The booleans are set to false.

boolean lightCSP = false;
int maxIR = 100; //using e-series
boolean PCA9685Installed = false;


----------



## fietsenrex

That is strange.
What is the output voltage of the controller in various settings of light intensity?


----------



## fietsenrex

Btw i Think i set the PWMmax to 225 But i have to check my sketches....
That could be an issue if it is set incorrectly


----------



## MrMan

justarduino said:


> Thanks Fietsenrex,
> Yes i have connected the ground of PSU to Arduino as i am able to control the intensity of the LED's from the controller. The issue is if i set 100% intensity on the controller it is still very low as compared to directly giving 12v to the LDD700H. This LED are Cree 3W.
> I read the current on the output of LDD700, its 690mA when powering directly with12v(without PWM) and the same when i connect the controller(PWM) i get just 20mA which is way too low.
> Need to know if their are any settings in the code.


Does the 20mA change at all with the setting (ie changing from 0 to 100%)? Can you measure the voltage at the PWM pin at 0, 50% and 100%?

Also, which controller code are you using? The original iAqua or one of the others posted?


----------



## zlpa chawngthu

Wow, still @MrMan had this post folow up, i was wishing that this is my beginner arduino project, but a lot had been done, respect to every one, Mr AH, you suck, if it was'nt you, this project would have die, but it still live, but Mister O2 and those that have utilised these theories of automated aqua, are very commercial, but you are the great, if i were you, i should have a licensing terms that who ever try to copy this and that will be not allowed, but a very good hoby for my life. your exact mind is me, but not like the other guy who just try to commercialize every thing they find, big salute to you alute you, 2014-2017, its still alive

Bump: @mrman, thank you for still supporting this post, you rock

Bump: And i think this post is all for those automating your aqua, i love you, i would keep up with this post


----------



## justarduino

I am using MrAqua_v2_3_6. 
I feel it is something to do with the circuit design or connections. Here are the findings i did today.

The voltage at the PWM pin at 100% is around 5.10V, and at 50% it is around 2.4V(i did only on one channel)

I made readings of the current output on LDD700 first Channel. With controller ON(PWM ON)
1) With single, only first channel ON it shows – 430mA and the 3 cool white led’s glow well (but not enough for plantation, planning for upgrade anyways)
2) With second channel ON it shows – 240mA
3) With third channel ON it shows – 150mA
4) With fourth channel ON it shows – 70mA and 30mA with all 5 channels ON.
I read LDD700H specification, it says Power ON with dimming: DIM ~ -Vin >2.5 ~ 6VDC or open circuit. does this mean if i input 5v PWM the LDD will output 580mA only? 

I made the same reading with directly connecting 12v8A supply, without controller (PWM OFF)
1. it shows constant 700mA with one or all the channels ON.


----------



## zlpa chawngthu

Love this thread, a very big salute for mr AH, realy bringin m=y arduino skill, yes i a lately on this hobby, starting the aquarium only last year ang this arsuino just now, what an inspiring project, but still got problem with LED drivers, can anyone suggest me with a lower inexpensive driver like using mosfet not the LDD, this is quite expensive to me, what kind of mosfet or any transistor or like would be use.


----------



## christian18011992

hello
someone is working in humidity controller?
What type of led do you recommend for this controller?


----------



## christian18011992

or someone that can help me to implement humidity controller
Please


----------



## fietsenrex

I use some bd135 to drive 12v led strips.
But if you need a constant current driver an ldd is the way to go


----------



## christian18011992

Ok thx
I sent him a private message


----------



## Lingwendil

zlpa chawngthu said:


> Love this thread, a very big salute for mr AH, realy bringin m=y arduino skill, yes i a lately on this hobby, starting the aquarium only last year ang this arsuino just now, what an inspiring project, but still got problem with LED drivers, can anyone suggest me with a lower inexpensive driver like using mosfet not the LDD, this is quite expensive to me, what kind of mosfet or any transistor or like would be use.


You need a logic-level N-channel mosfet like the FQP30N06L, and you need to make a constant current driver with it, the following project has some methods that will work, although with poor efficiency-

High Power LED Driver Circuits: 12 Steps (with Pictures)


----------



## zlpa chawngthu

Lingwendil said:


> You need a logic-level N-channel mosfet like the FQP30N06L, and you need to make a constant current driver with it, the following project has some methods that will work, although with poor efficiency-
> 
> High Power LED Driver Circuits: 12 Steps (with Pictures)


Thank You, sorry for late reply


----------



## Daszkalosz

Hello!
where are the parts on this page? (resistance, diode, capacitor)
There is no direction marked on the panel!
Unfortunately I can not implant this way!
help!


----------



## fietsenrex

Resistors doesn?t matter, if caps don?t have any polarity markings it doesn?t matter in my experience. 
Diodes and IC?s have an identifier on them, there Should be a marking on the pcb.
Do you have a close up of a diode or ic? The component as well as the place on the pcb


----------



## Daszkalosz

Thanks!
Now I know


----------



## zlpa chawngthu

Le Gui said:


> Hi everybody!
> 
> I'm Guillaume, a french guy that love computers, electronic, and... shrimps!
> (sorry for my poor english...)
> 
> I have found this thread 2 month ago, what amazing work :icon_eek: !
> 
> While I wanted to build a similar project, I decided to try to adapt iAqua to my tank, so....
> 
> Thanks Dan Cunningham (AnotherHobby), thanks robsworld78, thanks Ryan Truss (MrAqua) and all the others contributors!
> 
> I started with the v2.5.1 of MrAqua (thanks again), this code is pretty cool! :wink2:
> 
> I've made my own shield to fit my need (do you think it looks like MrAqua's one? It's normal, I was inspired by it!):
> There are 6 outputs with optocouplers for the LED PWM signals
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Bottom view (with the PCA9685 SMD):
> 
> 
> 
> 
> 
> 
> 
> 
> 
> ......
> 
> 
> The code is working, but I have some graphic improvements to do...
> 
> Now I have to debug 2-3 things, and add new stuff to fit perfectly my needs...
> 
> 
> 
> Once again, *THANK YOU GUYS FOR THIS WORK !!!* roud:roud:roud:



Wow cool board, very simple, could you share the pcb layout and schema, i would like to try your iaqua. 1 question, is this board still need the tft shield modification?


----------



## mrjbacon

I haven't been able to read through all 124 pages yet, so I'm not sure if the project went through a major revision to the point of using different hardware, but I was able to pick up an Inland Mega 2560 board at my local MicroCenter for only $10 US. If anyone has been thinking about getting one, it's a pretty good deal on that microcontroller board. It's on sale until December 30 I believe.


----------



## AgMa

Hi guys,
Recently while my ds18b20 temp sensor was showing temp with 0.1 degree celcius on home screen, suddenly shows with 0.5 degree.
Do you know what's happening?Bad sensor?
Edit: Solved. Fiy was a bad sensor. Changed with a new one and it is working fine.


----------



## Downwardflight

Wow, what a great build with a ton of information. I confess to not having read every page, but definitely stoked to have found this thread as I already have a mega and TFT laying around aas well as a bunch of LDD's and 3w crees. It is the perfect start up to what I have in mind for my tank. I am hoping I didn't show up too late to the party as I have a few questions. Forgive me if this has been answered already, but;

Does the code have any cloud effects? 

I am not interested in storms or worried about a east to west fading or anything too realistic just some decent random clouds would be nice.

If I understand correctly to run without IR control just pwm via meanwells all I need to do is change true to false, that's it?
"boolean lightCSP = true; // if you are controlling your lights directly with PWM, this is false"

Do I need to use the TFT shield or can I just use resistors in line with the wires to the TFT screen to step down the voltage?

Anyone with coding abilities still following this thread? 
I would love some help modifying this code slightly as my ultimate goal is to use this to run an aquaponics setup I am putting together for my winter enclosed porch garden. I'm thinking I wont need help with changing the buttons or modifying the code to add some transfer pumps, humidity control, etc. I mostly need help with the lighting strategy as I would like clouds, and my channels will probably be a little different.

I am thinking I need to start taking notes and cruise through all this info again. If anyone is interested in providing some coding help it would be greatly appreciated, as I have some snippets of code, I'm just not sure how to integrate it with the existing code. Thanks.


----------



## fietsenrex

Downwardflight said:


> Does the code have any cloud effects? [/QOUTE]not as far as I know
> 
> 
> Downwardflight said:
> 
> 
> 
> If I understand correctly to run without IR control just pwm via meanwells all I need to do is change true to false, that's it?
> "boolean lightCSP = true; // if you are controlling your lights directly with PWM, this is false"
> [/QOUTE]yes that is the only thing
> 
> 
> Downwardflight said:
> 
> 
> 
> Do I need to use the TFT shield or can I just use resistors in line with the wires to the TFT screen to step down the voltage?
> [/QOUTE]yes, as the shield contains logic shifters so resistors won’t work
> 
> 
> Downwardflight said:
> 
> 
> 
> Anyone with coding abilities still following this thread?
> I would love some help modifying this code slightly as my ultimate goal is to use this to run an aquaponics setup I am putting together for my winter enclosed porch garden. I'm thinking I wont need help with changing the buttons or modifying the code to add some transfer pumps, humidity control, etc. I mostly need help with the lighting strategy as I would like clouds, and my channels will probably be a little different.
> 
> I am thinking I need to start taking notes and cruise through all this info again. If anyone is interested in providing some coding help it would be greatly appreciated, as I have some snippets of code, I'm just not sure how to integrate it with the existing code. Thanks.
> 
> 
> 
> Not me unfortunately.
> 
> Click to expand...
> 
> 
> 
> Click to expand...
Click to expand...


----------



## Downwardflight

Ok, thanks for the reply


----------



## MrMan

Downwardflight said:


> Wow, what a great build with a ton of information. I confess to not having read every page, but definitely stoked to have found this thread as I already have a mega and TFT laying around aas well as a bunch of LDD's and 3w crees. It is the perfect start up to what I have in mind for my tank. I am hoping I didn't show up too late to the party as I have a few questions. Forgive me if this has been answered already, but;
> 
> Does the code have any cloud effects?
> 
> I am not interested in storms or worried about a east to west fading or anything too realistic just some decent random clouds would be nice.
> 
> If I understand correctly to run without IR control just pwm via meanwells all I need to do is change true to false, that's it?
> "boolean lightCSP = true; // if you are controlling your lights directly with PWM, this is false"
> 
> Do I need to use the TFT shield or can I just use resistors in line with the wires to the TFT screen to step down the voltage?
> 
> Anyone with coding abilities still following this thread?
> I would love some help modifying this code slightly as my ultimate goal is to use this to run an aquaponics setup I am putting together for my winter enclosed porch garden. I'm thinking I wont need help with changing the buttons or modifying the code to add some transfer pumps, humidity control, etc. I mostly need help with the lighting strategy as I would like clouds, and my channels will probably be a little different.
> 
> I am thinking I need to start taking notes and cruise through all this info again. If anyone is interested in providing some coding help it would be greatly appreciated, as I have some snippets of code, I'm just not sure how to integrate it with the existing code. Thanks.


No cloud effects but I did intend on adding them to my version of the code. Updated the EEPROM for cloud/storm effects but since i don't actually have a PWM controlled light I couldn't test it so never added it.

If you have thoughts on how cloud effects should work let me know and i can look into adding it.


----------



## Downwardflight

Thank you, my original idea was to incorporate a random function, these are some bits of code I was tossing around but don't know that it'll work with the existing code:


Code:


randomSeed(analogRead(A0)); // get random numbers 
led.setTarget(255 - random(50, 100)); // some random but noticeable amount
#define CLOUD_INTERVAL    // max time between clouds 2 or 3 hours?
#define Min_Cloud_Duration 6  // min cloud duration 6 min?
#define Max_Cloud_Duration 30 //max cloud duration 30 min?
#define Min_Clouds_per_Day 3
#define Max_Clouds_per_Day 8

 Basically I'm thinking a random number of fades to a random amounts with some rules governing cloud darkness, duration and frequency. I would be more than happy just dimming all the channels 30-50% a few times a day, nothing fancy. It would also be nice to display a cloud picture along with the sun icon. Let me know if you need any more specifics.

I planned on using your version of the code, and noticed it looks like you incorporated the TFT shield on your board (pg 88). Would you mind sharing what components are needed for this, or is it documented somewhere else? Ideally I'd like to make my own mega board with everything all together and use a header cable to attach the screen as I'm mounting it in a box with the screen on a door. 

I just got my screen and shield but I don't see logic level converters on it anywhere, and I noticed I have the Sainsmart: "Due SAM3X8E ARM Cortex-M3, Arduino Compatible and 3.2" TFT LCD Display + Shield Board for Arduino Mega 2560 R3. I'm not sure what the differences are at this point, or if I can use any of it... will be looking into that. 

Thanks again, I'm getting excited to get this on the test bench together and running.


----------



## MrMan

Downwardflight said:


> Thank you, my original idea was to incorporate a random function, these are some bits of code I was tossing around but don't know that it'll work with the existing code:
> 
> 
> Code:
> 
> 
> randomSeed(analogRead(A0)); // get random numbers
> led.setTarget(255 - random(50, 100)); // some random but noticeable amount
> #define CLOUD_INTERVAL    // max time between clouds 2 or 3 hours?
> #define Min_Cloud_Duration 6  // min cloud duration 6 min?
> #define Max_Cloud_Duration 30 //max cloud duration 30 min?
> #define Min_Clouds_per_Day 3
> #define Max_Clouds_per_Day 8
> 
> Basically I'm thinking a random number of fades to a random amounts with some rules governing cloud darkness, duration and frequency. I would be more than happy just dimming all the channels 30-50% a few times a day, nothing fancy. It would also be nice to display a cloud picture along with the sun icon. Let me know if you need any more specifics.
> 
> I planned on using your version of the code, and noticed it looks like you incorporated the TFT shield on your board (pg 88). Would you mind sharing what components are needed for this, or is it documented somewhere else? Ideally I'd like to make my own mega board with everything all together and use a header cable to attach the screen as I'm mounting it in a box with the screen on a door.
> 
> I just got my screen and shield but I don't see logic level converters on it anywhere, and I noticed I have the Sainsmart: "Due SAM3X8E ARM Cortex-M3, Arduino Compatible and 3.2" TFT LCD Display + Shield Board for Arduino Mega 2560 R3. I'm not sure what the differences are at this point, or if I can use any of it... will be looking into that.
> 
> Thanks again, I'm getting excited to get this on the test bench together and running.


So you basically want the LEDs to temporarily dim from full to a random reduced amount for a set time? Wouldn't be too hard, I was originally thinking they would dim up/down slowly over time (ie clouds rolling by vs constantly cloudy). I'm working on a WiFi LED driver/controller right now but once that's done I'll look into adding clouds to the code.

If you go to the post linked in my signature and download the PCB files it's got the schematic for the shield I designed. The Due uses 3.3V so if that's what you have it would explain the lack of level-shifters, not sure if the code will work as-is on the Due. Or if there's a lot of resistors on the tft shield then it might just be using resistor dividers to drop down the voltage, not as nice but should still work fine.


----------



## Downwardflight

Yes, I know what you mean with the clouds rolling by, but I am using only 4 channels/12 LED's per tank so I don't think it would be a noticeable difference unless I were to scale up. It also seems like a lot more coding, lol. Either way is fine for me if you think it will still make a difference with so few LED's.

Ok, thanks for the info, I will check out the schematic,and possibly see if I can "Due" it with what I have for now. Otherwise I will be asking Santa for more electronic components, lol.


----------



## cairo

@MrMan
Coralux storm x led controller have a nice cloud feature. You can download firmware here http://coralux.net/wp-content/uploads/wpsc/downloadables/storm-x-firmware.zip 
It’s arduino compatible and Distributed under GNU GPL V3. Check make_cloud function.


----------



## Le Gui

zlpa chawngthu said:


> Wow cool board, very simple, could you share the pcb layout and schema, i would like to try your iaqua. 1 question, is this board still need the tft shield modification?


Hi,

Sorry for the late answer, I'm really busy these days...

Thanks for your interest in my pcb.
Yes, this board still need the tft shield modification.
Here is a link to download the Eagle files : Schematics and board

Hope this can help! :wink2:


----------



## Kampo

really need to read thru this thread. looks like some good stuff but its changed so much from the original post. anyone making an idiot proof board to put one of these together that won't look like spaghetti? that and my solder skills are...lacking


----------



## MrMan

cairo said:


> @MrMan
> Coralux storm x led controller have a nice cloud feature. You can download firmware here http://coralux.net/wp-content/uploads/wpsc/downloadables/storm-x-firmware.zip
> It’s arduino compatible and Distributed under GNU GPL V3. Check make_cloud function.


Awesome, I'll check that out and see if I can incorporate it into my code! :grin2:



Kampo said:


> really need to read thru this thread. looks like some good stuff but its changed so much from the original post. anyone making an idiot proof board to put one of these together that won't look like spaghetti? that and my solder skills are...lacking


If you check the link in my signature you can check out the shield I designed for the Mega (and have extras of). There's a few parts that are tricky to solder but they can be left off and use a normal tft shield instead. O2 also designed a shield although I'm not sure if he posted the files for it.


----------



## AgMa

Hi,
In feeding screen, if I press the restart button, the filter doesn't return to what it was (enabled) before the feeding.
In code I see:



Code:


if ((x>=124)&&(x<=172)&&(y>=223)&&(y<=271))  // restart button  
    { 
      feedingActive=false;
      screenFeeding();
    }

Is it ok?I think that feedingActive had to be true.
Do you guys have the same problem?


----------



## zlpa chawngthu

Le Gui said:


> Hi,
> 
> Sorry for the late answer, I'm really busy these days...
> 
> Thanks for your interest in my pcb.
> Yes, this board still need the tft shield modification.
> Here is a link to download the Eagle files : Schematics and board
> 
> Hope this can help! :wink2:


Thank You very much, sorry for not replying early, i too was very busy these days.


----------



## MrMan

AgMa said:


> Hi,
> In feeding screen, if I press the restart button, the filter doesn't return to what it was (enabled) before the feeding.
> In code I see:
> 
> 
> 
> Code:
> 
> 
> if ((x>=124)&&(x<=172)&&(y>=223)&&(y<=271))  // restart button
> {
> feedingActive=false;
> screenFeeding();
> }
> 
> Is it ok?I think that feedingActive had to be true.
> Do you guys have the same problem?


I think if you change the code to 



Code:


if ((x>=124)&&(x<=172)&&(y>=223)&&(y<=271))  // restart button  
    { 
      startFeedingTime = now();
    }

it should resolve the issue. Currently it will end up saving the feeding power states as the pre-feeding power states which will result in things not being turned back on correctly (ie your filter). Since this button is only visible if feeding is still active all the button should do is re-start the clock.


----------



## AgMa

MrMan said:


> I think if you change the code to
> 
> 
> 
> Code:
> 
> 
> if ((x>=124)&&(x<=172)&&(y>=223)&&(y<=271))  // restart button
> {
> startFeedingTime = now();
> }
> 
> it should resolve the issue. Currently it will end up saving the feeding power states as the pre-feeding power states which will result in things not being turned back on correctly (ie your filter). Since this button is only visible if feeding is still active all the button should do is re-start the clock.


Yes you are right. It saves the power states as it is now, but they are turned off, so it saves the off state.
Btw changed it to true and did not work. The clock now don't restart, it continues counting.
I will try it thanks.


----------



## zlpa chawngthu

Just sharing you for cheap LCD+Shield+MEGA. What i thought that i had ordered only LCD Shield+Mega at $10.07, to my surprise it came with the 3.2" LCD, meaning that i bought LCD+LCD Shield+MEGA for $10.07, what a buy, here is the link,

https://www.aliexpress.com/item/Fre...32283081828.html?spm=a2g0s.9042311.0.0.dhn9G8

I think the seller misplaced my order, now i have 2 LCDs, 1 i ordered separately and 1 which came with this order.:grin2:


----------



## AgMa

I have a float switch for my ATO system.
The problem I encounter is that if water level is high, the icon suddenly changes to low and after that to high again for many times, without any change in water level.
This is not happening if water level is low. It will remain low until I add water.
I noticed that this is happening when the second relay (with the second light fixture) energizes.
Could that be noise because of the long cable between ATO and arduino?
Will the hysteresis work?
Any help would be greatly appreciated as this may damage my ATO devices (they are programmed to turn off when water level is low).


----------



## MrMan

AgMa said:


> I have a float switch for my ATO system.
> The problem I encounter is that if water level is high, the icon suddenly changes to low and after that to high again for many times, without any change in water level.
> This is not happening if water level is low. It will remain low until I add water.
> I noticed that this is happening when the second relay (with the second light fixture) energizes.
> Could that be noise because of the long cable between ATO and arduino?
> Will the hysteresis work?
> Any help would be greatly appreciated as this may damage my ATO devices (they are programmed to turn off when water level is low).


Never had that issue myself and my cable for the float switch is ~5 feet. You've got a 1K pullup on the floatswitch pin right? You could try adding a capacitor from the pin to ground to eliminate any noise. 

Also, try disconnecting your floatswitch/cable and see if it ever goes between high/low, should let you know if the problem is due to the addition of the switch/cable or just an issue regardless.


----------



## AgMa

MrMan said:


> Never had that issue myself and my cable for the float switch is ~5 feet. You've got a 1K pullup on the floatswitch pin right? You could try adding a capacitor from the pin to ground to eliminate any noise.
> 
> Also, try disconnecting your floatswitch/cable and see if it ever goes between high/low, should let you know if the problem is due to the addition of the switch/cable or just an issue regardless.


No, I'm using INPUT_PULLUP resistor.
If I disconnect the cable from arduino, it stays to high. Doesn't change between high/low.


----------



## justarduino

Hello friends
I am using MrAqua_2_3_6 version, and i still have the problem with LED lights(15 cree XPE 3w with 5 x LDD700H board). with all channels up the light intensity of the first LED channel decreases then it was with single channel. Eventually when all the 5 channels are ON it does not give me enough light which is expected from this cree @700ma. 

When nothing is connected to LDD board, just Arduino output measured on PWM pins. 
@100% all the channels read ~5v, and @0% they all read ~0v(was not able to add a table here), so i feel code or dimming is fine. 

Current measured on Channel 1, gradually switching ON other channels at 100%
Only Ch1 ON @ 100% PWM, current in Channel 1 is - 550ma
Now Ch2 ON @ 100%, and Ch1 @ 100%, current in Ch1 is - 500ma
Now Ch3, & Ch2 ON @ 100%, and Ch1 100%, current in Ch1 is - 452ma
Now Ch4, Ch3 & Ch2 ON @ 100%, and Ch1 100%, current in Ch1 is - 420ma
Now Ch5, Ch4, Ch3,Ch2 ON @ 100%, and Ch1 100%, current in Ch1 is - 380ma

I have 5 strings with 3 cree XP-E LED’s each connected to LDD700h and using PSU 12v8amp.

With 12v PSU directly(without PWM) connecting to LDD700 looks fine. 

Is this a normal behavior or i need to upgrade my PSU and LDD700 to LDD1000. or is it something to do with connections
Inputs and help appreciated.


----------



## Downwardflight

What's the output rated at on your power supply? Sounds like it might not be enough. 45w of led/12V=3.75A assuming the power supply and LDD's are 100% efficient. So you are going to want at least 4A-5A or 50-60W power.


----------



## justarduino

Thanks for the response, I am using Meanwell 12v8amp power supply, hope that should be enough for 45W cree.


----------



## Mikaila31

Hey looking for some help. I'm pretty new to arduinos but I assembled MrMan shield, software is 2.5.1. I have a ili9341 3.2" screen. The SD card is 1GB formatted in FAT. The device powers on but all I get is a white screen. Any suggestions on where to start trouble shooting it?


----------



## AgMa

Your screen must be ili9341_16.
Change it in your code and see what happens.




MrMan said:


> Never had that issue myself and my cable for the float switch is ~5 feet. You've got a 1K pullup on the floatswitch pin right? You could try adding a capacitor from the pin to ground to eliminate any noise.
> 
> Also, try disconnecting your floatswitch/cable and see if it ever goes between high/low, should let you know if the problem is due to the addition of the switch/cable or just an issue regardless.


Does it helps the fact that it is only happening when the second relay energizes?


----------



## MrMan

justarduino said:


> Thanks for the response, I am using Meanwell 12v8amp power supply, hope that should be enough for 45W cree.


Power wise it is enough but the LDDs drop 3V so your string has to be less than 9V. I think 3 LEDs can get above this which might be an issue. Do you have a 15V or higher supply you could try?



AgMa said:


> No, I'm using INPUT_PULLUP resistor.
> If I disconnect the cable from arduino, it stays to high. Doesn't change between high/low.


I'd say try a physical resistor as I think it will be less susceptible to noise. And again you could also add a small 100n cap from the Mega pin to the common ground.



Mikaila31 said:


> Hey looking for some help. I'm pretty new to arduinos but I assembled MrMan shield, software is 2.5.1. I have a ili9341 3.2" screen. The SD card is 1GB formatted in FAT. The device powers on but all I get is a white screen. Any suggestions on where to start trouble shooting it?


I had to retouch the pins on the buffer ICs due to hard to see solder shorts a few times. I would suggest trying to run a simple sketch first (like the UTFT demos) and once you've got the screen working then try the MrAqua code. Also as AgMa said make sure you're initializing the utft with the correct model (have you got it working with a normal tft shield?)


----------



## Mikaila31

Thanks AgMa and MrMan! ILI9341_16 does work I did have to figure out how to update the tft library with the driver(I'm very new to this). I had some issues with screen working but no touch. Eventually figured I needed to have the touch pins listed as 46,45,44,43,42 and not 42,43,44,45,46. Now I have touch working with the quick paint sketch!

UTFT myGLCD(ILI9341_16,38,39,40,41); // start up an instance of the TFT screen
UTouch myTouch(46,45,44,43,42); // start up an instance of for touch

Now that I verified the screen and touch is working(as well as the correct screen driver) I am trying to compile the iaqua software but am getting a lot of errors so just starting on figuring that now. Its odd since we uploaded it before without an issue lol

edit: Got it working!

still need to do some fiddling. The screen has a slight backlight flicker and iaqua crashes(white screen) if I click around settings quickly. Its tough to get into the LED color channel setup without it crashing. I think there might be a power issue?


----------



## Lingwendil

MrMan said:


> Power wise it is enough but the LDDs drop 3V so your string has to be less than 9V. I think 3 LEDs can get above this which might be an issue. Do you have a 15V or higher supply you could try?



It indeed sounds like you are on the ragged edge of voltage headroom. Many Cree LEDs will sit just at or over 3 volts each. I recommend 19~20v laptop power supplies for this, as they are easy to find in the 4-7A range, and will give you a bit more voltage to play with, good for headroom that the LDDs need to operate, and gives you room to add an LED or so to each string later if needed.


----------



## Mikaila31

okay been tinkering with the board today. Pretty sure my crashing is just a shoddy screen connection. Once I get a short cable and have board and screen mounted I expect it to go away. 

I've confirmed correct voltage output for the relays and the 6 channel LED PWM. I am a little stumped on the 3 dosing pumps and 2 fans. These use the same IC. The schematic calls for ULN2003ANSR the BOM I have called for ULN2003ADR. Issue I'm having is each output off these ICs I have the correct 12v on positive side but I have ~5v coming off the neutral side as well. This is for all the fan and pump connectors. Not sure if the ICs I use are simply incompatible or if the orientation is different.


----------



## MrMan

Mikaila31 said:


> okay been tinkering with the board today. Pretty sure my crashing is just a shoddy screen connection. Once I get a short cable and have board and screen mounted I expect it to go away.
> 
> I've confirmed correct voltage output for the relays and the 6 channel LED PWM. I am a little stumped on the 3 dosing pumps and 2 fans. These use the same IC. The schematic calls for ULN2003ANSR the BOM I have called for ULN2003ADR. Issue I'm having is each output off these ICs I have the correct 12v on positive side but I have ~5v coming off the neutral side as well. This is for all the fan and pump connectors. Not sure if the ICs I use are simply incompatible or if the orientation is different.


It's just different packaging for the different part numbers, actual device is the same. Do you have a fan or pump connected when measuring? It's an open collector output so if nothing is connected it won't measure 0V.

Sent from my Nexus 6P using Tapatalk


----------



## zlpa chawngthu

@MrMan, i need your help, i am using your code, but i got thiese errors.



Code:


Arduino: 1.8.5 (Windows 7), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:225:0:

C:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared

     static bool read(tmElements_t &tm);
C:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared

     static bool write(tmElements_t &tm);                       ^

In file included from J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:227:0:

C:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms/TimeAlarms.h:71:31: error: 'timeDayOfWeek_t' does not name a type

   AlarmID_t alarmRepeat(const timeDayOfWeek_t DOW, const int H,  const int M,  const int S, OnTick_t onTickHandler); // as above, with day of week

C:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms/TimeAlarms.h:75:29: error: 'timeDayOfWeek_t' does not name a type

   AlarmID_t alarmOnce(const timeDayOfWeek_t DOW, const int H,  const int M,  const int S, OnTick_t onTickHandler); // as above, with day of week

MrAqua_v2_5_1:377: error: 'tmElements_t' does not name a type

 tmElements_t prevRTC, saveRTC;

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:578:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5hsunS.raw","5msunS.raw","5lsunS.raw","5moonS.raw"};                                                  

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:578:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:578:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:578:54: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:581:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5hmsunF.raw","5lsunF.raw","5moonF.raw"};                                         

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:581:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:581:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:584:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5hsun.raw","5msun.raw","5lsun.raw","5moon.raw"};                                            

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:584:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:584:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:584:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:588:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5editF.raw", "5editN.raw"};         

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:588:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:590:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5saveF.raw", "5saveN.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:590:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:592:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5resynF.raw", "5resynN.raw"}; 

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:592:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:594:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5canF.raw", "5canN.raw"};
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:594:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:598:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5Wup.raw", "5Wdown.raw"};
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:598:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:600:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5Rup.raw", "5Rdown.raw"};
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:600:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:602:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5Gup.raw", "5Gdown.raw"};
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:602:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:604:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5Bup.raw", "5Bdown.raw"};
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:604:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:606:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "5Fup.raw", "5Fdown.raw"}; // disabled button
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:606:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:610:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "3light_F.raw","3light_N.raw"};
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:610:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:612:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "3filt_F.raw","3filt_N.raw"};
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:612:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:614:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "3circ_F.raw","3circ_N.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:614:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:616:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "3heat_F.raw","3heat_N.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:616:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:618:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "3co2_F.raw","3co2_N.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:618:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:620:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "3aux1_F.raw","3aux1_N.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:620:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:622:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "3aux2_F.raw","3aux2_N.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:622:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:626:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "3dotR.raw","3dotG.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:626:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:630:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "1lightF.raw","1lightN.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:630:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:632:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "1filtF.raw","1filtN.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:632:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:634:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "1circF.raw","1circN.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:634:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:636:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "1heatF.raw","1heatN.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:636:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:638:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "1co2F.raw","1co2N.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:638:26: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:640:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "1aux1F.raw","1aux1N.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:640:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:642:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "1aux2F.raw","1aux2N.raw"};

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:642:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:646:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "1hsun.raw","1msun.raw","1lsun.raw","1moon.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:646:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:646:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:646:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:653:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "21lastq.raw","21ocres.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:653:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:653:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:653:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:653:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:653:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:653:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:653:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:657:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "24whUp.raw", "24whDn.raw"};
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:657:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:661:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "11dis.raw","11enab.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:661:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:664:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "11disB.raw","11enabB.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:664:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:666:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "3off.raw","3on.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:666:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:669:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   "1wlow.raw","1whigh.raw"};

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:669:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void setup()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:747:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(26, 110, 188, 72, "iAqua.raw");

MrAqua_v2_5_1:754: error: 'setSyncProvider' was not declared in this scope

   setSyncProvider(RTC.get);

MrAqua_v2_5_1:756: error: 'timeStatus' was not declared in this scope

   if(timeStatus()!= timeSet)

MrAqua_v2_5_1:756: error: 'timeSet' was not declared in this scope

   if(timeStatus()!= timeSet)

MrAqua_v2_5_1:759: error: 'saveRTC' was not declared in this scope

     saveRTC.Year = 45;

MrAqua_v2_5_1:765: error: 'makeTime' was not declared in this scope

     RTC.set(makeTime(saveRTC));

MrAqua_v2_5_1:766: error: 'setTime' was not declared in this scope

     setTime(makeTime(saveRTC));
MrAqua_v2_5_1:769: error: 'now' was not declared in this scope

   lastFeedingTime = now(); //not storing feeding time in eeprom due to high rate of writing
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void loop()':

MrAqua_v2_5_1:880: error: 'now' was not declared in this scope

   time_t currentTime = now();

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkLightRamp()':

MrAqua_v2_5_1:1080: error: 'now' was not declared in this scope

   time_t currentTime = now();

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkATO()':

MrAqua_v2_5_1:1122: error: 'now' was not declared in this scope

         ATOStartTime = now();

MrAqua_v2_5_1:1126: error: 'now' was not declared in this scope

       if(((now() - ATOStartTime) >= ATOWaitTime)&&(ATOPumpState == false))

MrAqua_v2_5_1:1139: error: 'now' was not declared in this scope

       if(((now() - ATOPumpStartTime) >= ATORunTime)&&(ATOPumpState == true))

MrAqua_v2_5_1:1179: error: 'now' was not declared in this scope

     if(((now() - ATOPumpStartTime) >= ATORunTime)&&(ATOPumpState == true))

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void drawATO()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1203:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(150, 52, 60, 55, "1warn.raw",2);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1207:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(150, 52, 55, 55, "1atoon.raw",2);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1213:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("T", 122, 36); //print letters individually due to space constraints
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1214:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("A", 135, 36);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1215:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("N", 148, 36);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1216:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("K", 161, 36);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1217:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("ATO", 186, 36);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1222:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(122, 45, 115, 45, "logo.raw",2); //display a iAqua logo if ATO is disabled


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void drawTemp()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1358:51: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(30, 35, 60, 51, "1thermR.raw",4);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1361:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(30, 35, 60, 51, "1therm.raw",4);


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1369:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true)myFiles.load(90, 94, 14, 12, "c.raw",4);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1370:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(90, 94, 14, 12, "f.raw",4);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1375:71: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true)myFiles.load(90, 94, 14, 12, "c_R.raw",4);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1376:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(90, 94, 14, 12, "f_R.raw",4);


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1391:51: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(3, 33, 28, 24, "1thermRS.raw",4);

                                                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1394:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(3, 33, 28, 24, "1thermS.raw",4);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1402:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true)myFiles.load(103, 39, 14, 12, "c.raw",4);

                                                                      ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1403:71: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(103, 39, 14, 12, "f.raw",4);

                                                                       ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1408:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true)myFiles.load(103, 39, 14, 12, "c_R.raw",4);

                                                                        ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1409:73: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(103, 39, 14, 12, "f_R.raw",4);

                                                                         ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1422:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(3, 59, 28, 24, "1temp2S.raw",4);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1427:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       if(displayInC == true)myFiles.load(103, 65, 14, 12, "c.raw",4);

                                                                    ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1428:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       if(displayInC == false)myFiles.load(103, 65, 14, 12, "f.raw",4);

                                                                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1436:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(3, 85, 28, 24, "1temp3S.raw",4);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1441:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     if(displayInC == true)myFiles.load(103, 91, 14, 12, "c.raw",4);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1442:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     if(displayInC == false)myFiles.load(103, 91, 14, 12, "f.raw",4);

                                                                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkFeeding()':

MrAqua_v2_5_1:1450: error: 'now' was not declared in this scope

     dimTime = now(); // keep the screen bright duing feeding

                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void drawFeeding()':

MrAqua_v2_5_1:1497: error: 'now' was not declared in this scope

     int feedingMinsLeft = (feedingTotalSeconds-(now()-startFeedingTime))/60;

                                                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1518:36: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

           myGLCD.print("0", 22, 130);

                                    ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1540:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myGLCD.print(":", 112, 80);

                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1546:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print(" ", 80, 80);

                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1557:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("0", 128, 80);

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkDosing()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1607:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(doses1 > 4)myFiles.load(112, 122, 23, 50, "1ferts.raw",4);

                                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1608:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(doses1 < 5)myFiles.load(112, 122, 23, 50, "1fertse.raw",4);

                                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1609:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(doses2 > 4)myFiles.load(138, 122, 23, 50, "1ferts.raw",4);

                                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1610:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(doses2 < 5)myFiles.load(138, 122, 23, 50, "1fertse.raw",4);

                                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1611:62: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(doses3 > 4)myFiles.load(124, 183, 23, 50, "1ferts.raw",4);

                                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1612:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(doses3 < 5)myFiles.load(124, 183, 23, 50, "1fertse.raw",4);

                                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkLighting()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1674:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(75, 151, 12, 20, "1arrow.raw",4);

                                                 ^

MrAqua_v2_5_1:1678: error: 'now' was not declared in this scope

     unsigned long rightNow = now();

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1702:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("MIN", 69, 219);

                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:1706:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(57, 140, 48, 48, "1quest.raw");

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void feedingStop()':

MrAqua_v2_5_1:1843: error: 'now' was not declared in this scope

   lastFeedingTime = now();

                         ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void SaveTime()':

MrAqua_v2_5_1:1886: error: 'saveRTC' was not declared in this scope

   time_t saveTime = makeTime(saveRTC);

                              ^

MrAqua_v2_5_1:1886: error: 'makeTime' was not declared in this scope

   time_t saveTime = makeTime(saveRTC);

                                     ^

MrAqua_v2_5_1:1887: error: 'setTime' was not declared in this scope

   setTime(saveTime);

                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void updateTimeDate(boolean)':

MrAqua_v2_5_1:1898: error: 'hour' was not declared in this scope

   if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {

             ^

MrAqua_v2_5_1:1898: error: 'prevRTC' was not declared in this scope

   if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {

                ^

MrAqua_v2_5_1:1898: error: 'minute' was not declared in this scope

   if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {

                                         ^

MrAqua_v2_5_1:1901: error: 'hourFormat12' was not declared in this scope

     if(displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);

                                                     ^

MrAqua_v2_5_1:1901: error: 'isPM' was not declared in this scope

     if(displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);

                                                                        ^

MrAqua_v2_5_1:1909: error: 'day' was not declared in this scope

   if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {

            ^

MrAqua_v2_5_1:1909: error: 'prevRTC' was not declared in this scope

   if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {

               ^

MrAqua_v2_5_1:1909: error: 'month' was not declared in this scope

   if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {

                                      ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void printValueUpdate()':

MrAqua_v2_5_1:1918: error: 'now' was not declared in this scope

   time_t printTime = now();

                          ^

MrAqua_v2_5_1:1920: error: 'hourFormat12' was not declared in this scope

   if(hourFormat12(printTime) < 10)Serial.print(F("0"));

                            ^

MrAqua_v2_5_1:1921: error: 'hourFormat12' was not declared in this scope

   Serial.print(hourFormat12(printTime));

                                      ^

MrAqua_v2_5_1:1923: error: 'minute' was not declared in this scope

   if(minute(printTime) < 10)Serial.print(F("0"));

                      ^

MrAqua_v2_5_1:1924: error: 'minute' was not declared in this scope

   Serial.print(minute(printTime));

                                ^

MrAqua_v2_5_1:1926: error: 'second' was not declared in this scope

   if(second(printTime) < 10)Serial.print(F("0"));

                      ^

MrAqua_v2_5_1:1927: error: 'second' was not declared in this scope

   Serial.print(second(printTime));

                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void printDate(int, int)':

MrAqua_v2_5_1:2012: error: 'weekday' was not declared in this scope

   strcat(chDate, dayShortStr(weekday()));

                                      ^

MrAqua_v2_5_1:2012: error: 'dayShortStr' was not declared in this scope

   strcat(chDate, dayShortStr(weekday()));

                                       ^

MrAqua_v2_5_1:2014: error: 'month' was not declared in this scope

   strcat(chDate, monthShortStr(month()));

                                      ^

MrAqua_v2_5_1:2014: error: 'monthShortStr' was not declared in this scope

   strcat(chDate, monthShortStr(month()));

                                       ^

MrAqua_v2_5_1:2016: error: 'day' was not declared in this scope

   itoa(day(), tmpChar, 10);

            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'time_t tmConvert_t(int, byte, byte, byte, byte, byte)':

MrAqua_v2_5_1:2026: error: 'tmElements_t' was not declared in this scope

   tmElements_t tmSet;

   ^

MrAqua_v2_5_1:2027: error: 'tmSet' was not declared in this scope

   tmSet.Year = YYYY - 1970;

   ^

MrAqua_v2_5_1:2033: error: 'makeTime' was not declared in this scope

   return makeTime(tmSet);         //convert to time_t

                        ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'int calcFeeding()':

MrAqua_v2_5_1:2106: error: 'now' was not declared in this scope

   time_t timeSinceLastFeed = now() - lastFeedingTime;

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkLightFade(int, int)':

MrAqua_v2_5_1:2145: error: 'now' was not declared in this scope

     unsigned long rightNow = now();

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'byte lunarCycleScaling()':

MrAqua_v2_5_1:2560: error: 'tmElements_t' was not declared in this scope

   tmElements_t fixedDate = {0,35,20,0,7,1,0};

   ^

MrAqua_v2_5_1:2562: error: 'fixedDate' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                  ^

MrAqua_v2_5_1:2562: error: 'makeTime' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                           ^

MrAqua_v2_5_1:2563: error: 'now' was not declared in this scope

   long phase = (now() - newMoonCycle) % lp;

                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'byte getLunarCycleDay()':

MrAqua_v2_5_1:2571: error: 'tmElements_t' was not declared in this scope

   tmElements_t fixedDate = {0,35,20,0,7,1,0};

   ^

MrAqua_v2_5_1:2573: error: 'fixedDate' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                  ^

MrAqua_v2_5_1:2573: error: 'makeTime' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                           ^

MrAqua_v2_5_1:2574: error: 'now' was not declared in this scope

   long phase = (now() - newMoonCycle) % lp;

                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenHome()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:18:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(0, 254, 240, 66, "dock.raw",4);

                                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:19:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "1home.raw",4);

                                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:40:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(5, 172, 46, 46, "1feed.raw",4);

                                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenFeeding()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:77:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "2feed.raw",2);

                                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:81:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "foothome.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:89:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(67, 223, 48, 48, "2stop.raw",2);

                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:90:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 223, 48, 48, "2restart.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:93:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(74, 110, 92, 92, "2feeding.raw",2);

                                                 ^

Screens:141: error: 'now' was not declared in this scope

     startFeedingTime = now(); // mark when feeding started

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenPower()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:161:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "foothome.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:164:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "3power.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:173:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(73, 77, 40, 40, "3allon.raw",2);

                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:174:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(128, 77, 40, 40, "3alloff.raw",2);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenSettings()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:204:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "4extras.raw",2);

                                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:214:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "foothome.raw",4);  // footer home button

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:218:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(10, 50, 48, 63, "4lights.raw",4);

                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:222:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(10, 50, 48, 63, "4lightsF.raw",4);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:224:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(67, 50, 48, 63, "4clock.raw",4);

                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:225:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 50, 48, 63, "4feeding.raw",4);

                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:226:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(181, 50, 48, 63, "4sched.raw",4);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:227:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 118, 48, 63, "4sensors.raw",4);

                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:228:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(67, 118, 48, 63, "4dosing.raw",4);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:229:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 118, 48, 63, "4screen.raw",4);

                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:230:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(181, 118, 48, 63, "4ato.raw",4);

                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:231:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 186, 48, 63, "4lunar.raw",4);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:232:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (lightCSP==true) myFiles.load(67, 186, 48, 63, "4colorF.raw",4);//gray out icon for IR lights

                                                                    ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:233:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if (lightCSP==false)myFiles.load(67, 186, 48, 63, "4color.raw",4);

                                                                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:234:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 186, 48, 63, "4graph.raw",4);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenLights()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:246:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "5lights.raw",2);

                                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:259:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenLightsIR()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:516:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "5lights.raw",2);

                                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:529:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2); // footer button

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenSensors()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:671:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "18sense.raw",2);

                                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:680:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "foothome.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:707:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(100, 259, 14, 12, "c.raw",2);

                                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:708:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(180, 259, 14, 12, "f.raw",2);

                                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:713:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(sensor1Enabled) myFiles.load(210, 58, 26, 26, "footextr.raw",2);

                                                                    ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:714:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(sensor2Enabled) myFiles.load(210, 111, 26, 26, "footextr.raw",2);

                                                                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:715:69: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(sensor3Enabled) myFiles.load(210, 164, 26, 26, "footextr.raw",2);

                                                                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenHeatsink()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:728:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "18sense.raw",2);

                                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:737:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:757:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:767:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

                                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:768:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

                                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:771:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 106, 96, 48, "19fanon.raw",2);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:781:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:782:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:799:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:800:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenInternalTemp()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:817:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "18sense.raw",2);

                                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:826:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:846:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 40, 96, 48, "19fanoff.raw",2);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:852:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 106, 96, 48, "19fanon.raw",2);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:862:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

                                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:863:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

                                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:870:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:871:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:888:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:889:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenClock()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:906:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "6clock.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:922:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("24H", 12, 72);

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:925:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 91, 72);

                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:928:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("S", 172, 72);

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:933:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 20, 194);

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:936:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("D", 91, 194);

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:939:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Y", 172, 194);

                             ^

Screens:946: error: 'saveRTC' was not declared in this scope

   saveRTC.Hour = hour();

   ^

Screens:946: error: 'hour' was not declared in this scope

   saveRTC.Hour = hour();

                       ^

Screens:947: error: 'minute' was not declared in this scope

   saveRTC.Minute = minute(); 

                           ^

Screens:949: error: 'day' was not declared in this scope

   saveRTC.Day = day();

                     ^

Screens:950: error: 'month' was not declared in this scope

   saveRTC.Month = month();

                         ^

Screens:951: error: 'year' was not declared in this scope

   saveRTC.Year = (year()-1970);

                        ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:976:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("00", 201, 108);

                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1007:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 286, 84, 26, "6cancel.raw",2);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1008:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(144, 286, 84, 26, "6set.raw",2);

                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenFeedSettings()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1021:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "2feed.raw",2);

                                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1048:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenHeater()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1094:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "8heat.raw",2);

                                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1103:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1123:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(17, 40, 48, 48, "8off.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1133:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 58, 14, 12, "c.raw",2);

                                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1134:65: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 58, 14, 12, "f.raw",2);

                                                                 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1137:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(17, 106, 48, 48, "8on.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1147:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 124, 14, 12, "c.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1148:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 124, 14, 12, "f.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1165:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1166:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenSchedule()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1184:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1193:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1196:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(10, 50, 48, 63, "9power.raw",2);

                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1197:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(67, 50, 48, 63, "4dosing.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1198:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(124, 50, 48, 63, "4lights.raw",2);

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenDosing(byte)':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1213:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "10dose.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1222:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 293, 26, 26, "footextr.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1230:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 39, 46, 48,"15pump1.raw",2);

                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1231:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(70, 39, 46, 48,"15pump2.raw",2);

                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1232:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(128, 39, 46, 48,"15pump3.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1298:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(92, 170, 48, 48, "10test.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1329:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(92, 236, 48, 48, "10fill.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenPwrSchedule()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1351:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1363:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1403:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 94);         

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1424:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 94);         

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1442:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("S2", 64, 119);

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1453:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 102, 119);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1474:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 119);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1502:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 144);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1523:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 144);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1541:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("S2", 64, 168);

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1552:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 102, 168);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1573:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 168);

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1601:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 193);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1622:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 193);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1649:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 218);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1670:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 218);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1699:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 244);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1720:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 244);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1749:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 103, 268);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1770:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 152, 268);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenPwrScheduleItem(int)':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1794:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1803:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1817:27: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("H", 91, 77);

                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1822:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 172, 77);

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1827:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("H", 91, 158);

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1832:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 172, 158);

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1871:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("LIGHT2 S2", 96, 50);

                                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenPwrAuxItem(int)':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1971:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:1980:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2019:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("H", 112, 73);

                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2020:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("M", 178, 73);

                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2021:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("M", 112, 148);

                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2022:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("S", 178, 148);

                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2027:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("H", 112, 73);

                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2028:30: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("M", 178, 73);

                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2029:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("H", 112, 148);

                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2030:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myGLCD.print("M", 178, 148);

                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenATO()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2110:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "17ATO.raw",2);

                                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2119:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenResyncLights()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2188:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "5lights.raw");

                                           ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenLightRamps()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2215:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2227:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2246:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 104, 66, 19, "13ramp1.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2247:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 130, 66, 19, "13ramp2.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2248:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 156, 66, 19, "13ramp3.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2249:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 182, 66, 19, "13ramp4.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2250:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 208, 66, 19, "13ramp5.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2251:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(9, 234, 66, 19, "13ramp6.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2264:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 109);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2285:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 109);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2308:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 135);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2329:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 135);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2352:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 160);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2373:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 160);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2396:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 186);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2417:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 186);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2440:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 212);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2461:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 212);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2484:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 116, 238);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2505:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 196, 238);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2531:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 56, 288);         

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2552:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print(":", 176, 288);         

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenLightRampItem(byte)':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2579:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2594:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2599:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(15, 160, 29, 45, "14down.raw",2); // down arrow

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2609:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("H", 83, 103);

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2614:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 162, 103);

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2619:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("H", 83, 214);

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2624:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("M", 162, 214);

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenDosingSched(byte)':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2747:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "9sched.raw",2);

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2760:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footschd.raw",2);

                                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2763:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 61, 46, 48,"15pump1.raw",2);

                                              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2764:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 110, 46, 48,"15pump2.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2765:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(12, 159, 46, 48,"15pump3.raw",2);

                                               ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenScreen()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2875:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "16screen.raw");

                                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2966:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw");

                                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenLunar()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2977:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "21moon.raw");

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:2987:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw"); // footer button


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenColor(byte)':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:3067:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(2, 2, 30, 30, "22color.raw");

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:3077:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     myFiles.load(107, 294, 26, 26, "footextr.raw");  // footer settings button

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenGraphLEDs()':

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:3158:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(2, 2, 30, 30, "23graph.raw");

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino:3168:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myFiles.load(107, 294, 26, 26, "footextr.raw");  // footer settings button

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino: In function 'void processMyTouch()':

Touch:49: error: 'now' was not declared in this scope

         ATOPumpStartTime = now();


Touch:668: error: 'saveRTC' was not declared in this scope

       saveRTC.Hour=(saveRTC.Hour+1);


Touch:680: error: 'saveRTC' was not declared in this scope

       saveRTC.Hour=(saveRTC.Hour-1);


Touch:692: error: 'saveRTC' was not declared in this scope

       saveRTC.Minute=(saveRTC.Minute+1);

Touch:705: error: 'saveRTC' was not declared in this scope

       saveRTC.Minute=(saveRTC.Minute-1);


Touch:717: error: 'saveRTC' was not declared in this scope

       saveRTC.Second=(saveRTC.Second+1);

Touch:730: error: 'saveRTC' was not declared in this scope

       saveRTC.Second=(saveRTC.Second-1);

Touch:743: error: 'saveRTC' was not declared in this scope

       saveRTC.Month=(saveRTC.Month+1);

Touch:756: error: 'saveRTC' was not declared in this scope

       saveRTC.Month=(saveRTC.Month-1);


Touch:768: error: 'saveRTC' was not declared in this scope

       saveRTC.Day=(saveRTC.Day+1);


Touch:781: error: 'saveRTC' was not declared in this scope

       saveRTC.Day=(saveRTC.Day-1);


Touch:793: error: 'saveRTC' was not declared in this scope

       saveRTC.Year=(saveRTC.Year+1);

Touch:806: error: 'saveRTC' was not declared in this scope

       saveRTC.Year=(saveRTC.Year-1);


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:1037:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                        ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:1038:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:1055:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:1056:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                        ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:1277:50: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(92, 170, 48, 48, "10test2.raw"); 

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:1291:51: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(92, 170, 48, 48, "10test.raw",2);
J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:1374:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

       myFiles.load(92, 236, 48, 48, "10fill.raw");


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3158:55: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myFiles.load(210, 58, 26, 26, "footextr.raw",2); //draw setting button


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3176:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myFiles.load(210, 111, 26, 26, "footextr.raw",2);//draw setting button


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3194:56: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myFiles.load(210, 164, 26, 26, "footextr.raw",2);//draw setting button

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3294:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3295:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3312:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3313:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3387:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3388:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                        ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3405:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == true) myFiles.load(226, 190, 14, 12, "c.raw",2);

                                                                        ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:3406:72: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if(displayInC == false)myFiles.load(226, 190, 14, 12, "f.raw",2);

                                                                        ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:4234:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("H", 112, 73);

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:4235:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("M", 178, 73);

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:4236:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("M", 112, 148);

                                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:4237:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("S", 178, 148);

                                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:4243:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("H", 112, 73);

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:4244:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("M", 178, 73);

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:4245:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("H", 112, 148);

                                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino:4246:35: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         myGLCD.print("M", 178, 148);

                                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void updateAlarms()':

alarms:76: error: 'dowSunday' was not declared in this scope

     Alarm.alarmRepeat(dowSunday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:80: error: 'dowSunday' was not declared in this scope

     Alarm.alarmRepeat(dowSunday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:84: error: 'dowSunday' was not declared in this scope

     Alarm.alarmRepeat(dowSunday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:88: error: 'dowMonday' was not declared in this scope

     Alarm.alarmRepeat(dowMonday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:92: error: 'dowMonday' was not declared in this scope

     Alarm.alarmRepeat(dowMonday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:96: error: 'dowMonday' was not declared in this scope

     Alarm.alarmRepeat(dowMonday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:100: error: 'dowTuesday' was not declared in this scope

     Alarm.alarmRepeat(dowTuesday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:104: error: 'dowTuesday' was not declared in this scope

     Alarm.alarmRepeat(dowTuesday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:108: error: 'dowTuesday' was not declared in this scope

     Alarm.alarmRepeat(dowTuesday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:112: error: 'dowWednesday' was not declared in this scope

     Alarm.alarmRepeat(dowWednesday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:116: error: 'dowWednesday' was not declared in this scope

     Alarm.alarmRepeat(dowWednesday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:120: error: 'dowWednesday' was not declared in this scope

     Alarm.alarmRepeat(dowWednesday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:124: error: 'dowThursday' was not declared in this scope

     Alarm.alarmRepeat(dowThursday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:128: error: 'dowThursday' was not declared in this scope

     Alarm.alarmRepeat(dowThursday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:132: error: 'dowThursday' was not declared in this scope

     Alarm.alarmRepeat(dowThursday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:136: error: 'dowFriday' was not declared in this scope

     Alarm.alarmRepeat(dowFriday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:140: error: 'dowFriday' was not declared in this scope

     Alarm.alarmRepeat(dowFriday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:144: error: 'dowFriday' was not declared in this scope

     Alarm.alarmRepeat(dowFriday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

alarms:148: error: 'dowSaturday' was not declared in this scope

     Alarm.alarmRepeat(dowSaturday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

                       ^

alarms:152: error: 'dowSaturday' was not declared in this scope

     Alarm.alarmRepeat(dowSaturday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

                       ^

alarms:156: error: 'dowSaturday' was not declared in this scope

     Alarm.alarmRepeat(dowSaturday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

                       ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp1()':

alarms:553: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp2()':

alarms:610: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp3()':

alarms:667: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp4()':

alarms:724: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp5()':

alarms:781: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp6()':

alarms:851: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void rampToZero()':

alarms:1054: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

                             ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\startups.ino: In function 'void smartStartup()':

startups:489: error: 'now' was not declared in this scope

   time_t currentStamp = now();

                             ^

startups:490: error: 'year' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                      ^

startups:490: error: 'month' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                              ^

startups:490: error: 'day' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                                    ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\startups.ino: In function 'void smartStartupRamp()':

startups:671: error: 'now' was not declared in this scope

   time_t currentStamp = now();

                             ^

startups:672: error: 'year' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                      ^

startups:672: error: 'month' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                              ^

startups:672: error: 'day' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                                    ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\startups.ino: In function 'void smartStartupPower()':

startups:860: error: 'now' was not declared in this scope

   time_t currentStamp = now();

                             ^

startups:861: error: 'year' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                      ^

startups:861: error: 'month' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                              ^

startups:861: error: 'day' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

                                                    ^

exit status 1
'tmElements_t' does not name a type

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I don't have any idea, this is my first Arduino experiaence, plese can you help.
I use ds3231RTC, is this the error, but i had read somewhere that i can use Ds1307 library on DS3231 as well.


----------



## zlpa chawngthu

Here is with verbrose output.



Code:


Arduino: 1.8.5 (Windows 7), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Maitea\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -ide-version=10805 -build-path C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785 -warnings=none -build-cache C:\Users\Maitea\AppData\Local\Temp\arduino_cache_913045 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Maitea\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -ide-version=10805 -build-path C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785 -warnings=none -build-cache C:\Users\Maitea\AppData\Local\Temp\arduino_cache_913045 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino
Using board 'mega' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "nul"
Using cached library dependencies for file: C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\Sinclair_S.c
Using cached library dependencies for file: C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\arial_bold.c
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\Wire.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\UTFT\DefaultFonts.c" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\UTFT\UTFT.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\FatFile.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\FatFileLFN.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\FatFilePrint.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\FatFileSFN.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\FatVolume.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\FmtNumber.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\StdioStream.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\fstream.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\istream.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\FatLib\ostream.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\MinimumSerial.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\SdCard\SdSpiCard.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\SdCard\SdSpiCardEX.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\SdCard\SdioCardEX.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\SdCard\SdioTeensy.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\SpiDriver\SdSpiESP8266.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\SpiDriver\SdSpiSAM3X.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\SpiDriver\SdSpiSTM32F1.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\SdFat\src\SpiDriver\SdSpiTeensy3.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src\SPI.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw\UTFT_SdRaw.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\URTouch\URTouch.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms\TimeAlarms.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\IRremote\IRremote.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\OneWire\OneWire.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature\DallasTemperature.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master\Adafruit_PWMServoDriver.cpp" -o "nul"
Generating function prototypes...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\preproc\ctags_target_for_gcc_minus_e.cpp"
"C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\preproc\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
Using previously compiled file: C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\Sinclair_S.c.o
Using previously compiled file: C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\arial_bold.c.o
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT" "-IC:\Users\Maitea\Documents\Arduino\libraries\SdFat\src" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw" "-IC:\Users\Maitea\Documents\Arduino\libraries\URTouch" "-IC:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC" "-IC:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms" "-IC:\Users\Maitea\Documents\Arduino\libraries\IRremote" "-IC:\Users\Maitea\Documents\Arduino\libraries\OneWire" "-IC:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature" "-IC:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master" "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp" -o "C:\Users\Maitea\AppData\Local\Temp\arduino_build_938785\sketch\MrAqua_v2_5_1.ino.cpp.o"
In file included from J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:225:0:

C:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared

     static bool read(tmElements_t &tm);

                      ^

C:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared

     static bool write(tmElements_t &tm);

                       ^

In file included from J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino:227:0:

C:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms/TimeAlarms.h:71:31: error: 'timeDayOfWeek_t' does not name a type

   AlarmID_t alarmRepeat(const timeDayOfWeek_t DOW, const int H,  const int M,  const int S, OnTick_t onTickHandler); // as above, with day of week 

                               ^

C:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms/TimeAlarms.h:75:29: error: 'timeDayOfWeek_t' does not name a type

   AlarmID_t alarmOnce(const timeDayOfWeek_t DOW, const int H,  const int M,  const int S, OnTick_t onTickHandler); // as above, with day of week 

                             ^

MrAqua_v2_5_1:377: error: 'tmElements_t' does not name a type

 tmElements_t prevRTC, saveRTC;

 ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void setup()':

MrAqua_v2_5_1:754: error: 'setSyncProvider' was not declared in this scope

   setSyncProvider(RTC.get);

                          ^

MrAqua_v2_5_1:756: error: 'timeStatus' was not declared in this scope

   if(timeStatus()!= timeSet)

                 ^

MrAqua_v2_5_1:756: error: 'timeSet' was not declared in this scope

   if(timeStatus()!= timeSet)

                     ^

MrAqua_v2_5_1:759: error: 'saveRTC' was not declared in this scope

     saveRTC.Year = 45;

     ^

MrAqua_v2_5_1:765: error: 'makeTime' was not declared in this scope

     RTC.set(makeTime(saveRTC));

                             ^

MrAqua_v2_5_1:766: error: 'setTime' was not declared in this scope

     setTime(makeTime(saveRTC));

                              ^

MrAqua_v2_5_1:769: error: 'now' was not declared in this scope

   lastFeedingTime = now(); //not storing feeding time in eeprom due to high rate of writing

                         ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void loop()':

MrAqua_v2_5_1:880: error: 'now' was not declared in this scope

   time_t currentTime = now();

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkLightRamp()':

MrAqua_v2_5_1:1080: error: 'now' was not declared in this scope

   time_t currentTime = now();

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkATO()':

MrAqua_v2_5_1:1122: error: 'now' was not declared in this scope

         ATOStartTime = now();

                            ^

MrAqua_v2_5_1:1126: error: 'now' was not declared in this scope

       if(((now() - ATOStartTime) >= ATOWaitTime)&&(ATOPumpState == false))

                ^

MrAqua_v2_5_1:1139: error: 'now' was not declared in this scope

       if(((now() - ATOPumpStartTime) >= ATORunTime)&&(ATOPumpState == true))

                ^

MrAqua_v2_5_1:1179: error: 'now' was not declared in this scope

     if(((now() - ATOPumpStartTime) >= ATORunTime)&&(ATOPumpState == true))

              ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkFeeding()':

MrAqua_v2_5_1:1450: error: 'now' was not declared in this scope

     dimTime = now(); // keep the screen bright duing feeding

                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void drawFeeding()':

MrAqua_v2_5_1:1497: error: 'now' was not declared in this scope

     int feedingMinsLeft = (feedingTotalSeconds-(now()-startFeedingTime))/60;

                                                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkLighting()':

MrAqua_v2_5_1:1678: error: 'now' was not declared in this scope

     unsigned long rightNow = now();

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void feedingStop()':

MrAqua_v2_5_1:1843: error: 'now' was not declared in this scope

   lastFeedingTime = now();

                         ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void SaveTime()':

MrAqua_v2_5_1:1886: error: 'saveRTC' was not declared in this scope

   time_t saveTime = makeTime(saveRTC);

                              ^

MrAqua_v2_5_1:1886: error: 'makeTime' was not declared in this scope

   time_t saveTime = makeTime(saveRTC);

                                     ^

MrAqua_v2_5_1:1887: error: 'setTime' was not declared in this scope

   setTime(saveTime);

                   ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void updateTimeDate(boolean)':

MrAqua_v2_5_1:1898: error: 'hour' was not declared in this scope

   if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {

             ^

MrAqua_v2_5_1:1898: error: 'prevRTC' was not declared in this scope

   if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {

                ^

MrAqua_v2_5_1:1898: error: 'minute' was not declared in this scope

   if ((hour()!=prevRTC.Hour) || (minute()!=prevRTC.Minute) || updateTime) {

                                         ^

MrAqua_v2_5_1:1901: error: 'hourFormat12' was not declared in this scope

     if(displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);

                                                     ^

MrAqua_v2_5_1:1901: error: 'isPM' was not declared in this scope

     if(displayIn12Hr == true)printTime(hourFormat12() , minute(), isPM(), 180, 2);

                                                                        ^

MrAqua_v2_5_1:1909: error: 'day' was not declared in this scope

   if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {

            ^

MrAqua_v2_5_1:1909: error: 'prevRTC' was not declared in this scope

   if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {

               ^

MrAqua_v2_5_1:1909: error: 'month' was not declared in this scope

   if ((day()!=prevRTC.Day) || (month()!=prevRTC.Month) || updateTime) {

                                      ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void printValueUpdate()':

MrAqua_v2_5_1:1918: error: 'now' was not declared in this scope

   time_t printTime = now();

                          ^

MrAqua_v2_5_1:1920: error: 'hourFormat12' was not declared in this scope

   if(hourFormat12(printTime) < 10)Serial.print(F("0"));

                            ^

MrAqua_v2_5_1:1921: error: 'hourFormat12' was not declared in this scope

   Serial.print(hourFormat12(printTime));

                                      ^

MrAqua_v2_5_1:1923: error: 'minute' was not declared in this scope

   if(minute(printTime) < 10)Serial.print(F("0"));

                      ^

MrAqua_v2_5_1:1924: error: 'minute' was not declared in this scope

   Serial.print(minute(printTime));

                                ^

MrAqua_v2_5_1:1926: error: 'second' was not declared in this scope

   if(second(printTime) < 10)Serial.print(F("0"));

                      ^

MrAqua_v2_5_1:1927: error: 'second' was not declared in this scope

   Serial.print(second(printTime));

                                ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void printDate(int, int)':

MrAqua_v2_5_1:2012: error: 'weekday' was not declared in this scope

   strcat(chDate, dayShortStr(weekday()));

                                      ^

MrAqua_v2_5_1:2012: error: 'dayShortStr' was not declared in this scope

   strcat(chDate, dayShortStr(weekday()));

                                       ^

MrAqua_v2_5_1:2014: error: 'month' was not declared in this scope

   strcat(chDate, monthShortStr(month()));

                                      ^

MrAqua_v2_5_1:2014: error: 'monthShortStr' was not declared in this scope

   strcat(chDate, monthShortStr(month()));

                                       ^

MrAqua_v2_5_1:2016: error: 'day' was not declared in this scope

   itoa(day(), tmpChar, 10);

            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'time_t tmConvert_t(int, byte, byte, byte, byte, byte)':

MrAqua_v2_5_1:2026: error: 'tmElements_t' was not declared in this scope

   tmElements_t tmSet;

   ^

MrAqua_v2_5_1:2027: error: 'tmSet' was not declared in this scope

   tmSet.Year = YYYY - 1970;

   ^

MrAqua_v2_5_1:2033: error: 'makeTime' was not declared in this scope

   return makeTime(tmSet);         //convert to time_t

                        ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'int calcFeeding()':

MrAqua_v2_5_1:2106: error: 'now' was not declared in this scope

   time_t timeSinceLastFeed = now() - lastFeedingTime;

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'void checkLightFade(int, int)':

MrAqua_v2_5_1:2145: error: 'now' was not declared in this scope

     unsigned long rightNow = now();

                                  ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'byte lunarCycleScaling()':

MrAqua_v2_5_1:2560: error: 'tmElements_t' was not declared in this scope

   tmElements_t fixedDate = {0,35,20,0,7,1,0};

   ^

MrAqua_v2_5_1:2562: error: 'fixedDate' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                  ^

MrAqua_v2_5_1:2562: error: 'makeTime' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                           ^

MrAqua_v2_5_1:2563: error: 'now' was not declared in this scope

   long phase = (now() - newMoonCycle) % lp;

                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\MrAqua_v2_5_1.ino: In function 'byte getLunarCycleDay()':

MrAqua_v2_5_1:2571: error: 'tmElements_t' was not declared in this scope

   tmElements_t fixedDate = {0,35,20,0,7,1,0};

   ^

MrAqua_v2_5_1:2573: error: 'fixedDate' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                  ^

MrAqua_v2_5_1:2573: error: 'makeTime' was not declared in this scope

   time_t newMoonCycle = makeTime(fixedDate);

                                           ^

MrAqua_v2_5_1:2574: error: 'now' was not declared in this scope

   long phase = (now() - newMoonCycle) % lp;

                     ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenFeeding()':

Screens:141: error: 'now' was not declared in this scope

     startFeedingTime = now(); // mark when feeding started

                            ^

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Screens.ino: In function 'void screenClock()':

Screens:946: error: 'saveRTC' was not declared in this scope

   saveRTC.Hour = hour();


Screens:946: error: 'hour' was not declared in this scope

   saveRTC.Hour = hour();


Screens:947: error: 'minute' was not declared in this scope

   saveRTC.Minute = minute(); 


Screens:949: error: 'day' was not declared in this scope

   saveRTC.Day = day();


Screens:950: error: 'month' was not declared in this scope

   saveRTC.Month = month();


Screens:951: error: 'year' was not declared in this scope

   saveRTC.Year = (year()-1970);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\Touch.ino: In function 'void processMyTouch()':

Touch:49: error: 'now' was not declared in this scope

         ATOPumpStartTime = now();


Touch:668: error: 'saveRTC' was not declared in this scope

       saveRTC.Hour=(saveRTC.Hour+1);


Touch:680: error: 'saveRTC' was not declared in this scope

       saveRTC.Hour=(saveRTC.Hour-1);


Touch:692: error: 'saveRTC' was not declared in this scope

       saveRTC.Minute=(saveRTC.Minute+1);

Touch:705: error: 'saveRTC' was not declared in this scope

       saveRTC.Minute=(saveRTC.Minute-1);


Touch:717: error: 'saveRTC' was not declared in this scope

       saveRTC.Second=(saveRTC.Second+1);


Touch:730: error: 'saveRTC' was not declared in this scope

       saveRTC.Second=(saveRTC.Second-1);

Touch:743: error: 'saveRTC' was not declared in this scope

       saveRTC.Month=(saveRTC.Month+1);


Touch:756: error: 'saveRTC' was not declared in this scope

       saveRTC.Month=(saveRTC.Month-1);

Touch:768: error: 'saveRTC' was not declared in this scope

       saveRTC.Day=(saveRTC.Day+1);


Touch:781: error: 'saveRTC' was not declared in this scope

       saveRTC.Day=(saveRTC.Day-1);


Touch:793: error: 'saveRTC' was not declared in this scope

       saveRTC.Year=(saveRTC.Year+1);

Touch:806: error: 'saveRTC' was not declared in this scope

       saveRTC.Year=(saveRTC.Year-1);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void updateAlarms()':

alarms:76: error: 'dowSunday' was not declared in this scope

     Alarm.alarmRepeat(dowSunday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

alarms:80: error: 'dowSunday' was not declared in this scope

     Alarm.alarmRepeat(dowSunday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

alarms:84: error: 'dowSunday' was not declared in this scope

     Alarm.alarmRepeat(dowSunday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

alarms:88: error: 'dowMonday' was not declared in this scope

     Alarm.alarmRepeat(dowMonday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

alarms:92: error: 'dowMonday' was not declared in this scope

     Alarm.alarmRepeat(dowMonday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

alarms:96: error: 'dowMonday' was not declared in this scope

     Alarm.alarmRepeat(dowMonday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

alarms:100: error: 'dowTuesday' was not declared in this scope

     Alarm.alarmRepeat(dowTuesday, pump1.onHour,pump1.onMinute,0,AlarmMacros);


alarms:104: error: 'dowTuesday' was not declared in this scope

     Alarm.alarmRepeat(dowTuesday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

alarms:108: error: 'dowTuesday' was not declared in this scope

     Alarm.alarmRepeat(dowTuesday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

alarms:112: error: 'dowWednesday' was not declared in this scope

     Alarm.alarmRepeat(dowWednesday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

alarms:116: error: 'dowWednesday' was not declared in this scope

     Alarm.alarmRepeat(dowWednesday, pump2.onHour,pump2.onMinute,0,AlarmMicros);


alarms:120: error: 'dowWednesday' was not declared in this scope

     Alarm.alarmRepeat(dowWednesday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

alarms:124: error: 'dowThursday' was not declared in this scope

     Alarm.alarmRepeat(dowThursday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

alarms:128: error: 'dowThursday' was not declared in this scope

     Alarm.alarmRepeat(dowThursday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

alarms:132: error: 'dowThursday' was not declared in this scope

     Alarm.alarmRepeat(dowThursday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

alarms:136: error: 'dowFriday' was not declared in this scope

     Alarm.alarmRepeat(dowFriday, pump1.onHour,pump1.onMinute,0,AlarmMacros);


alarms:140: error: 'dowFriday' was not declared in this scope

     Alarm.alarmRepeat(dowFriday, pump2.onHour,pump2.onMinute,0,AlarmMicros);


alarms:144: error: 'dowFriday' was not declared in this scope

     Alarm.alarmRepeat(dowFriday, pump3.onHour,pump3.onMinute,0,AlarmExcel);


alarms:148: error: 'dowSaturday' was not declared in this scope

     Alarm.alarmRepeat(dowSaturday, pump1.onHour,pump1.onMinute,0,AlarmMacros);

alarms:152: error: 'dowSaturday' was not declared in this scope

     Alarm.alarmRepeat(dowSaturday, pump2.onHour,pump2.onMinute,0,AlarmMicros);

alarms:156: error: 'dowSaturday' was not declared in this scope

     Alarm.alarmRepeat(dowSaturday, pump3.onHour,pump3.onMinute,0,AlarmExcel);

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp1()':

alarms:553: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp2()':

alarms:610: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp3()':

alarms:667: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp4()':

alarms:724: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp5()':

alarms:781: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void AlarmRamp6()':

alarms:851: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\alarms.ino: In function 'void rampToZero()':

alarms:1054: error: 'now' was not declared in this scope

   fadeStartingSeconds = now();

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\startups.ino: In function 'void smartStartup()':

startups:489: error: 'now' was not declared in this scope

   time_t currentStamp = now();

startups:490: error: 'year' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

startups:490: error: 'month' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm


startups:490: error: 'day' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

J:\arduino\aquarium\mr man\MrAqua_v2_5_1\startups.ino: In function 'void smartStartupRamp()':

startups:671: error: 'now' was not declared in this scope

   time_t currentStamp = now();

startups:672: error: 'year' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

startups:672: error: 'month' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

startups:672: error: 'day' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm


J:\arduino\aquarium\mr man\MrAqua_v2_5_1\startups.ino: In function 'void smartStartupPower()':

startups:860: error: 'now' was not declared in this scope

   time_t currentStamp = now();

startups:861: error: 'year' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm
startups:861: error: 'month' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

startups:861: error: 'day' was not declared in this scope

   time_t midnight = tmConvert_t(year(),month(),day(),23,59,59); // current day 11:59:59pm

Using library Wire at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire 
Using library EEPROM at version 2.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM 
Using library UTFT in folder: C:\Users\Maitea\Documents\Arduino\libraries\UTFT (legacy)
Using library SdFat at version 1.0.3 in folder: C:\Users\Maitea\Documents\Arduino\libraries\SdFat 
Using library SPI at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI 
Using library UTFT_SdRaw in folder: C:\Users\Maitea\Documents\Arduino\libraries\UTFT_SdRaw (legacy)
Using library URTouch in folder: C:\Users\Maitea\Documents\Arduino\libraries\URTouch (legacy)
Using library DS1307RTC in folder: C:\Users\Maitea\Documents\Arduino\libraries\DS1307RTC (legacy)
Using library TimeAlarms in folder: C:\Users\Maitea\Documents\Arduino\libraries\TimeAlarms (legacy)
Using library IRremote in folder: C:\Users\Maitea\Documents\Arduino\libraries\IRremote (legacy)
Using library OneWire in folder: C:\Users\Maitea\Documents\Arduino\libraries\OneWire (legacy)
Using library DallasTemperature in folder: C:\Users\Maitea\Documents\Arduino\libraries\DallasTemperature (legacy)
Using library Adafruit_PWM_Servo_Driver_Library_master in folder: C:\Users\Maitea\Documents\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library_master (legacy)
exit status 1
'tmElements_t' does not name a type

Solved, TimeLib.h was not included.


----------



## Mikaila31

zlpa chawngthu said:


> Solved, TimeLib.h was not included.


I also ran into this trying to compile the code on arduino software 1.8.5. What I was able to get from google is in some of the arduino software updates they changed some of the library names. 1.8.5 gave me a ton of errors over time.h and 'day' not declared, ect. ect. You have to update libraries and change/replace the name in the code. I went to an older laptop that had arduino software version 1.6.6. It had no problem compiling and uploading Iaqua 2.5.1 using the files/libraries from the download as it recognized the out of date libraries. 

I have a question of my own. My iAqua is currently controlling a DIY LED. I'm having a lot of issues with the screen/software crashing and I'm not sure where to start troubleshooting. The best symptoms I can give is if I turn it on cold I can get into most all the settings, except almost always the page where you label the LED color channels. Trying to go to that screen results in it loading for 1/2 second then the screen going white. When its been on and running for awhile it gets more and more difficult to get into any of the settings. It will never crash on its own if I don't touch it. Once it gets warm it will crash repeatedly trying to get into the settings screen. Unplug and let it cool for 10 min I can again get into settings screen for a while before it starts crashing again. The temp association makes me think its a hardware issue but the fact that it will run fine all day if I don't touch it also makes me think software... lol.


----------



## MrMan

Mikaila31 said:


> I also ran into this trying to compile the code on arduino software 1.8.5. What I was able to get from google is in some of the arduino software updates they changed some of the library names. 1.8.5 gave me a ton of errors over time.h and 'day' not declared, ect. ect. You have to update libraries and change/replace the name in the code. I went to an older laptop that had arduino software version 1.6.6. It had no problem compiling and uploading Iaqua 2.5.1 using the files/libraries from the download as it recognized the out of date libraries.
> 
> I have a question of my own. My iAqua is currently controlling a DIY LED. I'm having a lot of issues with the screen/software crashing and I'm not sure where to start troubleshooting. The best symptoms I can give is if I turn it on cold I can get into most all the settings, except almost always the page where you label the LED color channels. Trying to go to that screen results in it loading for 1/2 second then the screen going white. When its been on and running for awhile it gets more and more difficult to get into any of the settings. It will never crash on its own if I don't touch it. Once it gets warm it will crash repeatedly trying to get into the settings screen. Unplug and let it cool for 10 min I can again get into settings screen for a while before it starts crashing again. The temp association makes me think its a hardware issue but the fact that it will run fine all day if I don't touch it also makes me think software... lol.


Do you have another SD card you could try? If its only having issues when going through the different screens it could be due to having issues loading images from the card. Not sure, just a thought.

If you want to eliminate temperature as an issue grab a fan (PC or just a giant room fan, whatever) and point it at the controller, then if it still has issues it's likely not temperature related. If it works perfectly then it could be the LDO overheating or maybe it just draws more power in general when warm and the supply can't handle it.


----------



## zlpa chawngthu

Mikaila31 said:


> I also ran into this trying to compile the code on arduino software 1.8.5. What I was able to get from google is in some of the arduino software updates they changed some of the library names. 1.8.5 gave me a ton of errors over time.h and 'day' not declared, ect. ect. You have to update libraries and change/replace the name in the code. I went to an older laptop that had arduino software version 1.6.6. It had no problem compiling and uploading Iaqua 2.5.1 using the files/libraries from the download as it recognized the out of date libraries.
> 
> I have a question of my own. My iAqua is currently controlling a DIY LED. I'm having a lot of issues with the screen/software crashing and I'm not sure where to start troubleshooting. The best symptoms I can give is if I turn it on cold I can get into most all the settings, except almost always the page where you label the LED color channels. Trying to go to that screen results in it loading for 1/2 second then the screen going white. When its been on and running for awhile it gets more and more difficult to get into any of the settings. It will never crash on its own if I don't touch it. Once it gets warm it will crash repeatedly trying to get into the settings screen. Unplug and let it cool for 10 min I can again get into settings screen for a while before it starts crashing again. The temp association makes me think its a hardware issue but the fact that it will run fine all day if I don't touch it also makes me think software... lol.



So the culprit is arduino 1.8.5, i suspect it, but instead of using v1.6.6 i am doing the hard way, if i had known it earlier it would save me lot of times, thanks anyway, i will try it again on v1.6.6 on my spare board.

I also get some graphic problem when running longer, i only use the usb power and i connect only LCD+TFT shield and RTC, my problem is that when startup from cold, the display ran perfect but going to some menus i got some color like green color here and there also the icon get blurred, i suspect my card, but didn't have spare yet, i had some card like the card from old Nokia cell phone which do not have the locking switch but i could not make them run, so i grab a card from my old fuji camera and it works but now just like your problem. Can it be the ILI 9341 LCD, i use TFT_320QDT


----------



## zlpa chawngthu

Just curious, what is the relay Light1 & Light2 used for? Is it to connect to the power supply of RGBW driver??


----------



## litzel

looks amazing, congrats!!


----------



## Mikaila31

I tried another SD card with no difference. I found and ordered another screen off Amazon ili9841 or similar. I also ordered a cable for the screen as I work on starting to make a housing. I plan to trying a different mega and different combinations of screens and see if there are any changes.


----------



## Le Gui

Mikaila31 said:


> I tried another SD card with no difference. I found and ordered another screen off Amazon ili9841 or similar. I also ordered a cable for the screen as I work on starting to make a housing. I plan to trying a different mega and different combinations of screens and see if there are any changes.


Hi,

At the bigining, I had the same problem.

Solved with changing SD card speed.
In the main INO file, search for

// init SD card

and change speed value
sd.begin(ChipSelect, SPI_FULL_SPEED);
//sd.begin(ChipSelect, SPI_HALF_SPEED);

I hope it can help!


----------



## zlpa chawngthu

@Le Gui.

Seeing your board what mosfet you use to control your LED Strips?


----------



## Le Gui

zlpa chawngthu said:


> @Le Gui.
> 
> Seeing your board what mosfet you use to control your LED Strips?


Hi!

Mosfet are "STP16NF06L" N-Chanel, 16 A 60 V A-220, 3 pin

:wink2:


----------



## sushant

i'm glad to see that this post is still active and all the transformation this controller has been through.

Sent from my ASUS_Z00ED using Tapatalk


----------



## Mikaila31

Le Gui said:


> Hi,
> 
> At the bigining, I had the same problem.
> 
> Solved with changing SD card speed.
> In the main INO file, search for
> 
> // init SD card
> 
> and change speed value
> sd.begin(ChipSelect, SPI_FULL_SPEED);
> //sd.begin(ChipSelect, SPI_HALF_SPEED);
> 
> I hope it can help!


I tried this and no change in how mine is behaving 

My secondary screen arrived and the proper cable to mount the screen away from the board. The cable works great... but turns our the screen I ordered doesn't have touch capabilities... lol facepalm/ 

I took a short video of how my iAqua behaves. Its almost impossible to get into 'Color' settings. I've done it maybe twice. It will load partly for a spit second then white screen. Then as I mess with it, it starts white screening going into settings or on other pages. It will only crash when navigating to a different screen. I'm still unsure where the issue lies... if its hardware issue, software crash, only screen crashing, or something else entirely. 

Edit: I let it run with the screen white this evening and it properly ramped down the LEDs from sun to moon settings while the screen was white. So the software seems to still be running?....


----------



## MrMan

Mikaila31 said:


> I tried this and no change in how mine is behaving
> 
> My secondary screen arrived and the proper cable to mount the screen away from the board. The cable works great... but turns our the screen I ordered doesn't have touch capabilities... lol facepalm/
> 
> I took a short video of how my iAqua behaves. Its almost impossible to get into 'Color' settings. I've done it maybe twice. It will load partly for a spit second then white screen. Then as I mess with it, it starts white screening going into settings or on other pages. It will only crash when navigating to a different screen. I'm still unsure where the issue lies... if its hardware issue, software crash, only screen crashing, or something else entirely.
> 
> Edit: I let it run with the screen white this evening and it properly ramped down the LEDs from sun to moon settings while the screen was white. So the software seems to still be running?....
> iAqua White Screen - YouTube


I'd almost think it was one of the images on the color screen but there's only the two. Try commenting out lines in "void screenColor" to see if something in that function specifically is causing an issue. Start with the lines where it loads the raw files.


----------



## Mikaila31

MrMan said:


> I'd almost think it was one of the images on the color screen but there's only the two. Try commenting out lines in "void screenColor" to see if something in that function specifically is causing an issue. Start with the lines where it loads the raw files.


Thanks for the help! I started troubleshooting at this point and seemed to be having success commenting out the color screen images when I was hooked up to the computer. However as soon as I switched back to using the 12v input on the shield same problems again. Could this be a power issue with a regulator on the board? I started trouble shooting with 5v or 12v power at the arduino- I can load the color screen fine. 12V at the shield - white screen at the color screen, 12v at shield and 12v or 5v at the arduino - white screen at the color screen. I tried a second mega and 12v at the shield and no change.


----------



## sushant

tried installing v2.5.1 on 1.6.6 and arduino web editor, but getting the following error:



Code:


./opt/arduino-builder/arduino-builder -compile -core-api-version 10611 -build-path /tmp/811136722/build -hardware opt/arduino-builder/hardware -hardware ./opt/cores -tools opt/arduino-builder/tools -tools ./opt/tools -built-in-libraries opt/libraries/latest -libraries /tmp/811136722/pinned -libraries /tmp/811136722/custom -fqbn arduino:avr:mega:cpu=atmega2560 -build-cache /tmp -logger humantags -verbose=false /tmp/811136722/arduino2.5.1

Multiple libraries were found for "UTFT_SdRaw.h"

Used: /tmp/811136722/custom/UTFT_SdRaw

Not used: /home/admin/builder/opt/libraries/latest/utft_sdraw-1-2-4

Multiple libraries were found for "DS1307RTC.h"

Used: /tmp/811136722/custom/DS1307RTC

Not used: /home/admin/builder/opt/libraries/latest/ds1307rtc-1-4-0

Multiple libraries were found for "IRremote.h"

Used: /tmp/811136722/custom/IRremote

Not used: /home/admin/builder/opt/libraries/latest/irremote-2-2-3

Multiple libraries were found for "OneWire.h"

Used: /tmp/811136722/custom/OneWire

Not used: /home/admin/builder/opt/libraries/latest/onewire-2-3-3

Not used: /home/admin/builder/opt/libraries/latest/max31850-onewire-1-0-1

Multiple libraries were found for "DallasTemperature.h"

Used: /tmp/811136722/custom/DallasTemperature

Not used: /home/admin/builder/opt/libraries/latest/max31850-dallastemp-1-0-0

Not used: /home/admin/builder/opt/libraries/latest/dallastemperature-3-7-6

Multiple libraries were found for "Adafruit_PWMServoDriver.h"

Used: /tmp/811136722/custom/Adafruit_PWM_Servo_Driver_Library_master

Not used: /home/admin/builder/opt/libraries/latest/adafruit-pwm-servo-driver-library-1-0-0

Not used: /home/admin/builder/opt/libraries/latest/adafruit-pwm-servo-driver-library-1-0-0

Not used: /home/admin/builder/opt/libraries/latest/adafruit-pwm-servo-driver-library-1-0-0

Not used: /home/admin/builder/opt/libraries/latest/adafruit-pwm-servo-driver-library-1-0-0

Multiple libraries were found for "SdFat.h"

Used: /tmp/811136722/custom/SdFat

Not used: /home/admin/builder/opt/libraries/latest/sdfat-1-0-5

Multiple libraries were found for "Time.h"

Used: /tmp/811136722/custom/Time

Not used: /home/admin/builder/opt/libraries/latest/time-1-5-0

Multiple libraries were found for "TimeAlarms.h"

Used: /tmp/811136722/custom/TimeAlarms

Not used: /home/admin/builder/opt/libraries/latest/timealarms-1-5-0

Multiple libraries were found for "EEPROM.h"

Used: /home/admin/builder/opt/cores/arduino/avr/libraries/EEPROM

Not used: /home/admin/builder/opt/libraries/latest/arduino-nvm-0-9-1

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino: In function 'void setup()':

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:866:23: error: 'readBargraphColors' was not declared in this scope

{readBargraphColors(); }

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:869:22: error: 'readScreenSettings' was not declared in this scope

readScreenSettings();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:873:20: error: 'readFeedSettings' was not declared in this scope

readFeedSettings();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:876:19: error: 'readATOSettings' was not declared in this scope

readATOSettings();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:879:22: error: 'readSensorSettings' was not declared in this scope

readSensorSettings();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:882:21: error: 'readPowerSchedule' was not declared in this scope

readPowerSchedule();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:885:20: error: 'readRampSchedule' was not declared in this scope

readRampSchedule();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:888:22: error: 'readDosingSchedule' was not declared in this scope

readDosingSchedule();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:894:16: error: 'updateAlarms' was not declared in this scope

updateAlarms();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:899:16: error: 'smartStartup' was not declared in this scope

smartStartup();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:909:14: error: 'screenHome' was not declared in this scope

screenHome();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino: In function 'void loop()':

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:957:22: error: 'processMyTouch' was not declared in this scope

processMyTouch();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:992:43: error: 'updateAlarms' was not declared in this scope

if (dispScreen == 9) updateAlarms(); // this will rebuild all of the schedules

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:995:28: error: 'smartStartupRamp' was not declared in this scope

smartStartupRamp();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:996:30: error: 'setStartupLighting' was not declared in this scope

setStartupLighting();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:998:20: error: 'screenHome' was not declared in this scope

screenHome();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1038:24: error: 'AlarmPwrAux1_Off' was not declared in this scope

AlarmPwrAux1_Off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1047:24: error: 'AlarmPwrAux2_Off' was not declared in this scope

AlarmPwrAux2_Off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino: In function 'void checkLightRamp()':

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1135:39: error: 'screenHome' was not declared in this scope

if (dispScreen == 1) screenHome(); // redraw the home screen if we are home

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino: In function 'void checkTemp()':

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1285:28: error: 'AlarmPwrHeat_Off' was not declared in this scope

AlarmPwrHeat_Off(); // turn off heater power

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1294:27: error: 'AlarmPwrHeat_On' was not declared in this scope

AlarmPwrHeat_On(); // turn heater back on

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1330:19: error: 'alarmFan1on' was not declared in this scope

alarmFan1on();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1341:20: error: 'alarmFan1off' was not declared in this scope

alarmFan1off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1367:19: error: 'alarmFan2on' was not declared in this scope

alarmFan2on();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1378:20: error: 'alarmFan2off' was not declared in this scope

alarmFan2off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino: In function 'void feedingStop()':

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1890:52: error: 'AlarmPwrHeat_On' was not declared in this scope

if (preFeedPower.pwrHeat == 1) AlarmPwrHeat_On();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1891:58: error: 'AlarmPwrHeat_Off' was not declared in this scope

else if (preFeedPower.pwrHeat == 0) AlarmPwrHeat_Off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1895:50: error: 'AlarmPwrCO2_On' was not declared in this scope

if (preFeedPower.pwrCO2 == 1) AlarmPwrCO2_On();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1896:56: error: 'AlarmPwrCO2_Off' was not declared in this scope

else if (preFeedPower.pwrCO2 == 0) AlarmPwrCO2_Off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1900:56: error: 'AlarmPwrFilter_On' was not declared in this scope

if (preFeedPower.pwrFilter == 1) AlarmPwrFilter_On();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1901:62: error: 'AlarmPwrFilter_Off' was not declared in this scope

else if (preFeedPower.pwrFilter == 0) AlarmPwrFilter_Off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1905:52: error: 'AlarmPwrCirc_On' was not declared in this scope

if (preFeedPower.pwrCirc == 1) AlarmPwrCirc_On();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1906:58: error: 'AlarmPwrCirc_Off' was not declared in this scope

else if (preFeedPower.pwrCirc == 0) AlarmPwrCirc_Off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1910:52: error: 'AlarmPwrAux1_On' was not declared in this scope

if (preFeedPower.pwrAux1 == 1) AlarmPwrAux1_On();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1911:58: error: 'AlarmPwrAux1_Off' was not declared in this scope

else if (preFeedPower.pwrAux1 == 0) AlarmPwrAux1_Off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1915:52: error: 'AlarmPwrAux2_On' was not declared in this scope

if (preFeedPower.pwrAux2 == 1) AlarmPwrAux2_On();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1916:58: error: 'AlarmPwrAux2_Off' was not declared in this scope

else if (preFeedPower.pwrAux2 == 0) AlarmPwrAux2_Off();

^

/tmp/811136722/arduino2.5.1/arduino2.5.1.ino:1924:35: error: 'screenHome' was not declared in this scope

if (dispScreen == 2) screenHome(); // Return to the home screen

^

exit status 1


----------



## MrMan

Mikaila31 said:


> Thanks for the help! I started troubleshooting at this point and seemed to be having success commenting out the color screen images when I was hooked up to the computer. However as soon as I switched back to using the 12v input on the shield same problems again. Could this be a power issue with a regulator on the board? I started trouble shooting with 5v or 12v power at the arduino- I can load the color screen fine. 12V at the shield - white screen at the color screen, 12v at shield and 12v or 5v at the arduino - white screen at the color screen. I tried a second mega and 12v at the shield and no change.


Do you have a second 5V power supply? Maybe try disconnecting the LDO and run each rail (5V and 12V) from it's own supply.


----------



## sgianim

Hello. Anyone had problems with the dosing pump part? 
The micro pump receives the multiple command and throws all the fertilizer into the aquarium. 
The macro pump goes normal. The micro is set for daily fertilization and the macro is only three days a week.


----------



## zlpa chawngthu

Le Gui said:


> Hi!
> 
> Mosfet are "STP16NF06L" N-Chanel, 16 A 60 V A-220, 3 pin
> 
> :wink2:


Thanks 
@MrMan
I look at your board and i was a little confuse with the PWM pin 2-7 which is assigned for Led 1-6 but you also used PCA9685, do i need to use both or its an option of using PWM pins or PCA chip?


----------



## MrMan

zlpa chawngthu said:


> Thanks
> @MrMan
> I look at your board and i was a little confuse with the PWM pin 2-7 which is assigned for Led 1-6 but you also used PCA9685, do i need to use both or its an option of using PWM pins or PCA chip?


It's designed to use either. You can install the PCA chip OR jumper the resistor pads to use pwm pins.

Sent from my Nexus 6P using Tapatalk


----------



## zlpa chawngthu

MrMan said:


> It's designed to use either. You can install the PCA chip OR jumper the resistor pads to use pwm pins.
> 
> Sent from my Nexus 6P using Tapatalk


Thank You again, cleared.

The software part, for me, is over, i had integrated the PWM part from Le Gui and some minor changes (like disable the IR, ambient, etc).
The Hardest part for me, the PCB, i had never ever design a PCB using PCB software, in the old days we use to draw it using a marker and etch it, i had watched a lot of Eagle tutorial but my brain could not follow them, beside i would like to etch it by myself, looks like it would take a longer time for me to finish the project, i may had to manually draw the circuit as well, after all its a very fun project.


----------



## coldpenguin

Is there a wiki/website/code repository set up for this? Reading through 128 pages to find what version/components might be the latest, is difficult (at least to me). I think 2.0.1 might be the latest code attachment? (Unless the information is in someone's signature link, which being new, I can't actually see!)


----------



## krushnareddyt07

I am very much interested in this project. Some one please let me that which is latest version and if possible link to it.
I cannot find the latest one.


Sent from my ZUK Z2132 using Tapatalk


----------



## cairo

@krushnareddyt07 Link to latest version is at the end of the post #1319


----------



## MrMan

coldpenguin said:


> Is there a wiki/website/code repository set up for this? Reading through 128 pages to find what version/components might be the latest, is difficult (at least to me). I think 2.0.1 might be the latest code attachment? (Unless the information is in someone's signature link, which being new, I can't actually see!)


Not so much for the original iAqua, but most of that is early in the thread. As Cairo mentioned you can check my sig (post 1319) for my version, which added a couple features and I made my own PCB for.



cairo said:


> @krushnareddyt07 Link to latest version is at the end of the post #1319


I updated it again for v2.5.2 which is now on github.


----------



## coldpenguin

MrMan said:


> Not so much for the original iAqua, but most of that is early in the thread. As Cairo mentioned you can check my sig (post 1319) for my version, which added a couple features and I made my own PCB for.
> 
> 
> 
> I updated it again for v2.5.2 which is now on github.


Thank you both for the pointers, I still don't have enough posts to be able to see peoples signatures!


----------



## cairo

coldpenguin said:


> Thank you both for the pointers, I still don't have enough posts to be able to see peoples signatures!


Github link https://github.com/NineteenFire/MrAqua


----------



## Mikaila31

MrMan said:


> Do you have a second 5V power supply? Maybe try disconnecting the LDO and run each rail (5V and 12V) from it's own supply.


Sorry for the delay but I tried powering just the 5V rail on the shield and it would still white out at the color screen, it also ran very rough between screen transitions. I'm really confused on where the issue is. Works fine when powered 5v through arduino but powering it via the 5v rail doesn't work well. I've tested voltage 5v and 3.3v at spots on the shield and I can't find anything different between the two different power methods. What, if anything, do I by-pass on the shield by powering it through the arduino?


----------



## MrMan

Mikaila31 said:


> Sorry for the delay but I tried powering just the 5V rail on the shield and it would still white out at the color screen, it also ran very rough between screen transitions. I'm really confused on where the issue is. Works fine when powered 5v through arduino but powering it via the 5v rail doesn't work well. I've tested voltage 5v and 3.3v at spots on the shield and I can't find anything different between the two different power methods. What, if anything, do I by-pass on the shield by powering it through the arduino?


I wouldn't think you'd be bypassing anything. The 5V pin of the arduino connects to the 5V rail of the shield, when you plug in USB it connects to the 5V rail through a diode inside a FET but I'm not sure the small voltage drop from the diode should change anything. You're sure the 5V power supply you used has a high enough current rating?


----------



## napaeozapus

Wow, I’m about cross-eyed from reading through this thread. Some pretty amazing work has been done to develop this controller. I must admit I am curious to know how many people have implemented it successfully. So I guess I am asking if this controller is good to go or if it isn’t yet ready for prime time?


Sent from my iPhone using Tapatalk


----------



## fietsenrex

napaeozapus said:


> Wow, I’m about cross-eyed from reading through this thread. Some pretty amazing work has been done to develop this controller. I must admit I am curious to know how many people have implemented it successfully. So I guess I am asking if this controller is good to go or if it isn’t yet ready for prime time?
> 
> 
> Sent from my iPhone using Tapatalk


It is plug and pray sort of 
It runs, I had the original build running for over a year, then swapped the hardware for the mrman shield and is now running for over a half year


----------



## krushnareddyt07

MrMan said:


> Not so much for the original iAqua, but most of that is early in the thread. As Cairo mentioned you can check my sig (post 1319) for my version, which added a couple features and I made my own PCB for.
> 
> 
> 
> I updated it again for v2.5.2 which is now on github.


Dear MrMan could you pls share open file of PCB Circuit as i cannot upload gerber files to PCB printing services.


----------



## MrMan

krushnareddyt07 said:


> Dear MrMan could you pls share open file of PCB Circuit as i cannot upload gerber files to PCB printing services.


What do you mean you can't upload gerber files to the board shop? That's generally all they will accept and what I used to order the boards.


----------



## krushnareddyt07

MrMan said:


> What do you mean you can't upload gerber files to the board shop? That's generally all they will accept and what I used to order the boards.


It is showing 300mm x 300mm whereas the board size is 100x100. If possible pls share cad file.

Sent from my Pixel 2 XL using Tapatalk


----------



## MrMan

krushnareddyt07 said:


> It is showing 300mm x 300mm whereas the board size is 100x100. If possible pls share cad file.
> 
> Sent from my Pixel 2 XL using Tapatalk


Just downloaded the gerbers and confirmed the board outline is 100x100mm, there is text for each layer off to the side but board shops know to exclude that, as more than one person has had these made. If you're still having issues PM me as I have extra boards.


----------



## tony85lamb

Does a 3.2" have to be used or can I use a different size as they are quite hard come by or there quite expensive in the UK even on ebay

Sent from my SM-G900F using Tapatalk


----------



## AgMa

tony85lamb said:


> Does a 3.2" have to be used or can I use a different size as they are quite hard come by or there quite expensive in the UK even on ebay
> 
> Sent from my SM-G900F using Tapatalk


Yes you can use bigger tft but you will have to redraw all image files and make them bigger or change their position, or else there will be empty spaces in screen.


----------



## janos

Hi to all.wonderful project,would be nice to do,but as a newbie never know where to start.Anybody ever made a page or .zip file where a newbie could download the project or least read threw what is the latest,and greatest thing right now.MrMan have lot of post,AnotherHobby is the starter,robsworld78,he is very successful but not in the forum any more,he sell hes unit for 500.00 us.What is i could not afford, O2surplus have hes own board,so let just tell for a newbie there is a no ending read and confuse.Sorry if i offend anybody and thank you for your time and patient.


----------



## MrMan

janos said:


> Hi to all.wonderful project,would be nice to do,but as a newbie never know where to start.Anybody ever made a page or .zip file where a newbie could download the project or least read threw what is the latest,and greatest thing right now.MrMan have lot of post,AnotherHobby is the starter,robsworld78,he is very successful but not in the forum any more,he sell hes unit for 500.00 us.What is i could not afford, O2surplus have hes own board,so let just tell for a newbie there is a no ending read and confuse.Sorry if i offend anybody and thank you for your time and patient.


This gets asked pretty often but no, there isn't really a single post that summarizies everything. The original AnotherHobby project was done on a breadboard and later updated to use a shield done by O2, that information is fairly scattered and I don't think that board is available anymore. I did a shield myself that added a few extra features and I have some available as well and I've posted the PCB files for people to build. Here is the link to my post:

http://www.plantedtank.net/forums/2...uarium-controller-arduino-88.html#post8379497


----------



## janos

Thank you MrMan for your replay,downloaded everything,even from GitHub, now just one more Q:do anybody sell your board somewhere?Thank you for your time


----------



## zlpa chawngthu

@MrMan,

I had been busy building the PCB shield, last night i test my pcb it is working, but i had problem in the setting/feeding, there is only 6 icons, the 2 light icons vanished, what could be the cause, i thought it was my mistake while modding your code so i used your code (without modding) but still no light icons on setting/feeding, at the home screen these icons and all the icons were there but these 2 icons are greyed out, do you disable these 2 icons on your code


----------



## MrMan

zlpa chawngthu said:


> @MrMan,
> 
> I had been busy building the PCB shield, last night i test my pcb it is working, but i had problem in the setting/feeding, there is only 6 icons, the 2 light icons vanished, what could be the cause, i thought it was my mistake while modding your code so i used your code (without modding) but still no light icons on setting/feeding, at the home screen these icons and all the icons were there but these 2 icons are greyed out, do you disable these 2 icons on your code


Yup, removed lights from the feeding menu in the later release

Sent from my Nexus 6P using Tapatalk


----------



## zlpa chawngthu

MrMan said:


> Yup, removed lights from the feeding menu in the later release
> 
> Sent from my Nexus 6P using Tapatalk



Oh, lol, i thought it was my mistake. Thanks.

BTW could you suggest me what LL Mostfet to use for driving the LEDs, or any drivers to build.


----------



## ranjib

this is awesome! Thanks for sharing


----------



## zlpa chawngthu

@MrMan

I need your help again, so everything except led/heatsingk temp is working fine, i thought it was a problem in my shield and change pin 47 (sensorW) to pin 49 (sensorH) but still sensorH is not working on pin47, sensorW is working on pin49, if i change sensorW to any pin (i,e 47,48,49) it is working but sensorH does not work on any pin, change the temp prob still sensorH is not working, this prove that my shield is not the problem but it may be in the code, last night i trace your code but i could not find any problem (maybe because of my first time arduino). What could be the problem, how do i enable the led temp. Is it at the dallas library.

Solved by copying check temp of sensorW to sensorH and comment on the next function of sensorH.


----------



## MrMan

zlpa chawngthu said:


> @MrMan
> 
> I need your help again, so everything except led/heatsingk temp is working fine, i thought it was a problem in my shield and change pin 47 (sensorW) to pin 49 (sensorH) but still sensorH is not working on pin47, sensorW is working on pin49, if i change sensorW to any pin (i,e 47,48,49) it is working but sensorH does not work on any pin, change the temp prob still sensorH is not working, this prove that my shield is not the problem but it may be in the code, last night i trace your code but i could not find any problem (maybe because of my first time arduino). What could be the problem, how do i enable the led temp. Is it at the dallas library.
> 
> Solved by copying check temp of sensorW to sensorH and comment on the next function of sensorH.


Looks like I screwed something up when playing around with using Serial2 for communications with a LED module, ended up scrapping that idea for the WiFi LED I just built. I've updated the github code back to the older version code that should work.


----------



## pietro.santagata

Hello everyone, these days I found this controller and I'm trying to use it, however I do not see some icons, I loaded on the SD all the files indicated at the beginning of the thread, has anyone had the same problem?


----------



## AgMa

You can try a different sd card and see if works.

I want to add a flow meter (Hall Effect) so I will know when my filter needs cleaning (also I do my water changes with the help of my canister filter, so I will also know how many litres to drain). Can anyone help me with the code? I need itoa to convert int to chars and print it on screen?


----------



## pietro.santagata

yes I tried, but nothing


----------



## janos

*TFT screen*

Hi to all what is the screen size max what i could use?Thank you


----------



## MrMan

janos said:


> Hi to all what is the screen size max what i could use?Thank you


The code is designed for a 3.2" screen (320x240). If you wanted to go bigger you'd have to update the code and likely graphics.


----------



## Subjected

Hi, I'm new here. Been reading this entire thread with interest.
MrMan, would you happen to have any left over spare boards laying around and if so could I get one? If not is the newest files on page 88?
Thanks in advance.


----------



## Haedsector

Hi, 
ich hab mir ein Gehäuse designt für den 3D Drucker, wenn jemand interesse hat.

https://www.thingiverse.com/thing:2791517


----------



## napaeozapus

Now that is sweet! A 3D printed home for your iAqua. The link is to the maker files for it.


Sent from my iPhone using Tapatalk


----------



## zlpa chawngthu

Problem again, whch off power filter and solenoid of co2 the mega just hang or reset, ia it EMI transient, how do you build yours, mine is in a tight cabinet with all the parts.


----------



## MrMan

zlpa chawngthu said:


> Problem again, whch off power filter and solenoid of co2 the mega just hang or reset, ia it EMI transient, how do you build yours, mine is in a tight cabinet with all the parts.


Could be EMI, I'm using an isolated relay module which should prevent any noise from making its way to the arduino and haven't had any issues. Keep in mind that for the isolated relay modules you find on the bay you need a separate power supply for it to be truly isolated:

Relay isolation


----------



## zlpa chawngthu

MrMan said:


> Could be EMI, I'm using an isolated relay module which should prevent any noise from making its way to the arduino and haven't had any issues. Keep in mind that for the isolated relay modules you find on the bay you need a separate power supply for it to be truly isolated:
> 
> Relay isolation


Thats the exact problem, relay is opto isolated but made in china and i am using 12v supply which is for the relay and regulated to 5v for mega!! I changed the power supply which i took from an old dialup router, which had 12v and 5v output and also i made RC Snubber , now problem solved. Thanks again @mr man, now i run my i-aqua, its working nicely but could not test the lighting part because i had with me just an old led lamp without dimming, i had interest in your LM3414hv led driver, that would be my next project.


----------



## aash.nuka

Hi MrMan. 
First and foremost, i really like this project and have to praise the time and effort put into it. really amazing work. 
I am in the process of building one of these and i myself and an arduino beginner. 
i have a small issue at the moment. 
My touch screen doesnt seem to work. 
I opened the serial monitor and regardless of where i touch on the screen, the x,y values are -1,-1

I have configured the display using 
CTE32_R2 for the utft
mytouch as (6,5,4,3,2)

i have tried calibrating the display and i ran some example sketches which both seem to work perfectly fine (Quickdraw and touch buttons from the utouch library)

any idea what i might be doing wrong and how to fix this?


----------



## MrMan

aash.nuka said:


> Hi MrMan.
> First and foremost, i really like this project and have to praise the time and effort put into it. really amazing work.
> I am in the process of building one of these and i myself and an arduino beginner.
> i have a small issue at the moment.
> My touch screen doesnt seem to work.
> I opened the serial monitor and regardless of where i touch on the screen, the x,y values are -1,-1
> 
> I have configured the display using
> CTE32_R2 for the utft
> mytouch as (6,5,4,3,2)
> 
> i have tried calibrating the display and i ran some example sketches which both seem to work perfectly fine (Quickdraw and touch buttons from the utouch library)
> 
> any idea what i might be doing wrong and how to fix this?


There are overlaps on pins if you use pins 2-6 which is why the TFT shield is supposed to be modified (or use my shield which does the same). The code sets those pins as PWM output for LEDs so when you also try to use them for the touch it will probably not work. Check the early pages of this thread to see how to modify your TFT shield.


----------



## Adr3k

Hello, I have a question, is it possible to compile this program under 2.8 "tft ??


----------



## MrMan

Adr3k said:


> Hello, I have a question, is it possible to compile this program under 2.8 "tft ??


It's written to run on a 320x240 screen, you can use a 2.8" tft but you'd have to go through the code and adjust image locations and touch areas.


----------



## Adr3k

Hello, I have a question if anyone has a working sketch with Ph probes????


----------



## engi

*Lights*

Hi,

I don't really understand how lights are managed in iAqua.
There are 8 pins dedicated to light.
What is their role ?
I own a freshwater aquarium and I only use a single white led ramp.
I would like to use iAqua to turn on this ramp in the morning and turn it off at night, with fade effect.
I do not use an extra card, only an arduino mega.
Is it possible to use Mega PWM capacities to do that ?
Should I edit the source code?

TIA,
Nicolas


----------



## plant_guru

Ok. So being absent from the forum for a while, and this project, I decided to do some work on it recently. I have all the wiring done, it worked before my project was on a break. I go to plug everything in (with a new 20" extension cable for the screen made from 24AWG silicone wire, and dupont connectors. Now, nothing on the screen works. No icons, but the screen lights up and dims after a certain amount of time. What am I doing wrong.


----------



## MrMan

plant_guru said:


> it worked before my project was on a break. I go to plug everything in (with a new 20" extension cable for the screen made from 24AWG silicone wire, and dupont connectors)


If it worked before you added your new cable have you tried removing that cable to see if it still works with the original setup?


----------



## plant_guru

MrMan said:


> If it worked before you added your new cable have you tried removing that cable to see if it still works with the original setup?


I asked some local arduino experts locally and I made mistake. I did not mount the touch screen shield with the screen in the box. Only the screen. Moved it across and it all works...... kinda.... now dealing with the relays not working. But I will fix it


----------



## plant_guru

Ok I found a bug in the software that I have. When I click dosing, it crashes completely 

Video here:
https://photos.app.goo.gl/Yk2kvlp2NPJgR0Uf2


----------



## MrMan

plant_guru said:


> Ok I found a bug in the software that I have. When I click dosing, it crashes completely
> 
> Video here:
> https://photos.app.goo.gl/Yk2kvlp2NPJgR0Uf2


I actually had a similar problem with that screen and ended up re-organizing the code so that it printed stuff out in a different order and it went away, so I didn't really figure out the cause. What software version are you using?


----------



## plant_guru

MrMan said:


> I actually had a similar problem with that screen and ended up re-organizing the code so that it printed stuff out in a different order and it went away, so I didn't really figure out the cause. What software version are you using?


I do believe it is 1.0.4.

Now I have been playing with the relay board and I cannot get the iAqua screen to turn any of the receptacles off. I have 5V to the 8 relay module board along with 110V hot to each of the modules, and the ground and neutral to the receptacles. Any hint on how to troubleshoot this?


----------



## plant_guru

so on my relay module, I have 5VDC powering it. Is it capable of 12V?


----------



## MrMan

plant_guru said:


> I do believe it is 1.0.4.
> 
> Now I have been playing with the relay board and I cannot get the iAqua screen to turn any of the receptacles off. I have 5V to the 8 relay module board along with 110V hot to each of the modules, and the ground and neutral to the receptacles. Any hint on how to troubleshoot this?


I'd suggest trying my updated software, has some improvements over 1.0.4 and may fix your restarting issue on the dosing screen. You can go to my post linked in my signature to find a link to the github page.

For the relay module, forget AC power for now and just focus on getting the relays to toggle. The software uses analog pins A0 - A7, so when you're in the power screen toggling the outlets on/off measure the voltage on those pins and make sure they're changing between 0 and 5V. If they are then the problem is either your relay module or how you've wired it.



plant_guru said:


> so on my relay module, I have 5VDC powering it. Is it capable of 12V?


If you look at the relays it says "SRD-05VDC", the 05VDC means the relay coil is rated for 5V so you should not use 12V. If your particular relay says "SRD-12VDC" then you should be using 12V.


----------



## engi

engi said:


> Hi,
> 
> I don't really understand how lights are managed in iAqua.
> There are 8 pins dedicated to light.
> What is their role ?
> I own a freshwater aquarium and I only use a single white led ramp.
> I would like to use iAqua to turn on this ramp in the morning and turn it off at night, with fade effect.
> I do not use an extra card, only an arduino mega.
> Is it possible to use Mega PWM capacities to do that ?
> Should I edit the source code?
> 
> TIA,
> Nicolas


Nobody has an answer to my question ? :crying:


----------



## MrMan

engi said:


> I don't really understand how lights are managed in iAqua.
> There are 8 pins dedicated to light.
> What is their role ?


There are 8 pins for power outlets, ie 120/220Vac. There are 4 (original iAqua) or 6 (MrAqua) PWM pins for ramping. These provide PWM to ramp suitable LEDs up/down throughout the day.



> I do not use an extra card, only an arduino mega.


What do you mean extra card, SD card? That is needed to store images. 



> Should I edit the source code?


If you want to sure. The functions of this project are on the very first post or on my post/github page. If it doesn't have what you want then yes you could modify the code so it does.


----------



## engi

MrMan said:


> What do you mean extra card, SD card? That is needed to store images..


Thanks for your explanations, it's very clear.
By extra card, I meant PCA9865.
I don't have this card and I want to use only Mega's PWM pins.
Is it possible ?


----------



## MrMan

engi said:


> Thanks for your explanations, it's very clear.
> By extra card, I meant PCA9865.
> I don't have this card and I want to use only Mega's PWM pins.
> Is it possible ?


Assuming you're using my code just change this boolean to false instead of true



Code:


//If PCA9865 is installed this is true, otherwise it is false to use Arduino PWM pins
boolean PCA9685Installed = true;

iAqua only uses Mega pin PWM.


----------



## plant_guru

I think I found the problem with my relay module. When I was wiring it up, I did not send a common ground from the main board to the relay board. Am I correct? So on the right side of my pic where the red and black wires are, I should use the ground for the modules to complete the circuit?


----------



## engi

MrMan said:


> Assuming you're using my code just change this boolean to false instead of true
> 
> 
> 
> Code:
> 
> 
> //If PCA9865 is installed this is true, otherwise it is false to use Arduino PWM pins
> boolean PCA9685Installed = true;
> 
> iAqua only uses Mega pin PWM.


Thanks MrMan :smile2:


----------



## MrMan

plant_guru said:


> I think I found the problem with my relay module. When I was wiring it up, I did not send a common ground from the main board to the relay board. Am I correct? So on the right side of my pic where the red and black wires are, I should use the ground for the modules to complete the circuit?


Yes you need to have the grounds connected. You may also want to consider using your relay board in an isolated fashion to reduce any EMI concerns, assuming your board has the isolation circuit.

Relay isolation

In this case you wouldn't have the grounds connected just the arduino pins and +5V, the relays would be powered by a separate supply.


----------



## plant_guru

MrMan said:


> Yes you need to have the grounds connected. You may also want to consider using your relay board in an isolated fashion to reduce any EMI concerns, assuming your board has the isolation circuit.
> 
> Relay isolation
> 
> In this case you wouldn't have the grounds connected just the arduino pins and +5V, the relays would be powered by a separate supply.


So I am a little confused by this. so on the board with the relay control center that I have, I would the the ground from there and run it with the wires to the relay module board? But my relay module board has it's own 5V supply.


----------



## David Nottelling

Hi everyone, I'm interested in building this but had a question or 2. 
I see the talks about a new board made specifically for this, will the files on the first post still work without this new board... If I buy the TFT and shield for the mega?
My second question is about the fritzing download. I think I missed something in the thread, and didn't see a search thread option.... that's the prototyping board on the left for? I see macro motor listed on the out/in puts, but haven't see those in the thread.

Edit: I got the 3 basic parts today (Mega, LCD and shield), tried uploading the code and got the 2 errors "sinclair and arial" that needed const placed in front of them, and now I'm getting an error ( 'setSyncProvider' was not declared in this scope ). Anyone still monitoring this that can help? I've tried both IDE 1.8.5 and 1.5.7, both with the same message.


----------



## David Nottelling

dead thread....


----------



## Dementor

Hey David
Try looking up MrAqua. It’s on github. You should be able to find all the code and pics there from anotherhobby and someone who added code. Hopefully that will help. I’ve searched the web like a mad man for this info lol


----------



## MrMan

David Nottelling said:


> Hi everyone, I'm interested in building this but had a question or 2.
> I see the talks about a new board made specifically for this, will the files on the first post still work without this new board... If I buy the TFT and shield for the mega?
> My second question is about the fritzing download. I think I missed something in the thread, and didn't see a search thread option.... that's the prototyping board on the left for? I see macro motor listed on the out/in puts, but haven't see those in the thread.
> 
> Edit: I got the 3 basic parts today (Mega, LCD and shield), tried uploading the code and got the 2 errors "sinclair and arial" that needed const placed in front of them, and now I'm getting an error ( 'setSyncProvider' was not declared in this scope ). Anyone still monitoring this that can help? I've tried both IDE 1.8.5 and 1.5.7, both with the same message.





Dementor said:


> Hey David
> Try looking up MrAqua. It’s on github. You should be able to find all the code and pics there from anotherhobby and someone who added code. Hopefully that will help. I’ve searched the web like a mad man for this info lol


This thread has been around a long time and there are a lot of posts so it can be hard to follow. The most recent update was done by me and I've tried to make a more central location on github for my contributions but my post wasn't till page 88 so it's hard to see when you start the thread at the beginning. I don't check the forum too frequently these days, had two kids since I posted my update so less free time.

Since you probably can't see the link to my post in my signature due to your low post count here is my post and github page:
https://www.plantedtank.net/forums/...uarium-controller-arduino-88.html#post8379497
https://github.com/NineteenFire/MrAqua

David, you didn't mention which code you were using, if it's the original code it was never udpated for newer arduino IDE versions, my code should work with 1.8.5 though as long as you have the libraries needed (which are linked in my github page). I never did a fritzing diagram since I made my own custom PCB, the files for that are on my first post, but not recommended unless you have soldering experience since there are fine pitch parts on it.


----------



## David Nottelling

MrMan said:


> This thread has been around a long time and there are a lot of posts so it can be hard to follow. The most recent update was done by me and I've tried to make a more central location on github for my contributions but my post wasn't till page 88 so it's hard to see when you start the thread at the beginning. I don't check the forum too frequently these days, had two kids since I posted my update so less free time.
> 
> Since you probably can't see the link to my post in my signature due to your low post count here is my post and github page:
> https://www.plantedtank.net/forums/...uarium-controller-arduino-88.html#post8379497
> https://github.com/NineteenFire/MrAqua
> 
> David, you didn't mention which code you were using, if it's the original code it was never udpated for newer arduino IDE versions, my code should work with 1.8.5 though as long as you have the libraries needed (which are linked in my github page). I never did a fritzing diagram since I made my own custom PCB, the files for that are on my first post, but not recommended unless you have soldering experience since there are fine pitch parts on it.


Thank you MrMan, I'll check the link out. 
I was able to get the code posted in the first page by AnotherHobby to work since my post on it.... took a bit of work to get all the errors worked out but google helped a lot.
I've since got it working to a point I got the boards designed by O2Surplus made and for the most part built, but still can't get the backlight or return to home screen operational. 
I'm very much a noob when it comes to arduino or electronics, been a mechanic for years so my wiring/electrical experience is more geared toward home/auto. 
It looks like maybe the older screens used in this thread, and ones this circuit was designed for, used a positive input on pin 19 of the screen (as the transistor taps into +5vdc and pin 8 before LCD pin 19). If this is true, this could be the issue as the kits (arduino, shield and TFT) I just got on amazon, now use a ground signal on that pin to control the backlight. Not 100% sure if this is the problem or how to convert the wiring or code (if needed).


----------



## Dementor

Thanks MrMan

I managed to get the zip file from GitHub. I love what its capable of doing. Searching for the parts online as we speak.
I'm in no way clued up on this stuff so pretty much a dummy. I was wondering if you guys could help out with the basic steps as reading all of this could take me days. Is there maybe a step by step tutorial somewhere that I can use.
I've loaded the Arduino software, selected the mega board. Managed to open the codes. but each time I select verify it comes back with errors. Clearly missing a step somewhere. Please help if possible and if you have the time.


----------



## David Nottelling

Dementor said:


> Thanks MrMan
> 
> I managed to get the zip file from GitHub. I love what its capable of doing. Searching for the parts online as we speak.
> I'm in no way clued up on this stuff so pretty much a dummy. I was wondering if you guys could help out with the basic steps as reading all of this could take me days. Is there maybe a step by step tutorial somewhere that I can use.
> I've loaded the Arduino software, selected the mega board. Managed to open the codes. but each time I select verify it comes back with errors. Clearly missing a step somewhere. Please help if possible and if you have the time.


I didn't use that version of the code, but what errors are you getting.... having just battled that on the original files, I might be able to help.


----------



## Dementor

Hi. I'm sorry as I am very new to this and could be coming across as thick. I took the alarm sketch and said verify. In doing so I got this error " 'Alarm' was not declared in this scope. "


This is directly from the zip folder, not sure if I have to include other stuff or not.


----------



## David Nottelling

Dementor said:


> Hi. I'm sorry as I am very new to this and could be coming across as thick. I took the alarm sketch and said verify. In doing so I got this error " 'Alarm' was not declared in this scope. "
> 
> 
> This is directly from the zip folder, not sure if I have to include other stuff or not.


I just downloaded that one and think I found your problem. If you open the MrAqua.ino file it will prompt you that it needs to be in its own folder. Agree to the error message and let it place that in a new folder. After that's done, move the remaining items (Screens, Sinclair, Touch, Alarms, arial_bold and startups) into that new folder. 
Open the MrAqua.ino again and you should see tabs in the IDE program for each of those.... they all work together as one.


----------



## Dementor

Finally after downloading about a million libraries I'm getting somewhere.lol

After verifying I got this 1 error:


variable 'Sinclair_S' must be const in order to be put into read-only section by means of '__attribute__((progmem))'


----------



## Dementor

Like a Boss. haha

Finally got both codes to run.

Had to change the Sinclair file in Notepad to read 

const char instead of uint8_t then the same had to apply to the arial_bold file.

After that it was smooth sailing

Oh Yeah


----------



## sushant

I wasn't able to troubleshoot, please Load the files somewhere.

Sent from my ASUS_X00TD using Tapatalk


----------



## Dementor

https://www.thingiverse.com/thing:3016726/files


You should fine them there, the other controller is on GitHub. just search for MrAqua.


Also you will need to update your libraries. I had to download a few

UTFT.zip

URTouch.zip

UTouch-master.zip

tinyFat.zip

RTClib-master.zip

TimeAlarms.zip

Time-master.zip

OneWire.zip

DallasTemperature.zip

SdFat-master.zip

UTFT_SdRaw-master.zip

That's about it for iAque


The rest are for MrAque

DS1307RTC.zip

Adafruit-PWM-Servo-Driver-Library-Master.zip

galileo-Pgmspace.h-master.zip

IRremote-2.2.3.zip


Worked for me. So hopefully helps you


In Arduino go to Sketch>Include Library>Add.ZIP Library... then browse and select. It should show you that the library has been added successfully.


----------



## David Nottelling

Made some progress the last few days. Got the auto-dim working, and all that's left is to make and mount it in a case. I would like to edit the v2 board by O2surplus to save others some time and streamline the build but I'm unsure how to really do so. 
The fix to the diming was first to swap the 5 volt feed to the diming transistor for a ground feed, and second to use a 2N3906 transistor instead of the BC337.
As I'm not sure if the change would be needed for all TFT shields or screens, I'd like to edit the PCD O2surplus made to include 3 pads where the 5v line enters the transistor. 1 pad for each the 5v, collector and ground. Then, depending on the screen set up, a solder bridge could connect the middle (collector) pad to the appropriate supply pad, and a MMBT3906 be soldered instead of the MMBT2222A. If O2surplus is still around here and willing, maybe you could edit the original and release a v3? Or if anyone else reading knows how to do this, contact me and I can link to or include your changes in the Thingiverse page mentioned above.
Per Dementor's suggestion, I also plan on editing that page to include a link or files for the libraries needed to get the project running. I think, and reason I made the page, is because I believe in doing so, it might make the build easier for others to do as all the info is accessible in one central location


----------



## jeffkrol

David Nottelling said:


> If O2surplus is still around here


Very sadly, O2surplus has passed away...

06/26/2018


> Hi RC guys,
> I am deeply saddened to inform that Arron has passed away. I kept in touch with Aaron ( O2Surplus ) every few months through phone conversations and lost touch ~two months ago. His wife reached out to me to inform me and I plan on visiting his Life Celebration in September.
> 
> He was a great man and helped me in the beginning of NanoBox. I know he helped MANY others on here and different forums. He also introduced me to fly fishing which has been a life changing hobby for me.
> 
> Take a few minutes out of your day to think about him if he helped you!


http://www.reefcentral.com/forums/showthread.php?t=2677797&page=3&highlight=o2surplus


----------



## David Nottelling

I'm sorry to hear that. I was hoping he was still using this forum so I could thank him for his design, it works great and ordering a board with his files was flawless. 
Thank you for letting me/ us know.


----------



## Dementor

Terrible to hear.

What an unfortunate loss. Rest in piece.

Your legacy will live on in all of us...


----------



## David Nottelling

One last issue I'm encountering. I got the program and hardware working and tested for a few days.... for the most part.
The issue I'm having is when I hit "feeding", the screen flashed to something like 9999minutes before returning home and from there the Arduino is unresponsive, with the exception of the auto dimming. The screen backlight reacts to touch, fades out and such, but button do nothing till reset (power pulled and plugged back in).
I've read this kind of behavior can be due to the RTC (loose or long wires) but in my case, using O2's board, I can't see either being an issue.


----------



## Cools

I'm very impressed with this design, however I'm finding it hard to source a suitable screen. I think they're not produced any more. I take it its got to be 16b parallel communication, 320x240 to avoid a long redo of the graphics, and got to not have pins like a mega shield as the wrong pins would be used. The only option I can find is your suggestion from Itead: https://www.itead.cc/itdb02-3-2s-v2.html at $19 however that comes from china and delivery to the UK is over $30. Do you have any other suggested screens?


----------



## David Nottelling

Cools said:


> I'm very impressed with this design, however I'm finding it hard to source a suitable screen. I think they're not produced any more. I take it its got to be 16b parallel communication, 320x240 to avoid a long redo of the graphics, and got to not have pins like a mega shield as the wrong pins would be used. The only option I can find is your suggestion from Itead: https://www.itead.cc/itdb02-3-2s-v2.html at $19 however that comes from china and delivery to the UK is over $30. Do you have any other suggested screens?




I've so far gotten everything off Amazon for mine (USA here) but just ordered this screen https://www.aliexpress.com/item/3-2...een-Controller-Panel-ILI9341/32840829424.html and this TFT shield https://www.aliexpress.com/item/TFT...681.html?spm=a2g0s.9042311.0.0.21c94c4dpdQIZJ . 
Still waiting to get them and test them, but they look like the same things I've go working already. 
Still having issue with lock up when I press "feed", even with nothing plugged into it or told to activate.... but aside from that issue, and a work around for dimming, it works fine with O2's board.


----------



## Gray_Wolf

hi to all, anybody have the file of IAqua ? especialy the file of the schematic, because the link in the description are down. thanks


----------



## Dementor

https://www.thingiverse.com/thing:3016726

everything should be there Wolf.


----------



## Dementor

@Wolf

Also look at page 132. A bit of info there for if you get stuck.


----------



## Gray_Wolf

Dementor said:


> @Wolf
> 
> Also look at page 132. A bit of info there for if you get stuck.


ok i think I have the complete software called "Mr.Aqua 2.3.4" to put on arduino mega, now im gettin stuck with the hardware, now i need a simple scheme for the cards to buy and how to connect them, but if there are so many microcomponents i don't now how to proceed. :S


----------



## Gray_Wolf

Dementor said:


> @*Wolf*
> 
> Also look at page 132. A bit of info there for if you get stuck.


i need help with the connection and the hardware parts


----------



## Gray_Wolf

somebody can help me please?


----------



## Dementor

Wolf, have a look at page 3 and page 5 to 9. You will find diagrams and illustrations.


----------



## VHRCH

Hi every body


I´m working in my project and I need help from you. I´m using the code of Iaqua Master wich is limited for 4 channel of light and 2 pump, I want to add 6 channel of light and 4 pump. Can someone help me on it? Or a suggestion, Or a code that can I used on it?


Thank you

https://www.plantedtank.net/forums/pGallery.php?do=view&rdo=myGallery&id=17677&cat=0&order=&page=0

https://www.plantedtank.net/forums/pGallery.php?do=view&rdo=myGallery&id=17679&cat=0&order=&page=0


----------



## Dementor

@VHRCH


I think this is what you looking for

https://github.com/NineteenFire/MrAqua


----------



## p_cipri

Hello. the project presented here is a superb one. I'd like to use it for a koi crawfish pond. I would be interested in starting out if she can check the PH, and then 2, 3 pumps, 2, 3 auxiliary relays.


----------



## AgMa

@MrMan I found some new images in your new code regarding cooling, but I only found the small ones.
Are there the bigger ones too for the power screen? Thanks.


----------



## kidco

*Help*

Good day, I have one question, maybe I missed while reading the forum, but i have a problem with aux1,aux2 and air pump.
I can manually push them on the power button, but they will not activate themselves when I set them in shedule.


----------



## Klaeri68

Hello everybody here.

Im new and from Germany and my english is not so good.

I read a lot of here in this Forum over this project.
I build for my aquarium with a mega and a 7" TFT and MrAqua's last sketch the System.
But i have a Problem with the Ramps. The first and the second one will chance but the others wont.
It freeze always in the mid sun - then the PWM will not change.
when im going in the settings and then in light i can change and resinc and it will be in the right light mod when i switched back - 
but the ramp wont do somthing

I don't understand this.

Can sombody help me?

Thanks 
klaeri68
(Frank)


----------



## Toni67

MrMan said:


> Here are the PCB files and updated code:
> 
> PCB Files
> 
> PCB BOM
> 
> v2.3.4 Jan 18, 2016
> 
> v2.3.6 Sept 20, 2016
> 
> v2.5.1 Feb 16, 2017
> 
> v2.5.2 Jan 2, 2018 (moved to github)


Hi, i'm trying to instal this but the home page seems to have bugs, i think the last version is missing some files.

"v2.5.1" on dropbox has 188 files in "SD Card Images" folder while "v2.5.2" on github has only 99 files in it.

I tried to use the missing files from the previous version on the new one, the home page look more normal but nothing happen if i touch the screen, i can't even enter any menu.

Since i use standard TFT shield i modified this line to use the correct pins for my board but with no success :



Code:


UTFT myGLCD(SSD1289,38,39,40,41); // start up an instance of the TFT screen
//URTouch myTouch(46,45,44,43,42);  // start up an instance of for touch
URTouch myTouch(6, 5, 4, 3, 2); // For standard TFT shield

There anything more we have to do hardware wise to make it work with standard TFT shield?


----------



## MrMan

Toni67 said:


> Hi, i'm trying to instal this but the home page seems to have bugs, i think the last version is missing some files.
> 
> "v2.5.1" on dropbox has 188 files in "SD Card Images" folder while "v2.5.2" on github has only 99 files in it.
> 
> I tried to use the missing files from the previous version on the new one, the home page look more normal but nothing happen if i touch the screen, i can't even enter any menu.
> 
> Since i use standard TFT shield i modified this line to use the correct pins for my board but with no success :
> 
> 
> 
> Code:
> 
> 
> UTFT myGLCD(SSD1289,38,39,40,41); // start up an instance of the TFT screen
> //URTouch myTouch(46,45,44,43,42);  // start up an instance of for touch
> URTouch myTouch(6, 5, 4, 3, 2); // For standard TFT shield
> 
> There anything more we have to do hardware wise to make it work with standard TFT shield?


Try removing this section as it's trying to use the same pins as the TFT shield would be:



Code:


// used for PWM lighting control
  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);
  pinMode(led4Pin, OUTPUT);
  pinMode(led5Pin, OUTPUT);
  pinMode(led6Pin, OUTPUT);

You'll also have to make sure PCA9685Installed is set to true even if it isn't or the code will try to set pins 2-6 to PWM for the LEDs.

Also, I fixed the missing SD card images from Github, you can only upload 100 files at a time and I guess I forgot to add the remaining after.


----------



## Jaimelito

Hi, I'm waiting for the parts to asemble the iAqua. and i choose to the 7" TFT can you upload your code.

Thanks in advance.




Klaeri68 said:


> Hello everybody here.
> 
> Im new and from Germany and my english is not so good.
> 
> I read a lot of here in this Forum over this project.
> I build for my aquarium with a mega and a 7" TFT and MrAqua's last sketch the System.
> But i have a Problem with the Ramps. The first and the second one will chance but the others wont.
> It freeze always in the mid sun - then the PWM will not change.
> when im going in the settings and then in light i can change and resinc and it will be in the right light mod when i switched back -
> but the ramp wont do somthing
> 
> I don't understand this.
> 
> Can sombody help me?
> 
> Thanks
> klaeri68
> (Frank)


----------



## Toni67

MrMan said:


> Try removing this section as it's trying to use the same pins as the TFT shield would be:
> 
> 
> 
> Code:
> 
> 
> // used for PWM lighting control
> pinMode(led1Pin, OUTPUT);
> pinMode(led2Pin, OUTPUT);
> pinMode(led3Pin, OUTPUT);
> pinMode(led4Pin, OUTPUT);
> pinMode(led5Pin, OUTPUT);
> pinMode(led6Pin, OUTPUT);
> 
> You'll also have to make sure PCA9685Installed is set to true even if it isn't or the code will try to set pins 2-6 to PWM for the LEDs.
> 
> Also, I fixed the missing SD card images from Github, you can only upload 100 files at a time and I guess I forgot to add the remaining after.


Thank you!

Shunting my shield fixed it but the files are very welcome.

Coming from a modded version of Ferduino i find this one way more reactive, light transition is also smoother and easier to setup, everything i wanted, thx again to you and OP for sharing your project roud:


----------



## Jaimelito

Bryanmc1988 said:


> sorry brain dead right now, i'm working but i have no idea what this meant right now lol
> 
> 
> but i was looking at this thread that you made here for the 5-7" lcd
> 
> https://www.plantedtank.net/forums/showthread.php?t=784562
> 
> what did u need help with on the hardware stuff... maybe i can help with that... lol i made my own controller for a vivarium but got lazy of the time wasted on making one for an aquarium as there are so many out there already...
> 
> 
> my arduino vivarium controller photos:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> i had also started making a aquarium one to but stopped 10% of the way cause it would have been hours on end making it again lol but here is a glimps of what i started for an aquarium:


I'm trying to view the thread that says works with 5" 7" tft but the forum returns me that 



Code:


Jaimelito, you do not have permission to access this page. This could be due to one of several reasons:

Your user account may not have sufficient privileges to access this page. Are you trying to edit someone else's post, access administrative features or some other privileged system?
If you are trying to post, the administrator may have disabled your account, or it may be awaiting activation.

I've been modifying the code to resize the images and touch areas but doesn't work very well, in the tests that i have made the images shows data corruption.

If anybody has the code that works well in 7" tft and wants to share I appeciate it.


Merry Christmas to all.


----------



## rieders

*Dimming Fail*

Hello

I'm trying to get iAqua up and running.
Actually, it is synonymous but when I try to dimming the Arduino crashes and then takes over the new brightness without dimming.
I would find it more beautiful if the Arduino does not crash and nice and slow dimming.
Do I have to set something in the setup?
I have an 8 relay module. PCA9685 and the TouchDisplay on the Arduino.
Do I still need to connect the temperature sensors so that the watchdog does not sound alarm?

Greetings André


----------



## fietsenrex

did you wire the PWM properly and did you set the boolean regarding PWM correctly?
should be around line 490 (at least in 2.3.6)


Code:


// if you have a Current Satellite Plus, this is true
// if you are controlling your lights directly with PWM, this is false
boolean lightCSP = false;
int maxIR = 100; //using e-series

//If PCA9865 is installed this is true, otherwise it is false to use Arduino PWM pins
boolean PCA9685Installed = false;


----------



## rieders

*Dimming Fail*

Hello

Thank you for your prompt reply.
I have the attitude, nevertheless, the Arduino went out while dimming briefly.
I have now hung the Rails module and the PCA to another source of voltage.
Until now it works.
Class work from you.
Since I can connect my LED lighting.

Greetings André


----------



## David Nottelling

rieders said:


> Hello
> 
> I'm trying to get iAqua up and running.
> Actually, it is synonymous but when I try to dimming the Arduino crashes and then takes over the new brightness without dimming.
> I would find it more beautiful if the Arduino does not crash and nice and slow dimming.
> Do I have to set something in the setup?
> I have an 8 relay module. PCA9685 and the TouchDisplay on the Arduino.
> Do I still need to connect the temperature sensors so that the watchdog does not sound alarm?
> 
> Greetings André


I had issues with dimming on mine, not sure if the MRMan build solved it as I didn't see his before ordering parts. For mine, the issue was the LCD I got needed a ground for dimming the screen and as set in the original instructions, it's based off a screen that uses power. Idk if that could be the issue your having, but...

Bump: Having an issue with mine after running fine for a few months and wanted to ask here is anyone else has had the same issues.... before diving into it.
On one build, the relays no longer activate/deactivate via time. They do turn on/off manually when I select them in the power menu, but the automation is not working for some of them (Aux 1, heater and CO2) while working for the rest.
On a second build, the screen becomes responsive, but does continue to run the program and screen brightens when touched.... just doesn't move to the button pushed.
I have tried other Arduinos for both, and both work the same regardless. 
Anyone have any ideas? 

Also, if Mr Man is listening... Can I use your sketch with O2's board or would I need to modify something to use what I have with yours?


----------



## MrMan

David Nottelling said:


> Also, if Mr Man is listening... Can I use your sketch with O2's board or would I need to modify something to use what I have with yours?


Should be OK I think, most pins are the same between iAqua and MrAqua software. Dosing pump3 won't work, and if you're using LEDs only ch2/3/4/5 would work unless you update my software to use the same pins as iAqua.


----------



## laszlojoni

*Help about MrAqua x.ino codes*

Hello Guys,


Thank You for your hard work about this project to all ppl here.
I just read the whole thread and downloaded all of the available source, so im at the start line 
Have only one question about mraqua codes.
mraqua.ino : i understand it-OK

But there are: alarms.ino, screens.ino, startups.ino, and touch.ino
What are they for?


Thank you so much?
BR.


Laszlo


----------



## fietsenrex

laszlojoni said:


> Hello Guys,
> 
> 
> Thank You for your hard work about this project to all ppl here.
> I just read the whole thread and downloaded all of the available source, so im at the start line <a href="http://www.plantedtank.net/forums/images/smilie/icon_smile.gif" border="0" alt="" title="Smile" ></a>
> Have only one question about mraqua codes.
> mraqua.ino : i understand it-OK
> 
> But there are: alarms.ino, screens.ino, startups.ino, and touch.ino
> What are they for?
> 
> 
> Thank you so much?
> BR.
> 
> 
> Laszlo


Just compile and upload 😉
These are different tabs for different parts of the code, But you need them to get the system working


----------



## laszlojoni

Thank You so much.
Just ordered all of the parts. Im at the research phase now.

One more question about the 5V regulator. In the thread there are a lots of comment about it. Somewhere I read about you have to use, somewhere not.

What is the point about it?

Thank You,
BR.
Laszlo


----------



## Michele73

Hello everyone,
I must say that this work is really nice and well done congratulations I've been following you for a long time but,
But I have some problems to solve, in practice the dosing pumps work in the testing phase and here everything is fine in the application, but when I set the times do not work I checked for what I understand the code but I do not come to head. There is some good soul that can help me thank you very much.
I was forgetting about the composition of the hardware:
arduino mega,
3.2 "inch TFT LCD touch screen with SD,
DS3231 clock module,
PCA9685
Version I am using MyAqua V 2.5.3


----------



## rieders

Hello

I have the problem again with the crash when dimming.
I did a video once.

https://photos.google.com/share/AF1...?key=aW9Rdmk0MG15cW9LODh6MFFZZW1tcVNuRGx0OThn

Maybe someone has the same effect and a solution for me.

greetings
André


----------



## laszlojoni

wrong comment sorry

Bump:


robsworld78 said:


> I'm using the IRFZ44N. I can't read your schematic o2, I found another that's the same but more notes but its just heating up the transistor as well. I'll try what you posted renesis.



IRFZ44N should work. The Vgs(th)= https://www.infineon.com/dgdl/irfz44n.pdf?fileId=5546d462533600a40153563b3575220b

BR.

Laszlo


----------



## Shutt

Hi , 

Any body have translate to 7 inch screen ? 

Thanks


----------



## Michele73

Hello everyone I ask how I can solve my problem of the pumps that I can not run automatically in times, I tried for what I know of the program of arduino "not very unfortunately" you can help me I just miss this to complete the operation. 
It has another thing that I do not understand that when I connect to the serial monitor of the IDE continues to redo the boot comes out with these words:
Finished watchdog setup
v2.5.3
sensor1Calibration: 0.00
sensor2Calibration: 0.00
sensor3Calibration: 0.00
# of alarms: 6
SRAM: 3901
and continue to infinity and on the display appears green in the lower part.
Thank you again

Translated into google translator


----------



## sgianim

Increase alarms number.

Trimis de pe al meu SM-A510F folosind Tapatalk


----------



## SirTonic

Hi Folks,
I downloaded the latest version of GitHub and compiled it. 
My question is: Does anyone have a circuit diagram for example: Fritzing etc. or list of parts and shields.

Thanks for reply.


----------



## Michele73

Hello sgianim, excuse my ignorance in how I increase the number of alarms?
If I understand maybe
void updateAlarms ()
{
// clear, free, delete all possible alarms
for (byte i = 0; i <= 50; i ++) Alarm.free (i); 
but nothing happens it seems that it does not read them the dosers' schedules, thanks a lot.


----------



## sgianim

In TimeAlarms.h increase number of alarms to 100 or replace this file in TimeAlarms libraries.


----------



## Michele73

hello sgianim, thank you very much for the help now works for months I did not understand sincerely I would not have found without your help. Another thing you know how to help me when I connect USB on Arduino and the PC hangs and resets continuously makes the control and then reboots. thank you


----------



## wiley_au

Hi Guys,

Apologies in advance for the long post - and if my questions have already been answered previously (I have read through the whole thread on numerous occasions, but there are a lot of posts & I may have missed something). I'll start with some progress updates on my own build, then into a couple of specific questions I have which relate to: orientation of the schutty diodes vs. schematic and location of PWM resistors.

Firstly, a huge thankyou to everyone that has posted in this thread - it has been a huge help to me & extremely educational. Thanks of note to @AnotherHobby, @02Surplus (R.I.P.), & @MrMan, who's PCB & code I'm using.

A brief intro of me: I don't have an aquarium, fish or plants, have never delved into electronics or soldered a thing in my life, and have never used an arduino. Great start huh?  I have however coded extensively, and at the end of the day programming is programming, so expect that will be the easiest part for me. I plan on building my own aquarium to the dimensions I need (read: space I need it to fit). I'm first building my controller and LED light bar, I'll measure the light output I get and choose appropriate plants, and finally choose this fish I will stock my aquarium with - with a target of having everything up and running by the end of June. A little backwards I know, but given I'm starting everything from scratch I think it makes sense to approach it that way. Once I have the controller built & successfully tested, I plan on trying to add a PH meter, WiFi, and MQTT integration into my home automation system POC (another project I have going to learn Raspberry Pi)

Anywho, introductions over I'll give an update on my progress to date. I'm using PCB and code from @MrMan. As a brief aside I had a minimum order quantity when I had them fabricated, so have spares if anyone wants one. I've finished (or so I thought!) soldering all the parts on, and given I've never soldered before am pretty happy with the results.









I've also got the bones of my LED light bar coming along nicely. 15 x 1W Luxeon Rebel LEDs, a mixture of 3000K, 5000K, 6500K, Red & Blue (I have the wavelengths written down somewhere, buried at the moment under a pile of electronics!)









I have a constant current driver for each of the 5 channels of lighting. Because these are fiddly little f.... things, another first for me - I designed a PCB board to mount them on that should be compatible with MrMan's PCB. Again I had a minimum order quantity for these, so when they arrive and I test it works will have some spares if anyone is interested.









And other than having sheets of acrylic and a bunch of other parts (switches, power supplies, regulators etc) ready to go to make my enclosures, that's my progress to date.

Now, onto the questions. I'll start with what I hope are the easy one's. Given the length of this post, my break my questions up into 2 more posts - power & PWM...


----------



## wiley_au

POWER
My assumption looking at the schematic is that there is no 12V regulator on the board, so I'll need to regulate upstream of the PCB? I think that's correct? I'm working on that assumption at the moment.

There are 2 Schutty (sp?) diodes D1 and D7. Googling these reveals they are to stop reverse flow of current - ie current can only flow in one direction, and the "line" or indicator on the diode itself shows the "block" on flow ie current cannot clow back through that side of the diode. This is my uber technical understanding anyway.









For diode D1, I'm assuming the schematic symbol indicates that power can flow from left to right but not back again. Looking at the PCB itself, this seems to make sense. I therefore solder the diode with the "line" on the left?

















For Diode D7, the schematic is a little more confusing. If I take a step back and try & understand what is trying to be achieved, I'm assuming the diode is preventing flow of current back from the negative terminal of the ATO pump, and I should therefore solder the diode onto the PCB as follows:








I am struggling however to understand why this diode is even there? ie could the traces simply not be bridged? I'm assuming I'm missing something very important here? This would also be a reversal of how I interpreted the schematic for D1, which I am concerned about. Whichever way I flip the diode to try and understand current flow and what makes sense, I just end up getting very confused....

[EDIT] Looking at the pics I've just noticed for the first time the "dot" silk screened next to the diode pads. While I'm struggling to understand the theory, I assume this is the side the "line" on the diode needs to be soldered?


----------



## wiley_au

PWM
This has been the most frustrating thing for me, as the schematic isn't very clear to me in correlation to the PCB itself:









The PCB itself isn't labelled with resistor labelling. My first assumption I'm pretty confident with, that the below pads are used to bypass PCA chip if one is not being used per MrMan's posts:









Given I am using the PCA chip I'm leaving these open.

This then left the PWM pads at the top of the board. There seems to be both 100R & 10K0 resistors in the schematic, but 1 set of pads. I couldn't figure out which resistors to solder here. I used the multimeter (another first for me!) to try and see what the pads were connected to. I got continuity between both the PCA pins as well as ground, which didn't help much. I made the assumption therefore (oh oh!) that the 100R resistors were to jumper/bypass the PCA chip and I needed to solder the 10K0 resistors to these pads as they had ground continuity









Now that the board is "finished", I was admiring my handywork, when I noticed for the first time on the back of the board:








Another set of pads! I looked through all of these posts again and saw that MrMan stated 0R resistors are used to bypass the PCA chip, which means I have a stack of as yet unused 100R resistors. 

*insert sinking feeling here*

I assume therefore that these sets of pads need resistors soldering to them. The question then becomes on which side of the board do the 10K0 resistors go & which side do the 100R resistors go? I'm crossing all appendages that the answer is 100R go on the rear - in which case I'm sweet. I have a sinking feeling though that I've soldered the 10K0 resistors in the wrong spot and am going to have bucket loads of frustration correcting my error.....

Any and all advice appreciated!


----------



## Le Gui

Hi,

Good work ! :smile2:

Resistors R4, R5, R30, R15, R14, R13, R12, R16 on the schematic (the onethat need to be soldered on the back of the PCB), are "pulldown" resistors.

You need to solder them, either you use PCA or not.

The utility of these resistors is to prevent bad state between 2 states, or a "floating" remaining information on these wire. If the PCA (or adrduino pin) doesn't send a high value, then the resistor pull down the line to 0V (that's why the resistor is between the line and the ground). In the same way, sometimes we need "pull up" resistors...

The value of 10k is enough to pull down the line to ground, but negligible when the line is in up state.

In short words : 10k on the back, 100R in front with the green connector and the 6 on the left of U9 are not used... You'll need to change them... :|

I hope I have made me understood... :wink2:

I'll try to answer your other questions later : I'm in a rush now...


----------



## wiley_au

Awesome - many thanks Le Gui - appreciate the input! Whilst I would've preferred a different answer, good to know where I went wrong. Think I need a whiskey before I try & desolder those darn resistors though!


----------



## wiley_au

OK. The advice (& I'm sure the whiskey!) helped. Got the 10K resistors removed with only a small amount of collatoral damage to the terminal blocks and the 100R soldered in their place. 

Onward and Upward!


----------



## Le Gui

wiley_au said:


> power
> my assumption looking at the schematic is that there is no 12v regulator on the board, so i'll need to regulate upstream of the pcb? I think that's correct? I'm working on that assumption at the moment.


You'll need a 12v DC transformer to power the board.



wiley_au said:


> There are 2 schutty (sp?) diodes d1 and d7. Googling these reveals they are to stop reverse flow of current - ie current can only flow in one direction, and the "line" or indicator on the diode itself shows the "block" on flow ie current cannot clow back through that side of the diode. This is my uber technical understanding anyway.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> for diode d1, i'm assuming the schematic symbol indicates that power can flow from left to right but not back again. Looking at the pcb itself, this seems to make sense. I therefore solder the diode with the "line" on the left?


D1 is here to prevent reverse polarity. If you plug power in wrong order, D1 *will* protect the board. Line need to be in the right.




wiley_au said:


> for diode d7, the schematic is a little more confusing. If i take a step back and try & understand what is trying to be achieved, i'm assuming the diode is preventing flow of current back from the negative terminal of the ato pump, and i should therefore solder the diode onto the pcb as follows:
> 
> 
> 
> 
> 
> 
> 
> 
> i am struggling however to understand why this diode is even there? Ie could the traces simply not be bridged? I'm assuming i'm missing something very important here? This would also be a reversal of how i interpreted the schematic for d1, which i am concerned about. Whichever way i flip the diode to try and understand current flow and what makes sense, i just end up getting very confused....


D7 is a "freewheeling diode". It is for preventing backwards current when circuit with ie a dc solenoid suddenly opens. With this diode (only needed in a dc circuit), when Q4 will open ATO and ground's bond, backwards current can occurs and then the diode will conduct it and make this current consumed in the solenoid itself (solenoid, motor, relay...)




wiley_au said:


> [edit] looking at the pics i've just noticed for the first time the "dot" silk screened next to the diode pads. While i'm struggling to understand the theory, i assume this is the side the "line" on the diode needs to be soldered?


Exact

On your very first picture, I can's see very well, but some U9 legs seems to be in short circuit.

Have you test continuity between side by side legs?

Sorry for the explanation : they are not strictly accurate because my poor englis prevents me from expressing myself correctly...


----------



## wiley_au

Many thanks Le Gui - appreciate the explanation. Certainly clarifies a lot of the confusion I had regarding purpose. I am certainly learning a bunch through this exercise, which was half the point - fantastic!


----------



## sgianim

Michele73 said:


> ...when I connect USB on Arduino and the PC hangs and resets continuously makes the control and then reboots. thank you


Try to change the USB cable. Or check the arduino for short circuit in the usb zone.

Trimis de pe al meu SM-A510F folosind Tapatalk


----------



## Michele73

Hi Sgianim, and to all, thanks for the answer but unfortunately arduino and the port works I tried it with other sketches and it works it's only when I insert usb with this sketch that blocks sending photos of what happens to me and changing mega also makes me the same thing can be for you or for you.



















on the porata com



















thank you so much


----------



## sgianim

I use this libraries and arduino ide 1.6.3 and works ok.


----------



## Michele73

hi sgianim, thanks again for the help you are giving me but unfortunately using ide that you indicated to me from the same error go to understand or it is my USB port or the mega that I don't know '. Thanks again


----------



## MrMan

Michele73 said:


> hi sgianim, thanks again for the help you are giving me but unfortunately using ide that you indicated to me from the same error go to understand or it is my USB port or the mega that I don't know '. Thanks again


It looks like a hardware issue to me. It's able to load the first image but when trying to draw the home screen it fails and restarts. I'd suggest trying a different SD card first. Also check your USB connection, sometimes USB ports will be limited in how much current they can draw which could cause the reset if it drops out.


----------



## wiley_au

Le Gui said:


> On your very first picture, I can's see very well, but some U9 legs seems to be in short circuit.
> 
> Have you test continuity between side by side legs?


Thanks Le Gui - haven't tested continuity yet. I still have to do a final check & cleanup of the IC pins. The light in my office is terrible, so need the sun to come out so I can go outside and get a good look at them. Shouldn't be too much of an issue to clean them all up I don't think...

Cheers,


----------



## Michele73

Hi MrMan, thank you very much for the help you gave me, it was just like you said, I did a reset of USB ports and I found a Nikon SD card and it doesn't make this error anymore, I hope also in the future.
Now I continue with my changes to the code, which I thought with more confidence. Many thanks to you and all those who help me.


----------



## vorlon1998

Hi guys, following this forum for a while. So I decided to build my own controller (with the help of this forum).
I have a few questions:
1. Why the board uses two different approaches for PWN (ports 2 - 7) and PCA9685? Is there any difference (other than programming part which is already done)? I mean in visualisation of LEDs??
2. Which software should I use to release ports 2 - 7 on addon board (can I edit gerber files ???)?? Will try to use Neopixel RGBW led strip in the same manner as e-series LED. A part of code is already done (moonlight, thunder, sunset, sunrise). Cloud … well maybe ...
3. Looking at code and if somebody knows what M1..M4 meaning (don't have e-series LEDs). This are preset settings which could be set in iaqua or are set in LED controller?

BTW:
I Don't have any hardware yet (only Arduino Mega 2560).


----------



## Jaimelito

yeah me
but translate to spanish too.



Shutt said:


> Hi ,
> 
> Any body have translate to 7 inch screen ?
> 
> Thanks


----------



## vorlon1998

Anyone interested (or maybe someone already done that) in Nextion TFT version. Nextion TFT display uses only two port (RX/TX) and 5V and GND.

Anyone??


----------



## Maryland Guppy

vorlon1998 said:


> Anyone interested (or maybe someone already done that) in Nextion TFT version. Nextion TFT display uses only two port (RX/TX) and 5V and GND.
> 
> Anyone??


I am using one for a similar aquarium application.
The nextion Arduino library did not work so well so I wrote my own code to handle the messaging.
32GB micro card or smaller to load screen applications.

If one spends the time some really nice screens can be made.

Don't think this would plug and play with the existing application in any way.


----------



## vorlon1998

Maryland Guppy said:


> Don't think this would plug and play with the existing application in any way.


Well I agree with you. This part must be completely rewritten. 
I successfully removed UTFT part, working on supporting Nextion display (partial already done). Added support for Neopixel RGBW led strip (working as replacement for e-series, partial done storm lightning, clouds ...).
For now idea is keeping both UTFT and Neopixel.


----------



## MrMan

vorlon1998 said:


> Hi guys, following this forum for a while. So I decided to build my own controller (with the help of this forum).
> I have a few questions:
> 1. Why the board uses two different approaches for PWN (ports 2 - 7) and PCA9685? Is there any difference (other than programming part which is already done)? I mean in visualisation of LEDs??
> 2. Which software should I use to release ports 2 - 7 on addon board (can I edit gerber files ???)?? Will try to use Neopixel RGBW led strip in the same manner as e-series LED. A part of code is already done (moonlight, thunder, sunset, sunrise). Cloud … well maybe ...
> 3. Looking at code and if somebody knows what M1..M4 meaning (don't have e-series LEDs). This are preset settings which could be set in iaqua or are set in LED controller?
> 
> BTW:
> I Don't have any hardware yet (only Arduino Mega 2560).


The reason my code has PWM on pins 2-7 as well as through the PCA9685 is so that people not using my specific board can still use my code as I felt it contained useful additions over the original iAqua code. Basically if "lightCSP" is set to true it will use IR to control the e-series LED, if it's false it will do PWM dimming through either pins 2-7 or PCA based on boolean "PCA9685Installed".

M1-M4 were just stored settings in the e-series LED, I think the original intent was that once the controller had ramped up the e-series to the desired values it would sent the M1 command to ensure the light was at the correct settings, since with IR you don't get any feedback to know it actually changed.


----------



## vorlon1998

MrMan said:


> The reason my code has PWM on pins 2-7 as well as through the PCA9685 is so that people not using my specific board can still use my code as I felt it contained useful additions over the original iAqua code. Basically if "lightCSP" is set to true it will use IR to control the e-series LED, if it's false it will do PWM dimming through either pins 2-7 or PCA based on boolean "PCA9685Installed".
> 
> M1-M4 were just stored settings in the e-series LED, I think the original intent was that once the controller had ramped up the e-series to the desired values it would sent the M1 command to ensure the light was at the correct settings, since with IR you don't get any feedback to know it actually changed.



Thank you for your answer. 
I already solved this issue regarding port 2 - 7. 
This is the part of code for simulating e-series LEDs. 


Code:


if (lightCSP==true) 
        {
          #ifdef NEOPIXELRGBW
            neoShow(M1, 0);
          #else
            irsend.sendNEC(M1,32); // send IR to lights to change modes
          #endif  
        }

 The PWM code part must be changed in writeToLED. This part of code should work on your board (not tested yet).

Do you have all icons in png format??? There is difference between raw and png images!


----------



## hpsxrb

*What a fantastic job that was accomplished here !*

I have to build one. :nerd:


----------



## MrMan

vorlon1998 said:


> Thank you for your answer.
> I already solved this issue regarding port 2 - 7.
> This is the part of code for simulating e-series LEDs.
> 
> 
> Code:
> 
> 
> if (lightCSP==true)
> {
> #ifdef NEOPIXELRGBW
> neoShow(M1, 0);
> #else
> irsend.sendNEC(M1,32); // send IR to lights to change modes
> #endif
> }
> 
> The PWM code part must be changed in writeToLED. This part of code should work on your board (not tested yet).
> 
> Do you have all icons in png format??? There is difference between raw and png images!


They're all on my github page:
https://github.com/NineteenFire/MrAqua/tree/master/PNG

I've been thinking about making an ESP8266 based controller using Blynk, I like the logging it has and getting notifications right to your phone would be nice.


----------



## vorlon1998

MrMan said:


> They're all on my github page:
> https://github.com/NineteenFire/MrAqua/tree/master/PNG
> 
> I've been thinking about making an ESP8266 based controller using Blynk, I like the logging it has and getting notifications right to your phone would be nice.


The folder PNG doesn't contains all files (comparing to SD card Images - ex. warning.raw).


The next project will be on ESP8266 or ESP32S, but don't know about Blynk (yet). It must have MQTT (to connect to my house automation) and IFTTT. 
MrMan you design this extension board for Mega. I know it is possible, but are you willing to do that (I'm not strong in electronics)?


----------



## MrMan

vorlon1998 said:


> The folder PNG doesn't contains all files (comparing to SD card Images - ex. warning.raw).
> 
> 
> The next project will be on ESP8266 or ESP32S, but don't know about Blynk (yet). It must have MQTT (to connect to my house automation) and IFTTT.
> MrMan you design this extension board for Mega. I know it is possible, but are you willing to do that (I'm not strong in electronics)?


Looks like when I uploaded everything originally I didn't notice the upload limit for the PNG folder, it's all there now.

I don't think Blynk is as good as you could get designing everything yourself but it's very intuitive to use and I like the ease of pulling up the app and seeing all of your data right there. If I did design an ESP8266 based controller it would be easy to write your own code for it to control it with whichever method you wanted.


----------



## vorlon1998

MrMan said:


> Looks like when I uploaded everything originally I didn't notice the upload limit for the PNG folder, it's all there now.
> 
> I don't think Blynk is as good as you could get designing everything yourself but it's very intuitive to use and I like the ease of pulling up the app and seeing all of your data right there. If I did design an ESP8266 based controller it would be easy to write your own code for it to control it with whichever method you wanted.



To be honest I don't like Blynk (it's not (totally) free, some things are, some thing aren't). I agree with you, that software could be done with or without display. I would like to connect to my OpenHab2 system with MQTT (from there I can use my phone or any device).


----------



## hpsxrb

*parts of Shield of MrAqua*

Hello everyone,

A big thanks to all who contribute to this fantastic project and in particular to AnotherHobby, O2Surplus and MrMan who keeps the project alive!

I am trying to gather the necessary parts to make the shield of MrAqua and I am having difficulties in the item below:

In Europe there is no Q4 - MOSFET N-CH 30V 5.6A SOT223 (DK # DMN3032LE-13DICT-ND / Part Value DMN3032LE-13), does anyone please indicate an equivalent, perhaps on www.Farnell.com or Aliexpress?

Thank you very much
Hugo


----------



## vorlon1998

hpsxrb said:


> In Europe there is no Q4 - MOSFET N-CH 30V 5.6A SOT223 (DK # DMN3032LE-13DICT-ND / Part Value DMN3032LE-13), does anyone please indicate an equivalent, perhaps on www.Farnell.com or Aliexpress?



Try here. I'm from Europe too, and my local shop orders from them!


----------



## sgianim

Search for IRML6344TRPBF on tme.eu or farnell.com

Trimis de pe al meu SM-A505FN folosind Tapatalk


----------



## hpsxrb

*connectores of Shield of MrAqua*

. . . many thanks to vorlon1998 and sgianim !

Regarding the connectors HD1, HS1 and HS2:

in what place in the shield they are placed (excuse my ignorance that maybe have to see I still do not have the Arduino), is below the pcb and in which positions ?

Thank you very much.
Hugo


----------



## sajin.shivdas

Hi Mr.Man and all other members contributing towards this projects.

I already have an aquarium automation (Managed with Arduino Mega, RTCDS3231, DS18B20, 8 channel 12v Relay Module to manage pump, lights,co2 dosing ) and was amaze to see this thread so have ordered the remaining components as per the another and 02 schematics and Diagrams. I am currently reading through all the threads to validate if there is any major changes.Have got all the files, libraries,Images from the github. Please let me know if i should check on somethings or any tips before proceeding.

Looking forward or your support and help.

Regards
SS


----------



## hpsxrb

*connectores of MrMan shield*

I do not understand the part numbers of the 3 connectors (HD1, HS1, HS2) of MrMan shield  ?

The description is 38 pin header, 40 pin single row header, but in parts number (S2012EC-18-ND, A113648-ND) the first corresponds to a double row (2x36) and the second one is a single row (1x40)!

What is the quantity to buy from each one given that they are 3 by BOM?

Can someone please send a photo of the bottom of the shield with the connectores ?

Thank you very much.

Hugo


----------



## Musi Mumu

It is not possible to download and see 

Aqua.zip
Aqua_libraries.zip
Aqua_PNG_files.zip
Aqua.fzz

Error server IP address could not be found.

Please help


----------



## hpsxrb

Musi Mumu said:


> It is not possible to download and see
> 
> Aqua.zip
> Aqua_libraries.zip
> Aqua_PNG_files.zip
> Aqua.fzz
> 
> Error server IP address could not be found.
> 
> Please help


See in https://github.com/NineteenFire/MrAqua


----------



## Shutt

Jaimelito said:


> yeah me
> but translate to spanish too.


You can share ?


----------



## bigcat39

I have just finished reading this entire thread. Now I want to build the beast. I am an electrical engineer, now disabled/ and retired. I am going to use Mr. Man's shield and code.
The thing is, one of the hobby level prototype board houses have an offer to assemble up to 5 boards....for free. Pay them to make the pcbs, pay for the parts, and you will get back 5 completely populated boards. You don't even have to buy the parts from them. Tomorrow I will send them the gerber files and the BOM and get a real quote. Anyone interested?


----------



## Michele73

hello guys, I finished building everything the only thing I miss and to set the fish feeder automatically there is some good soul that can help me I managed to create icon in tabs but then you got me crashed all Arduino freezes and then resets in advance thanks a lot.


----------



## vorlon1998

Michele73 said:


> hello guys, I finished building everything the only thing I miss and to set the fish feeder automatically there is some good soul that can help me I managed to create icon in tabs but then you got me crashed all Arduino freezes and then resets in advance thanks a lot.


Show the code! Arduino without this modification works ok? First try that (without modification) it could be anything ...


----------



## Michele73

Hello Vorlon1998,
yes without touching the code it works great even if the part concerning the SCREEN has not understood it maybe also because I do not have the sensor (IR that I do not understand if it is used for reading the ambient light or the remote control) but for the moment I feel like it also good enough to lower the brightness of the screen and you're done.
The part of the code that I am inserting (copying from the pumps) because unfortunately I don't know so much about the programming but I enjoy more the construction and the assembly.
The thing that is lacking in this formidable marvelous project is the automatic food because if you go on vacation some day does not allow it being in manual.
Then, already during the assembly phase, I inserted a relay on a pca9685 pin installed in the ceiling light naturally for the control of the lights. Here is the how much if you can give me a hand where I'm wrong or if you can direct how to do.
Thanks a lot.





































This is my job to date.


----------



## vorlon1998

IR is for controlling Current Satellite Plus. Well you could use some other lights, but you must know the IR codes!
Copying code around is not good idea if you don't know how to do. If I understand you would like to open relay (power) to automatic feeder? 

There is already logic/program part for feeder in current version! 

BTW: Nice job!


----------



## Michele73

thanks for the advice and explanation of the IR, but current to give the food is not programmable in fact in fact I wanted to manually set the time and then connect to the existing one. thanks for the work I did as soon as I finished it all I'll put some patterns and more photos with details.


----------



## vorlon1998

Are you sure? About feeder? I don't have a working controller yet, so I can only look at the code!
But I can't see dedicated port for feeder:


> MrAqua v2.5.2
> // -Updated feeding to allow not including outlets in feeding routine


Looking at code, it seems that only notify is implemented (and some power off on 8 predefined relay ports!), could be done, but currently I'm a little out of time.

You could something like this:
Connect Aux2 (A7) to relay/feeder,
set timer for feeder
set all power outlet to off (maybe a filter pump is not a good idea), except AUX2 to on.
It should work, without code change …
Try some combination and write back, for other users!!

As I wrote previously I don't have a working controller, so I could miss something ...


----------



## Michele73

In practice the code has only the function in manual press the key if you have set 10 minutes blocks some functions for example recirculation pump and other 5 that now I don't remember to give the possibility to the fish to eat without the movement of the water current . In practice I would like to create if I can but my knowledge of programming is scarce, in cards a part that saves the time and the days and that takes as the function of the dosing pumps here is the whole thing.


----------



## vorlon1998

Did you try to set power on / power off on Schedule screen (aux1 or aux2)?? For aux2 connect to A7!


----------



## Michele73

thanks Vorlon sorry for the delay in the answer but I activated everything in aquariums with plants with some problems since I have not tested my modifications enough for whole days but I will ask as soon as I can. For the advice it would be a good idea since I wanted to use a relay for the bottom heater. good day everyone


----------



## PickRick

*i aqua*

Hi there first and foremost great project . Iv been wanting to do this for a long time but i dont know how to write the code.

Just a question about the leds im using a TC420 controller for my diy led lights but if i can change that by using the arduino that will be awesome.

so you have a little bit more experience in this then me. I have 2x 3watt royal blue leds on one driver and 10 watt white on its own driver . ive made pcbs and it consist of 4 blues and 1 white i have ten of these pcbs that im controlling of the TC 420.

Im only using 3 channels 1 ch for the blues and 2 ch,ch 3 for the white. The idea is 5 whites one half of the tank and 5 whites other half .what im trying to do is have the left side of the tanks whites leds to come on in the morning first with all the blues and in the evening have the right side of the tank white leds on before the night blue comes on.

Thanks in advance


----------



## jeffkrol

PickRick said:


> Hi there first and foremost great project . Iv been wanting to do this for a long time but i dont know how to write the code.
> 
> Just a question about the leds im using a TC420 controller for my diy led lights but if i can change that by using the arduino that will be awesome.
> 
> so you have a little bit more experience in this then me. I have 2x 3watt royal blue leds on one driver and 10 watt white on its own driver . ive made pcbs and it consist of 4 blues and 1 white i have ten of these pcbs that im controlling of the TC 420.
> 
> Im only using 3 channels 1 ch for the blues and 2 ch,ch 3 for the white. The idea is 5 whites one half of the tank and 5 whites other half .what im trying to do is have the left side of the tanks whites leds to come on in the morning first with all the blues and in the evening have the right side of the tank white leds on before the night blue comes on.
> 
> Thanks in advance



If you using the 5V PWM tap off the TC-420 (basically a pre-programmed Aduino) then there should be no differences..EXCEPT (and since I'm not going through all the specs) if it uses 3.3V at the PWM outputs..
some common drivers like Meanwell LDD-L series won't work w/ 3.3V (see bluefish mini).. some LDD-l's will see meanwell spec sheets..
Most Meanwells specify a PWM frequency of 100Hz to 1KHz..


----------



## sajin.shivdas

*Need Help with my Iaqua Setup*

HI All,

I was able to configure the touch the SDcard with the Audrino mega and mega shield and also run through all the demo test for touch screen and also used the sdcard to load images,now i have added the iaqua sketch and it is just showing me the time and date in the top bar and the rest of the screen is just an black screen.

The sketch compiled and loaded successfully but its has an topn of warning message and as i am not an programmer can any one help me with the error and resolve my issue.

The warning message log is attached .


----------



## sajin.shivdas

sajin.shivdas said:


> HI All,
> 
> I was able to configure the touch the SDcard with the Audrino mega and mega shield and also run through all the demo test for touch screen and also used the sdcard to load images,now i have added the iaqua sketch and it is just showing me the time and date in the top bar and the rest of the screen is just an black screen.
> 
> The sketch compiled and loaded successfully but its has an topn of warning message and as i am not an programmer can any one help me with the error and resolve my issue.
> 
> The warning message log is attached .


I have configured the display using
CTE32_R2 for the utft
mytouch as (6,5,4,3,2)

i have tried calibrating the display and i ran some example sketches which both seem to work perfectly fine (Quickdraw and touch buttons from the utouch library)

any idea what i might be doing wrong and how to fix this as i am just able to see date and time on the top bar.


----------



## vorlon1998

@sajin.shivdas
On which Arduino IDE did you compile???
I use 1.8.5 which compile without errors.


----------



## sajin.shivdas

Hi Vorlon,

I am using 1.8.9 version, it is not giving any error though its just warning messages and most of them are mainly related to the raw files, it allows to compile and upload the sketch successfully.
Kindly let me know if i have to change the Arduino 1.8.6 and like to compile it again.

Awaiting for your help and suggestion.
Regards
sajin shivdas


----------



## DichterKajo

Hello,

i'm using the controller for 2 years and the uC runs perfect.

But an Webinterface / MQTT or something else was very great.
Anyone interested or has someone in use?!

Sorry for my bad english!! 

Greetings, Florian.


----------



## sajin.shivdas

Hi Vorlon,

Tried it but no luck same issue.

Sajin Shivdas


----------



## xebbmw

DichterKajo said:


> Hello,
> i'm using the controller for 2 years and the uC runs perfect.
> 
> But an Webinterface / MQTT or something else was very great.
> Anyone interested or has someone in use?!


I modified the controller and I use a different LCD 3.5" similar as here that has touch screen. It is still not yet finalized, as I do not plan to use all the features from iAqua.

But having MQTT would be a nice feature, connecting ESP8266 on the serial port of ATMega2560 and exposing all the readings to an MQTT server (maybe home assistant would be a good choice).


----------



## vorlon1998

*Mega / ESP8266*

You have ESP8266 integrated on Arduino Mega (Arduino MEGA ESP8266). I'm very happy with the progress with Nextion display they update software so now support Anti Aliasing fonts!



BTW:
Still didn't found time to start playing with my modifications … But I already receive have iAqua PCB v3. 
MQTT is in my todo list ...


----------



## Subroto

In addition to xebbmw and vorlon1998, a few other posters expressed interest in having a web interface for iAqua. In my view, there are three features that would make this controller "complete": addition of pH monitoring (Atlas Scientific?), a web interface (ESP8266 or ESP32?) and an auto feeder. Has anyone incorporated any of these in his/her version of iAqua? We would love to hear if that is so. 

I wonder whether MrMan could be coaxed to "upgrade" his shield to version 3 by adding those features?


----------



## Sorcerer

Hello all ...

Very good job guys. I'm reading the entire discussion but I've not finished it.

Thank you for sharing.
Regards.
Sorcerer

Hello all ...

Just for fun a little try : the Arduino with the shield and the screen an nothing
more. And it works !!! with some errors about the hardware not found but it works!!!
Good thing.
My screen seems to be the same as the one seen in the post's pictures but it
need to work a specific driver : "UTFT myGLCD(CTE32_R2,38,39,40,41);"
and I do'nt found it in the UTFT doc..... Strange.

Still reading the post.

Regards
Serge


----------



## Gray_Wolf

hi, i have mount the arduino with TFT shield and a 3.2 240x400 TFT lcd, i put the file raw in the sd card formatted as FAT, upload the program and i have this https://drive.google.com/open?id=16Y2MnUgR9H3L-IT2-cIip9ls10p4DBt3 what can i do now?


----------



## Sorcerer

Hello Gray_Wolf ...

It seems that your program isn't able to load the files from the SDCard.
Why not to put some commands "Serial.print" in "screens" to see what happens ??
Eventually re-format your SD card to be sure ...

Regards
Serge


----------



## Lufabbiu

try this lib , works fine to me
The instruction for mega2560 board and 3.2 inch touch screen and shield ? kookye.com


----------



## Sorcerer

Hello everyone ...
The drivers of the screen seem not to be involved because as can be seen on the file of his drive Googgle, its screen displays text and graphics.
The only things that are not displayed are the RAW images from its SD card.
The SD Fat library (if different from the one provided) can obviously be tested.
Best regards
Serge


----------



## Sokonomi

I'm quite interested in this device because it hits almost every mark I had set out (web access would be nice).

Apologies for not digging through this 139 page thread for this, but; Has anyone made a follow-along instruction for making one of these yet?
The parts are easy enough to find, but the opening post seems to be missing the wiring diagrams, so im stuck.


----------



## Sorcerer

Hello ...

You can see the post #1319 of this thread.
The Github https://github.com/NineteenFire/MrAqua
may also be useful.

Regards 
Serge


----------



## Sokonomi

Is there a place that sells a shield for this? I've read about it but it doesn't seem to be something you can just buy? You have to commission it somewhere?


----------



## Sorcerer

Hello ...
We are on a DIY forum and I do not think that the sale of complete kits is tolerated. However, most of those who had ordered PCBs in China faced a minimum order of 5 copies or maybe 10 in some companies.
Maybe to see with these people. (I myself had ordered the O2surplus shield PCB and ordered 5 copies (not yet received).
You can also see here : 
http://https://www.plantedtank.net/forums/20-diy/1292191-completely-built-arduino-shield-mrman-v2-iaqua.html
and also see post #710 for the shield of O2surplus.
Hoping that it answers the question asked.
Best regards
Serge


----------



## Sokonomi

Shield or no shield, its still DIY, so I think we're fine. 
At Least I assume its ok to help each other source the parts to make something.
It seems that thread has gone 'cold' but ill try contacting him directly.
Shipping will probably cost an arm and a leg for me. 
Thanks for helping though!


----------



## Sorcerer

Hello
Efectively, this is no longer the excitement of the beginnings ....
But we still get help.
I do not understand who you want to contact directly.
If it is O2surplus, I suggest you avoid, he died last year. :icon_sad: 
We have his job left.
If I can help you, it will be with pleasure.
cordially
Serge


----------



## Sokonomi

Hmm, you mean people are no longer interested in this project?
Is there a successor/alternative that's even better than this?

I wanted to contact people who had shields made,
to see if they still had one laying around.
Sad to hear O2surplus has passed away though. 

I just want to get a shield so I won't have to deal with PCB making,
breadboarding it with standard sized components will probably make it huge,
and I dont have my PCB UV screening tools anymore.


----------



## Sorcerer

Hello ...



Sokonomi said:


> Hmm, you mean people are no longer interested in this project?


This is normal, the creators of the project and those who followed them at the beginning have their controller built and working and are less interested in this thread today.
It must be remembered that this adventure is already over 5 years old.


Sokonomi said:


> Is there a successor/alternative that's even better than this?


I don't know any if exists


Sokonomi said:


> I wanted to contact people who had shields made,
> to see if they still had one laying around.


I've ordered mine some days ago an I have ordered 5.
So I''ll have some spare units if you can wait.


Sokonomi said:


> Sad to hear O2surplus has passed away though.


Sure, very sad new.









Best regards
Serge


----------



## jeffkrol

Maybe you can just port over the Reef pi shields (not sure exactly what you are looking for btw)
https://www.tindie.com/products/ranthalion/ml-reef-pi-hat-goby/


----------



## Sorcerer

Hello ....

My goal is exactly what the shield of O2surplus and the software of AnotherHobby do.
The stuff you pointed on is probably good but is American stuff and for us in Europe, the postal fee to order American goodies is very very expensive sometimes 30$00 to ship a product witch price is 5$00 or so .... A pity

Thank you anyway for the info
Regards
Serge


----------



## Sokonomi

I'm with Serge on that one; many good american products are stuck behind an insane shippingcost wall.
I tried getting something the size of a thumb out of america last month, 32 dollars to ship a 2 ounce package!
Yikes. 

So were stuck with arduino, some chinese parts, and doing some handywork.


----------



## Sokonomi

I hope this thread is not completely abandoned and somebody can still help me. :')

Can I use *this thing* to power some 24v lights while controlling them through the arduino?

Also, is there some documentation about the dosing pump headers?
Do they power the pumps directly or do you put a relay switch on them?


----------



## Sorcerer

*PCB O2surplus*

Hello Sven ...

Good news: PCBs arrived at my home this morning. 
Impeccable work.

Cheers
Serge


----------



## Sokonomi

Good to hear!  I will message you for the details.

As for the amplifier, Ive contacted a few vendors about it, they all say it can take a 5v PWM signal on the input.
So ive ordered one and will try it out to see if it works; If it does, yay, 3 dollar LED driver!
If it doesn't, I already have a backup plan that only takes a MOSFET and a resistor per channel;










R3 is a 220ohm resistor which is already on the iAqua shield.
The whole segment above the MOSFET is built into the LED strip itself.
This way is a little larger and more expensive and you have to make it yourself, but it works.
We'll see if its necessary soon.


----------



## arduinoo

i cant download Project 
please healp me


----------



## NiteWing76

arduinoo said:


> i cant download Project
> please healp me


The project files are on GitHub at: https://github.com/NineteenFire/MrAqua

Also checkout post 1319 referenced on the previous page.


The PCB files on GitHub are the Gerber files and I have yet to locate the source files....I'd like to locate them and make a few changes (e.g. using Adafruit's DS3231 breakout board instead of a DS1307). 

Has anyone attempted to use NeoPixels (or others based on the WS2812)?


----------



## Sorcerer

Hello NiteWing



NiteWing76 said:


> The PCB files on GitHub are the Gerber files and I have yet to locate the source files....I'd like to locate them and make a few changes (e.g. using Adafruit's DS3231 breakout board instead of a DS1307).


The source file is on the same Github than the PCB files ... 
On the main directory of the Github.
What are the differences between DS1307 and DS3231. 
Thanks a lot for advice
Regards 
Serge


----------



## arduinoo

Can someone help me.
I downloaded all the files, but I couldn't figure out where to start.
You couldn't figure out how to set the nextion screen.
I have alarms, mraqua, screens, touch files, but I could not find information about where they are used.

Thanks


----------



## Sorcerer

Hello ...


arduinoo said:


> Can someone help me.
> I downloaded all the files, but I couldn't figure out where to start.


We will try to help you ...
Have you ever used arduino ??
If not, you are leaving far too far and you have things to study before embarking on this project.
If yes, what is it that bothers you? The main file is called "MrAqua.ino"; it's him you have to load.



arduinoo said:


> You couldn't figure out how to set the nextion screen.


IAqua has not been written for this screen at all, you have the list of materials on the Github.



arduinoo said:


> I have alarms, mraqua, screens, touch files, but I could not find information about where they are used.
> Thanks


As said above, Mraqua.ino is the master file of the project.
You must load it in the arduino IDE.

All the information you need is in the whole thread. Yes, 140 pages to read are a big journey
but you can't do this project IMHO without the reading of the thread.

Regards
Serge


----------



## NiteWing76

Sorcerer said:


> Hello NiteWing
> The source file is on the same Github than the PCB files ...
> Serge


I'm seeking the .SCH & .BRD files. The .SCH is easy to recreate...and I could import the gerber files to Eagle and use them to recreate the .BRD without completely reinventing the wheel, but having the BRD would be much easier. Also with Neopixels, I only need 1 digitial pin (doesn't require PWM)...so I could repurpose the current PWM pins for a different task. I say this with the current caveat that I have yet to compare the NeoPixels to the current ones used in this project (current draw, aesthetics, color temperature, lux, etc) other than to notice that NeoPixels do not require a heatsink. I only found this thread yesterday and have 120 more pages to read.  




Sorcerer said:


> Hello NiteWing
> What are the differences between DS1307 and DS3231.
> Serge


The DS3231 has the crystal embedded. Also, crystal oscillations change based on variations in temperature. The DS3231 also has an embedded temperature sensor that compensates for these variations. I can't remember where I read it a month or so ago (probably the Adafruit or Arduino forum), but as I recall some users report +/- 1-2mins per month with the DS1307, but only +/- a few seconds per year with the DS3231 (DS3232 offers 236bytes of battery-backed unlimited SRAM writing if desired, which can be used in lieu of EEPROM). Now that I think about it more....since the DS3231/3232 has the same package/footprint as the DS1307, I might not have to make any changes...just omit the external crystal.


----------



## Sokonomi

I don't think the DS3231 is a drop-in replacement for the DS1307;
The DS3231 is an 16SO package, the DS1307 is an 8SO, I think?


----------



## ryanminson

*archive*

hi does any one have the files for Iaqua to download as i am unable to get any code or libraries from previous pages please?


----------



## Sorcerer

ryanminson said:


> hi does any one have the files for Iaqua to download as i am unable to get any code or libraries from previous pages please?



Hello ...
All the necessary files are on the Github cited in post 2101.
Cheers
Serge

Ouupppsss .....
Big mistake from me. For the MrMan shield we do not have the .SCH and .BRD files (I confused with the O2Surplus schield  ).
As for MrMan, we only have (in the "Arduino Mega Shield Schematic.PDF" file) an image of the SCH and a DU BRD.
Still sorry for this mistake.


----------



## Sokonomi

I can't tell from the pictures and I dont have my gear yet, so i'm hoping somebody can tell; Does this unit allow you to set multiple on/off times per channel? I have an automatic feeding time twice a day, and for that I need the pump and heater to shut down (8:00 ~ 8:30, am and pm). From what I can see, there's only one on/off time per day cycle?


----------



## Sorcerer

Sokonomi said:


> I can't tell from the pictures and I dont have my gear yet, so i'm hoping somebody can tell; Does this unit allow you to set multiple on/off times per channel? I have an automatic feeding time twice a day, and for that I need the pump and heater to shut down (8:00 ~ 8:30, am and pm). From what I can see, there's only one on/off time per day cycle?


I will even go further about feeding: there is no plan for automatic feeding at all.
Simply the time elapsed since the last feeding is recalled, instructs the user to feed manually.
(Unless of course I missed something!). If anyone knows more about it ......

Cheers
Serge


----------



## Sokonomi

Sorcerer said:


> I will even go further about feeding: there is no plan for automatic feeding at all.
> Simply the time elapsed since the last feeding is recalled, instructs the user to feed manually.
> (Unless of course I missed something!). If anyone knows more about it ......
> 
> Cheers
> Serge


My autofeeder will be running on its own, separate from iAqua.
I just need the schedule on pump and heater to match the schedule I have in my feeder.
My autofeeder triggers 8:05am/pm, so I need iAqua to have the pump and heater off at 8:00am/pm and on at 8:30am/pm.


----------



## Sorcerer

Hello ...



Sokonomi said:


> My autofeeder will be running on its own, separate from iAqua.
> I just need the schedule on pump and heater to match the schedule I have in my feeder.
> My autofeeder triggers 8:05am/pm, so I need iAqua to have the pump and heater off at 8:00am/pm and on at 8:30am/pm.


Ah !!! Ok, here I understand better.
By cons, a question: why turn off the heating during feeding? I only shut down filtration at that time.

Cheers
Serge


----------



## Sokonomi

Sorcerer said:


> why turn off the heating during feeding? I only shut down filtration at that time.


My heater is built into my canister filter, and the thermometer probe is in the aquarium,
so if the heater turns on while the pump is off, it will only heat up the water in my canister.
It would keep heating because the warm water won't reach the thermometer probe. :angryfire
So I hope it is possible to temporarily turn off the heater system.


----------



## Sorcerer

Ok, it's more clear as is.


----------



## ryanminson

Know problems thank you.

Would you happen to know if any shields are still available to purchase? as i am interested.

Regards


----------



## Sorcerer

Hello ..


ryanminson said:


> Know problems thank you.
> Would you happen to know if any shields are still available to purchase? as i am interested.
> Regards


Yes, I've already some spare IC shields to sell ( Only the IC without components)
Where are you from ?
Regards
Serge


----------



## ryanminson

Sorcerer said:


> Hello ..
> 
> 
> ryanminson said:
> 
> 
> 
> Know problems thank you.
> Would you happen to know if any shields are still available to purchase? as i am interested.
> Regards
> 
> 
> 
> Yes, I've already some spare IC shields to sell ( Only the IC without components)
> Where are you from ?
> Regards
> Serge
Click to expand...

Hi,
(IC shield without components) I a assume you mean the v3 track bourd ? And im in Australia.
Regards


----------



## vicfals2020

Sokonomi said:


> I'm quite interested in this device because it hits almost every mark I had set out (web access would be nice).
> 
> Apologies for not digging through this 139 page thread for this, but; Has anyone made a follow-along instruction for making one of these yet?
> The parts are easy enough to find, but the opening post seems to be missing the wiring diagrams, so im stuck.


Did you ever get started on this? i am having problems with the code compiling and getting this error

expected constructor, destructor, or type conversion before '(' token at this line

myFiles(&myGLCD); line 261

I am not sure what to do or what i am doing wrong. 
I am using a Arduino IDE ver 1.8.10, could this be the problem? What version of IDE are you using? Any help will be greatly appreciated. Thank you all.


----------



## gefa

Hello, that is a great project, want to say thank You to everyone who took a part in creating and developing this. I would like to make this kind of controller myself but I need PH measurement function. In this forum's page No. 108, post No. 1612 I can find a sketch with a PH measurement function but when I install this, the controller is not working. Maybe someone tried to make a controller with the code from the post No. 1612 and could help me out? 

Best wishes, Gintaras


----------



## VHRCH

Hi every body

I need help I rarely post something but this is because i have not solve or find something for the problems

I’m program with MrAqua v2.5.3 Arduino 1.6.0 I think is the latest version and I have the next 

Error of compilation 

In file included from C:\Users\vhrch\Documents\Arduino\libraries\SdFat-master\src/SdFat.h:31:0,
from MrAqua.ino:228:
C:\Users\vhrch\Documents\Arduino\libraries\SdFat-master\src/SysCall.h:33:17: fatal error: SPI.h: No such file or directory
#include <SPI.h>

I was checking past post and I did not find somethig about this problem

What can I do? 

Sorry for my English grammar


----------



## pionet

Im Peter in Slovakia 
I buy components in IAqua TFT display is ok or touch not working mi TFT is TFT_320QVT_9341 please help me

Im Peter in Slovakia my english is a weak hope you understand?

I bought all the components on iAqua all works, but I have switched the right side from the left side when I touch for example Setting Open home when I touch home open settings
You can help me with the problem?
It's a great project thank you for your work


----------



## VHRCH

Hi pionet

Could you share your files? and tell me the version of your Arduino IDE are you compileted?

I hope help you finding the problem.


----------



## sgianim

pionet, try this file, replacing original in the URTouch library.


----------



## pionet

*Hi Friends*

Thanks Im working good very thanks


----------



## Heiwald

Hi everyoe

Does anyone have a list of libraries and versions that work with the MrAqua code from MrMan or the original iAqua code from AnotherHobby?
I have tried both, as I have all the original files that are no longer available here, as well as the files from MrMan (MrAqua code https://github.com/NineteenFire/MrAqua).

I required the parts years ago, but got stuck as I could never get it to read the images from the SD card and thus it wouldn't even reach the start screen.
My coding skills have improved slightly and I have some time to look at it again now, and I have enough parts to make two of these controllers given that I could get the code to work.

I would be very happy to give a small donation (if this is permitted here) to whomever could give me the info of which libraries (and versions), as well as which version of the arduino IDE to use.
I have been trying to make this controller since 2016, and I have sufficient parts to make two complete controllers the way AnotherHobby built it.
I am considering to get some MrAqua shields made, if I can get the controller to work. If so I might get a few extra to give as a thanks.

Any help would be very gratefully accepted.


----------



## Sorcerer

Hello M8 ...

Here the libraries I use :

<avr/wdt.h> v ?????
<Wire.h> v ????
<EEPROM.h> v ??? 
This three libraries are not found in my directory /libraries/ maybe built-in libraries ???
<UTFT.h> v 2.83
<SdFat.h> v 1.1.0 (SdFat requires Arduino 1.6x or greater)
<UTFT_SdRaw.h> v 1.2.4 (You will need UTFT v2.41 or higher)
<URTouch.h> v 2.02
<DS1307RTC.h> v 1.4.1
<TimeLib.h> v July 3 2011 (part of Time library)
<TimeAlarms.h> v 1.5
<IRremote.h> v 2.4.0.b
<OneWire.h> v 2.3.4
<DallasTemperature.h> Built-in
<Adafruit_PWMServoDriver.h> v 2.0.0

I use the version 1.8.9 of the Arduino IDE.
If you don't find one or other of the libraries, drop me your Email adress and I send you mine version

Regards
Serge


----------



## Heiwald

Hi, Serge!

Thanks a ton for your reply!
I'll have a look tomorrow.
Are you using the MrAqua code from MrMan?

Cheers
Morten


----------



## Sorcerer

Hello Morten..

Yes quite. I'm using the Github code you mentioned above.
It must work, there is no reason !!!:laugh2:

Friendships
Serge


----------



## Heiwald

Yes, It does indeed, and I'm positively over the moon today!!
Thanks so much for your help Serge!
Turned out (at least now) to be poor folder management, as the libraries where not in folders with the same name as the library. This meant that the Arduino IDE did not recognize the libraries, and thus didn't add them to the sketch when compiling. Took me a few hours to find out, as the same was true for the MrAqua sketch that thus had been moved to a sub-folder with the same name, away from the other partial sketches and fonts

To avoid people having newbie mistakes like me:

Make sure that the libraries are in folders, that I called the same as the library. The Arduino IDE is very particular about this.
for instance. If the "Arduino-Temperature-Control-Library-master" is downloaded, then make sure to rename the folder "DallasTemperature" (as it contains the DallasTemperature.h library)
Same with "Arduino-IRremote-master", make sure you rename the folder "IRremote" as it contains the "IRremote.h" library.
Same goes for many of the libraries, but also the MrAqua.ino file. If you don't rename the folder to MrAqua, then the IDE will tell you to put the sketch in a sub-folder and it will no longer have access to the alarms.ino Screens.ino startups.ino and touch.ino sketches, thus it will not compile.

If you rename the folders correctly, then it will work with all of the updated libraries (to date) as well as the current version of the Arduino IDE (V 1.8.12)


These are the library versions that I have successfully used today:

Build in libraries (part of the Arduino IDE):
Using library Wire at version 1.0 in folder: C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2\libraries\Wire 
Using library EEPROM at version 2.0 in folder: C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2\libraries\EEPROM

Libraries that need to be added (most are provided with the code by MrMan (the MrAqua code):
Using library UTFT in folder: C:\Users\...\Documents\Arduino\libraries\UTFT (legacy)
Using library SdFat at version 1.1.2 in folder: C:\Users\...\Documents\Arduino\libraries\SdFat 
Using library SPI at version 1.0 in folder: C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2\libraries\SPI 
Using library UTFT_SdRaw at version 1.2.4 in folder: C:\Users\...\Documents\Arduino\libraries\UTFT_SdRaw 
Using library URTouch in folder: C:\Users\...\Documents\Arduino\libraries\URTouch (legacy)
Using library DS1307RTC at version 1.4.1 in folder: C:\Users\...\Documents\Arduino\libraries\DS1307RTC 
Using library DS3232RTC at version 1.2.10 in folder: C:\Users\...\Documents\Arduino\libraries\DS3232RTC 
Using library Time at version 1.6 in folder: C:\Users\...\Documents\Arduino\libraries\Time 
Using library TimeAlarms at version 1.5 in folder: C:\Users\...\Documents\Arduino\libraries\TimeAlarms 
Using library IRremote at version 2.2.3 in folder: C:\Users\...\Documents\Arduino\libraries\IRremote 
Using library OneWire at version 2.3.5 in folder: C:\Users\...\Documents\Arduino\libraries\OneWire 
Using library DallasTemperature at version 3.8.1 in folder: C:\Users\...\Documents\Arduino\libraries\DallasTemperature 
Using library Adafruit_PWMServoDriver at version 2.3.1 in folder: C:\Users\...\Documents\Arduino\libraries\Adafruit_PWMServoDriver 


The code written by MrMan and almost all of the libraries is provided here:
https://github.com/NineteenFire/MrAqua

If you get compiling errors:
Check your folders and make sure the folder names are correct, and that you have installed all of the libraries.

If you get a blank white screen when powering on after uploading the code:
1. check if you have chosen the correct screen model here (SSD1289 might not be correct for you screen)
UTFT myGLCD(SSD1289,38,39,40,41); // start up an instance of the TFT screen
The UTFT folder (libraries) contains a list of supported models in the subfolder "Documents", test each one out using the sample code (much faster to upload) until you find the correct one.
2. If you find the correct controller for your screen, but the screen will not load unless you take the SD card out (will load without the images from the SD card), then try to format the SD card. It needs to be formatted to FAT32, not FAT like the original code by Another Hobby.

If you don't have touch functionality when the controller reaches the home screen (including showing the images from the SD card):
1. Did you add the inputs and outputs including the RTC? If no, then thats why
2. If it still doesn't do anything when you tap the screen then you might have missed this part:
URTouch myTouch(46,45,44,43,42); // start up an instance of for touch
//URTouch myTouch(6, 5, 4, 3, 2); // For standard TFT shield
(choose where your touch is connected)

If it still does not work, then ask in here 

Now. I'm so exited to finish this project. I've sent an email to my campus today, to get some help using the 3D printers that we students can freely use (I've never used one before).
Would love to complement my controller with this fine box soon 
https://www.thingiverse.com/thing:2791517

Best wishes and endless gratitude for an absolutely amazing controller!

Cheers!
Morten


----------



## Heiwald

Hi Serge,

Great. Love that it works now! Thank you so much for the help! The problem was my folder management ( I didn't rename the library folders and the sketch folder correctly, thus it didn't recognize either properly...)
I made a long post yesterday, but it said that my post was sent in to review or something, and it seems that it is still not appearing here. I don't know why. Anyways, thank you so much!
I will look into getting some PCB made for this project.
For now, I will make a couple of controllers that work the way that Another Hobby made them with the added hardware to support the extra features.
I also just booked one of the 3D printers that we can use for free at my university, so I can print the case previously shared in this thread (https://www.thingiverse.com/thing:2791517).
I have to print 0,15 layers instead of ,1 layers though, as print times will be longer than permitted. But hey, at least I get the case for free 

I will try to test things out. I ordered quite a few bits now and I will test some different ways of setting things up. Also ordered some solid state relays. They don't offer the same universality that the mechanical relays offer, but they are silent and don't use a fraction of the power compared to the mechanical relays. I think they would make a nice addition.

Again, thank you so much, for your help. I won't forget.

Best regards
Morten


----------



## NguyenVu

*where did you print or build this board from file PCB*



diztly said:


> thanks mr.man
> this my board with mr.man schematic, but uln 2003 ic not fit inboard feet to small, but is ok.
> 
> can any guys help how to change code pin TFT and Utouch to standart pin 7,6,5,4,3.
> LED PWM Drive only via PCA9685
> 
> thanks


where did you print or build this board from file PCB
Thanks


----------



## ryanminson

Has any one had issues with the dosing side of things not working with the schedule? I can get it to work manually but not with tge schedule.


----------



## FischAutoTechGarten

Don't know if anyone is interested, but I am clearing out a ton of IoT related stuff that would be useful for anyone doing a DIY Aquarium Controller.

Atlas-Scientific stuff and an absolute ton of Arduino Stuff in two separate auctions.. It just seems wrong not to point it out to the DIYs here building their own aquarium controllers... So you will have to send me PMs to ask about the auctions as it is against policy to include the links here..

So there are two auctions of interest:

The first is for all of the Automation and Controls / Internet of Things:









The second auction is for all of my Atlas-Scientific Water Quality instruments / sensors / transmitters:









I hope someone is able to make use of all of this great material. Maybe I’ll sell some tools too (soldering stations, electrical meters, cradles, etc…) at some point..










I'm building my own controller using a RaspberryPi4, Node-RED, and Atlas-Scientific i2c Sensors and NCD i2c Expansion boards... so yeah.. I don't need the stuff above. I'll post a separate thread about this thing shortly... It's just in it's infancy... But above is a link to the Gallery here where I have a snap shot from a few days ago of it's quick and dirty Node-RED dashboard on the small 7" PI4 screen (when I'm done, it will be run in Kiosk mode and loose all of the Chromium stuff that is taking up so much real estate).


----------



## Sokonomi

Oho, a Pi controller, was waiting for one of those to pop up!
I've been beating myself up with hard to chew arduino code,
Node-RED seems a bit more pleasant to deal with.
Hook me up with a link if you have a thread somewhere.


----------



## FischAutoTechGarten

Sokonomi said:


> Hook me up with a link if you have a thread somewhere.


I mainly posted to show the Arduino stuff I have for sale for anyone building the iAqua (Auction closes in 5 hours, looks like I'll get $200usd for the Arduino stuff... someone's getting a great deal).... 

I wont' elaborate more on my controller on this thread... I'll start another thread soon.... Just look for my User Name. For now, I have some initial code posted on a thread I started on SimplyDiscus (DIY Control - RaspberryPi4 - Raspbian - NodeRED - AtlasSci Inst - NCD ExpI/O over i2c) ...


----------



## osmancel

*Code pls*

Hİ

send me code pls..
Thank you


----------



## FischAutoTechGarten

Sokonomi said:


> Oho, a Pi controller, was waiting for one of those to pop up!
> I've been beating myself up with hard to chew arduino code,
> Node-RED seems a bit more pleasant to deal with.
> Hook me up with a link if you have a thread somewhere.


Started a Controller build thread on the Node-RED forums. It's very focused on the Atlas-Scientific i2c sensors and getting data in and out. Lots of progress has been made. I'm even doing control over relays on an i2c expansion board as well... So presently no GPIO on the Raspberry Pi is being used... it's all networked sensors/devices on the i2c bus.

Sonora Technical's Aquarium Controller w/ Node-RED, RaspberryPI and Atlas-Sci.


----------



## Sokonomi

I already have most of the materials for this laying around so im just gonna push through with it for the hell of it. :')

Some details about this O2Surplus board have me a little confused though..










So here's the circuit. A few things struck me as a little odd about this design;

1. Why does it take 24v? Wouldn't it be easier to just omit the UA7812 and run the whole thing on a single 12v powersource along with the arduino mega? Personally I'm thinking I will just leave that regulator off, jump the legs and run a wire to the arduinos VIn pin. That way I can just feed it 12v and let the power aggregate from the shield to everything else. Only one powerjack needed, and one less heatsource. Would there be any reasons not to do this?

2. Which leads me to the second thing I found odd; Why is the shield feeding power to the arduino 5V pin? If this is intended to bypass the arduinos 5v regulator and power the board, isn't this generally considered a bad idea?

3. The PWM control, can I just plop some N-Fets on there and run some LED strips? Or would that be too simple?


----------



## jeffkrol

ok, just a few points for discussion:
Think the input power is "less than (or equal)" to 24v.
max input voltage on the 5v and 12v regulator is 25v. 30v respectively.
min for 12v reg is 14.5 
sooo.
Limit on the on board voltage regulator(s)
http://www.ti.com/lit/ds/symlink/ua...ll-mousermode-df-pf-null-wwe&ts=1588909844326

PWM was designed to run either Meanwell LDD's or his own drivers.
sooo sure using digital MOSFETs is prob fine.
Strips run constant voltage though and constant current drive is preferred.

Believe Aduinos 5V bus current is limiting..

Never known him to not have a good reason for something... He's missed...


----------



## Sokonomi

jeffkrol said:


> Think the input power is "less than (or equal)" to 24v.
> max input voltage on the 5v and 12v regulator is 25v. 30v respectively.
> min for 12v reg is 14.5
> sooo.
> Limit on the on board voltage regulator(s)
> http://www.ti.com/lit/ds/symlink/ua...ll-mousermode-df-pf-null-wwe&ts=1588909844326


I know it wont let me use a 12v powersource unless I simply bypass it. So my choices are running this with 2 different power supplies, or just omitting that 12v regulator with a bypass and powering the whole thing on a single 12v. ..I presume? I do have 24v available for my lights, but for both wiring and heat generating it seems nicer not to use the 7812?



jeffkrol said:


> PWM was designed to run either Meanwell LDD's or his own drivers.
> sooo sure using digital MOSFETs is prob fine.
> Strips run constant voltage though and constant current drive is preferred.


What circuit is meant to go on that PWM output then?
I didn't come across it reading this thread?



jeffkrol said:


> Believe Aduinos 5V bus current is limiting..


I'm not sure what you mean by that?
The 5v on the shield should not connect to the 5v on the ardruino I think?
The shield 5v is meant to replace the arduino 5v?



jeffkrol said:


> Never known him to not have a good reason for something... He's missed...


Ive heard great things about him..


----------



## Sokonomi

- Stuff about PWM over I2C -
Figured it out already. :')


----------



## jeffkrol

Sokonomi said:


> What circuit is meant to go on that PWM output then?
> I didn't come across it reading this thread?


post 387


> You'll need a separate led driver. The controller only provides a 5V/40ma PWM signal. That's not enough current to drive high power leds.


----------



## Sokonomi

Well obviously the Arduino is not gonna power the tanklights all by itself, that's why you use the PWM signal to control the gate on an N-channel MOSFET, I think?










This example is for 3 channels, but its all the same. Plus ofcourse the power being drawn from an external supply (shared GND!).

I thought you had to use a servo driver board to unpack the PPM-train into individual PWM signals, because the code involves PCA9865. But apparently that's just an option, and the channel PWM signals are available on pins 2 ~7 anyway.


----------



## rajdude

*Awc?*

Hello everyone,
First, Thanks a lot to all the contributors here! 

I am very interested in this project. I would like to build one for my own use. But I have a question:


Has any sort of automatic water change (AWC) system been implemented with iAqua?


If not, can something be done? It could be as simple as using two floats (one bottom, one top) as sensors. At a set time, turn on a pump. Old water goes out. When both floats go low, latch another pump "on" until the top float goes high. Yeah, I know......easier said than done! LoL





PS: I did search this thread but did not find any reference to AWC. ATO functionality is there, I hear.


----------



## monkeyruler90

rajdude said:


> Hello everyone,
> First, Thanks a lot to all the contributors here!
> 
> I am very interested in this project. I would like to build one for my own use. But I have a question:
> 
> 
> Has any sort of automatic water change (AWC) system been implemented with iAqua?
> 
> 
> If not, can something be done? It could be as simple as using two floats (one bottom, one top) as sensors. At a set time, turn on a pump. Old water goes out. When both floats go low, latch another pump "on" until the top float goes high. Yeah, I know......easier said than done! LoL
> 
> 
> 
> 
> 
> PS: I did search this thread but did not find any reference to AWC. ATO functionality is there, I hear.


I agree, I would love to have a system to do an AWC, not just an ATO 

https://www.bulkreefsupply.com/awc-auto-water-changer-plus-ato-autoaqua.html

this system would include what I want but it's expensive for a stand alone system


----------



## rajdude

monkeyruler90 said:


> I agree, I would love to have a system to do an AWC, not just an ATO
> 
> 
> 
> https://www.bulkreefsupply.com/awc-auto-water-changer-plus-ato-autoaqua.html
> 
> 
> 
> this system would include what I want but it's expensive for a stand alone system


Here's a cheaper alternative...
http://autotopoff.com/

It's not on their website, but when I emailed that guy (Paul, very nice guy), he sent me a PDF describing a custom controller setup. It's around 150 bucks.



Sent from my H8314 using Tapatalk


----------



## rajdude

Hmmmm...I wonder if anyone is still using and maintaining code for this project. This thread was started 6 years back. The OP has been absent for 5 years. 

There is another project called Mr. Aqua on GitHub, linked in here somewhere. Its notes say that it is based on this code...but even that is 2 years old.

I wonder if I am barking up the wrong tree.

Should I look for something more modern and actively developed and supported?

Any tips, anyone?

Bueller? ;-)



Sent from my H8314 using Tapatalk


----------



## fietsenrex

Sokonomi said:


> Well obviously the Arduino is not gonna power the tanklights all by itself, that's why you use the PWM signal to control the gate on an N-channel MOSFET, I think?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> This example is for 3 channels, but its all the same. Plus ofcourse the power being drawn from an external supply (shared GND!).
> 
> I thought you had to use a servo driver board to unpack the PPM-train into individual PWM signals, because the code involves PCA9865. But apparently that's just an option, and the channel PWM signals are available on pins 2 ~7 anyway.


Think you are also on aquaforum.nl
If you have any questions about the hardware or code feel free to contact me over there since I’m not as active here


----------



## Michele73

Hello everyone, I would like to ask you for a courtesy who can help me or understand how I can modify this project with a Nextion screen, or someone has already done it if they can give me some ideas.
Thank you very much and have a nice day


----------



## FischAutoTechGarten

rajdude said:


> Hmmmm...I wonder if anyone is still using and maintaining code for this project. This thread was started 6 years back. The OP has been absent for 5 years. There is another project called Mr. Aqua on GitHub, linked in here somewhere. Its notes say that it is based on this code...but even that is 2 years old.
> 
> I wonder if I am barking up the wrong tree. Should I look for something more modern and actively developed and supported?
> 
> Any tips, anyone?
> 
> Bueller? ;-)


Some of us have started projects using the RaspberryPi4 and NodeRed. Albiet, we rely heavily on sensors/circuits over i2c from Atlas-Scientific for measurement and dosing. Likewise, I'm using i/o boards from NCD.io for Control (relays / pwm). 

Here's a good link to MaddyP's work on reef2reef (salwater focus): https://www.reef2reef.com/threads/w...ode-red-raspberry-pi-controller-build.716452/

My thread is here on NodeRed, however, I have to get them to re-open it so I can post my latest modifications: https://discourse.nodered.org/t/aqu...entific-i2c-devices-ncd-i2c-relay-board/25839

Maddy's work is more interesting becuase he's doing allot of custom html for UI...


----------



## rajdude

Thanks for chiming in here.
I took a peek at your work a few months back, at that time it seemed (to me) a little more than I could chew.

Do you have a working prototype now?

I'll check out Maddy's work. Thanks for that pointer.

iAqua seemed to me that it was a complete, working thing. There are some videos on YouTube for it, people doing a quick demo. Seems quite old now. I guess those parts (which he used) are no longer available easily.

Sent from my H8314 using Tapatalk


----------



## alphabeta

I can share a working code, that went through some modifications. Works great still after 5-6 years (?) Best time spend on building something for my tanks. If you have the knowledge, then go ahead with iAqua. Not sure what support for the code you mean. It is a simple code, based on Arduino, so no operating system behind or anything like that. 

These days, people are doing reef-pi, which is a different concept, requiring different type of knowledge. I am finishing my built on of reef-pi adapted to planted tanks, hopefully to be able to post the built soon (1-2 months). It is an option, and i tried just out of curiosity. Maybe with more potential, and actively maintained, but on the other, hand, it is a more complex solution. To change something requires much more programing skills. It is also more expensive solution. However, to get simple things to work is somehow also easier. 

bottom line, either one will work fine, and if I would be at the beginning of choosing, I am still not sure which one is better - both a great!


----------



## rezamdzr

how can i download the source for this project now?
(iAqua: My Touch Interface Aquarium Controller (Arduino)) page1


----------



## rajdude

It's on GitHub

Sent from my H8314 using Tapatalk


----------



## alphabeta

the original is on GitHub, see the first page. In case you want a slightly modified version, with 3 dosing pump and more On/Off periods here is my code
https://app.box.com/s/pdv2pkh6zl9opykx33bd79mgfhnft8ra


----------



## pdv1965

Good day. Tell me, signals from which sensors turn on fans Fan1 and Fan2. Thank you.


----------



## bita

Hi friend I have been using this controller for more than 4 years successfully and I thought it would be great if you could control the addition of co2 more precisely using a ph electrode.Do you have any options to control the ph?
All my respect for the work done.


----------



## Maxxxy

Hello guys, I apologize for my bad English because I am writing with translation. I did the MrAqua installation but the screen is reversed, there is no problem in the touch part, but I tried all the drivers but the same problem. Has anyone had this problem before who can help.










When I install the CTE32_R2 driver, the screen returns to normal but this time the touchscreen is not working.


----------



## Maxxxy

pdv1965 said:


> İyi günler. Söylesene, fanlar Fan1 ve Fan2'yi hangi sensörlerden gelen sinyaller açıyor. Teşekkürler.
> [/TEKLİF]


Hİ
FAN1- HEATSKİN
FAN2- İNTERNAL


----------



## pdv1965

У меня экран и сенсор были перевернуты. Вот исправленная прошивка.
My screen and sensor were turned upside down. Here is the revised firmware.


----------



## pdv1965

Sent, try


----------



## Maxxxy

hi again, I installed the system, it works, but it does not do the things that it should do with timing, but there is no problem with rtc in those with mechanical triggering, I think there is a problem with the wdt.h library, can you help.


----------



## pdv1965

Отправил на почту ссылку, там есть и библиотеки которые я использовал.
I sent a link to the mail, there are also libraries that I used.


----------



## David Nottelling

Been away for a while and just decided to build another one on these controllers, I was wondering.... on the SD card, is there a trick to getting larger than 1GB cards working?
I can steal a 1GB out of one of my iAqua builds and it works fine for the most part (missing a picture I think, under the time and next to the temp), but when I try a 2GB card (Fat, Fast23, exFAT) and the images in the "SD Card Images" folder, I get nothing. 
I even tried cloning the original and working 1GB card with win32DiskImager onto a 2GB and 16Gb card with no luck. 
Anyone else experience this, fix it?


----------



## rajdude

I have been researching about iAqua and another diy aquarium controller , reef pi.

So far, it seems to me that reef pi has the features I want right out of the box, like WiFi connectivity and a website where it can be controlled from plus many modern features.

I hear that iAqua could do that also, but will need a lot of extra boards and more programming.

Sent from my H8314 using Tapatalk


----------



## David Nottelling

rajdude said:


> I have been researching about iAqua and another diy aquarium controller , reef pi.
> 
> So far, it seems to me that reef pi has the features I want right out of the box, like WiFi connectivity and a website where it can be controlled from plus many modern features.
> 
> I hear that iAqua could do that also, but will need a lot of extra boards and more programming.
> 
> Sent from my H8314 using Tapatalk


I cam to ask another question of the group and saw your question.... I too looked at the reef Pi, liked it but found that it also needed multiple boards. If your still looking for something with WiFi, perhaps this (AquariOS - Aquarium Operating System) would interest you. It was a bit too much for my needs, but I built one on a breadboard and it was a nice project, combining WiFi and a touch screen.

I was wondering if anyone has added control for a second heater relay, with or without on screen adjustability. 
I'm using a SSR for the heater now, but would like to add a mechanical relay as a sort of fail safe, should the SSR fail (heard they fail closed circuit). This way, if the temp ever goes 2 or so degrees over the max set point, the mechanical would trip, saving me from a "fish fry". 
I see in O2's board there are a few unused pins, and asking before I try adding code to utilize 1 of those.


----------



## FischAutoTechGarten

David Nottelling said:


> I was wondering if anyone has added control for a second heater relay, with or without on screen adjustability.
> I'm using a SSR for the heater now, but would like to add a mechanical relay as a sort of fail safe, should the SSR fail (heard they fail closed circuit). This way, if the temp ever goes 2 or so degrees over the max set point, the mechanical would trip, saving me from a "fish fry".
> I see in O2's board there are a few unused pins, and asking before I try adding code to utilize 1 of those.


I have an interesting fail safe mechanism for my heaters in stalled in my 6 tank central system....

1. each of my 6 20L display tanks has a small 25W hydor substrate heating cable. So quite underpowered in the winter. So if they got locked on... it wouldn't result in taking the water temps over 78degF in my 70degF ambient air home.

2. the second chamber of the dual 2 x 20L sump tanks has 1 100W aux heater installed. This 100W heater is dialed in to maintain 80degF in connected directly to mains... That assures me that they will be on when the controller is calling for 78degF. If the controller (relay) were to lock up.. fully engaging this 100W aux heater as if it were connected directly to mains... it would only stay on until about 80degF. The mechanical portion of this aux heater is my safeguard against the electrical portion (controller/relay) running away.

So really worst case scenario for me would be a runaway temperature from 78degF to 80degF. After 80degF.. the aux heater would shut off... meanwhile the other 6 25W substrate cable heaters fully engaged would hardly do anything to increase the whoe system's 150gallons by even 1 degree as it would be unaided by the 100W aux heater. I have high circulation and allot of glass area (8 20 gallon aquariums and loads of plumbing) for heat loss.


----------



## yusufhadiwinata

Hi Everyone, specially @MrMan @AnotherHobby

i have looking to make my touch working on last 5 days with no luck, the environment and hardware is:
[1] Arduino Mega R3
[2] 3.2 Inch TFT LCD Shield Expansion Board for Mega 2560
[3] 3.2 Inch ILI9341 TFT LCD Display Module Touch Panel TFT_320QVT_9341 for arudino

Reff:
[2] https://id.aliexpress.com/i/32875329230.html
[3] 3.2 Inch ILI9341 TFT LCD Display Module Touch Panel Geekcreit for Arduino - products that work with official Arduino boards

----

The example code for Calibration for TFT and Touch from the library has been successfully, i tested following example code:

URTouch Botton Test
URTouch Calibration
URTouch Quick Draw
URTouch Quick Paint
UTouch Botton Test
UTouch Calibration
UTouch Quick Draw
UTouch Quick Paint

i also try different AVR Board Version:

Arduino AVR Board 1.8.5
Arduino AVR Board 1.6.23
Arduino AVR Board 1.6.2

with combination library version:

Arduino-IRremote-3.6.1 for AVR 1.8.5
SdFat-2.1.2 for AVR 1.8.5
Arduino-IRremote-2.01 for AVR 1.6.2 and 1.6.23
SdFat-1.1.4 for AVR 1.6.2 and 1.6.23

----

My Configuration



Code:


#include <URTouch.h>  // used to interface with the touch controller on the TFT display
#include <UTouch.h> //yusuf

UTFT myGLCD(ILI9341_16,38,39,40,41); // start up an instance of the TFT screen
URTouch myTouch(6, 5, 4, 3, 2); // For standard TFT shield
//UTouch myTouch(6, 5, 4, 3, 2); // yusuf


From the Serial Port, i always get:



Code:


Finished watchdog setup
v2.5.3
sensor1Calibration: 0.00
sensor2Calibration: 0.00
sensor3Calibration: 0.00
# of alarms: 6
SRAM: 3693

End of setup.
Touch: -1,-1
Touch: -1,-1
Touch: -1,-1
Touch: -1,-1
Touch: -1,-1

i have search in this thread and found someone have same problem, but no valid solution has been mention, can someone help me to guide how to solve this issue.

when i relocated pin 2-6 to 42-46, did i need to cut pin header 42-46 on the shield?

Related post:

Search results for query: touch
iAqua: My Touch Interface Aquarium Controller (Arduino)
iAqua: My Touch Interface Aquarium Controller (Arduino)
Image Corrupt lead to touch not working iAqua: My Touch Interface Aquarium Controller (Arduino)
Relocate Pin on shield iAqua: My Touch Interface Aquarium Controller (Arduino)
Got same result x=-1, y=-1 iAqua: My Touch Interface Aquarium Controller (Arduino)
Relocate Pin by @AnotherHobby iAqua: My Touch Interface Aquarium Controller (Arduino)
Recap from @AnotherHobby iAqua: My Touch Interface Aquarium Controller (Arduino)
Library issue on old IDE ? iAqua: My Touch Interface Aquarium Controller (Arduino)
Comment Pin 1-6 for LED iAqua: My Touch Interface Aquarium Controller (Arduino)
Modified URTouch library iAqua: My Touch Interface Aquarium Controller (Arduino)
Pin Removed iAqua: My Touch Interface Aquarium Controller (Arduino)
Relay Cabling iAqua: My Touch Interface Aquarium Controller (Arduino)

Thanks

Related Image








iAqua: My Touch Interface Aquarium Controller (Arduino)


Very cool!




www.plantedtank.net













hello all,
@MrMan @AnotherHobby

my bad, iam using ledpin for another purpose on my code that make the touch problem, after using the modified URTouch library, can make the touchpad working


Thanks


----------



## yusufhadiwinata

Finally i build my own


----------



## Dwisaputra

yusufhadiwinata said:


> Finally i build my own
> View attachment 1043790


Malam pak, bisa minta emailnya ? Saya mau belajar buat seperti ini juga terimakasih 🙏


----------

