My Neptune Apex web interface compatible DIY reef controller

Just make sure the jack where the TRRS plug is plugged into is wired the same. That is, the sleeve connection is ground. If you are plugging in the TRRS plug to a TRS jack, check to make sure the jack sleeve (gnd) contact is connected to the TRRS plug sleeve, as typically, it will be connected to ring2 and not to the sleeve.

Wonder why I am not getting a read out on it then, I know I use to before I re soldered everything, but after soldering I get no reading. Then with those problems started occurring, it seemed responsible from the temp. Which is why I started thinking maybe I have it soldered wrong this time around. Oh well, guess later tonight I will un-hook the controller from the tank, re-attach D48, and hope for the best.

for now, if you need to calibrate ph4, you must load the atlas sketch to calibrate the probe, then load the chauvet sketch again.

wow, guess I will be getting ph 10 fluid then, lol.
 
Last edited:
I just got through reconnecting the temp pin and probe. Everything still seems to working as suppose to. Nothing is being reset. However I still do not have a temp read out. Wonder if my probe went out, or if I accidentally inverted the tip and sleeve.

Did anything change in the code with the temp from a few months back, other than the ability to read from two different temps? I only have one temp probe. Still connected to D48. By default, is this still all correct:

//////////////////////////////////////////////////
// DS18B20 Temperature Sensor Section
// Due to limited memory on Arduino,
// I do not recommend using more than 2 sensors
//////////////////////////////////////////////////
#define _TEMP //comment out if no temp probe
#define MAXTEMP 1 //number of temp sensors, 1 or 2
#if !defined(_TEMP)
#define MAXTEMP 0
#endif
//edit the next line to specify the temp sensor name and address pair. One entry for each temp sensor
//The first temp is used to control heater and fan and MUST be present, the rest may not be present.
#define TEMPDEF {{"Temp",{0x28, 0xdf, 0x5d, 0x89, 0x05, 0x00, 0x00, 0xf8}}}
//,{"Ambient",{0x28, 0xde, 0x18, 0x5a, 0x05, 0x00, 0x00, 0x7d}}}
#define TEMPALERT {{76,82}}
 
I just got through reconnecting the temp pin and probe. Everything still seems to working as suppose to. Nothing is being reset. However I still do not have a temp read out. Wonder if my probe went out, or if I accidentally inverted the tip and sleeve.

Did anything change in the code with the temp from a few months back, other than the ability to read from two different temps? I only have one temp probe. Still connected to D48. By default, is this still all correct:

Did you put in the address for the temp probe
 
Code:
#define TEMPDEF {{"Temp",{0x28, 0xdf, 0x5d, 0x89, 0x05, 0x00, 0x00, 0xf8}}}
go to arduino examples and go to dallastemperature and go to tester. Write in the last two numbers 0x##,0x##, and so on
 
Will I need my LCD for this?

Also I noticed awhile back I started having troubles with my LCD. Before everything looked like it was suppose to, however lately, my back light comes on only during initial boot, after that I have no more back light.
 
Last edited:
Will I need my LCD for this?

Also I noticed awhile back I started having troubles with my LCD. Before everything looked like it was suppose to, however lately, my back light comes on only during initial boot, after that I have no more back light.

Upload the code make sure you change the output to d48 and go to the serial monitor to get the probe address.
 
D0ughB0y,

I'm gettign these errors since the last upload

Any thoughts or guidance

Thanks

Chauvet17:60: error: 'Serial1' was not declared in this scope
InterruptsIO.ino: In function 'void initTimer()':
InterruptsIO:20: error: 'OCR1C' was not declared in this scope
InterruptsIO:21: error: 'OCIE1C' was not declared in this scope
InterruptsIO.ino: In function 'void beepoff()':
InterruptsIO:70: error: 'PORTF' was not declared in this scope
InterruptsIO:70: error: 'PF0' was not declared in this scope
InterruptsIO.ino: In function 'void __vector_5()':
InterruptsIO:90: error: 'PINK' was not declared in this scope
InterruptsIO:100: error: 'PK5' was not declared in this scope
InterruptsIO.ino: In function 'void initBuzzer()':
InterruptsIO:131: error: 'PD7' was not declared in this scope
InterruptsIO.ino: In function 'void buzzerHandler()':
InterruptsIO:147: error: 'PD7' was not declared in this scope
InterruptsIO:155: error: 'PD7' was not declared in this scope
InterruptsIO.ino: In function 'void initATO()':
InterruptsIO:165: error: 'DDRK' was not declared in this scope
InterruptsIO:165: error: 'PK3' was not declared in this scope
InterruptsIO:165: error: 'PK4' was not declared in this scope
InterruptsIO:166: error: 'PORTK' was not declared in this scope
InterruptsIO.ino: In function 'uint8_t getATO1()':
InterruptsIO:170: error: 'PINK' was not declared in this scope
InterruptsIO:170: error: 'PK3' was not declared in this scope
InterruptsIO.ino: In function 'uint8_t getATO2()':
InterruptsIO:174: error: 'PINK' was not declared in this scope
InterruptsIO:174: error: 'PK4' was not declared in this scope
InterruptsIO.ino: In function 'void initDosers()':
InterruptsIO:204: error: 'DDRG' was not declared in this scope
InterruptsIO:204: error: 'PG0' was not declared in this scope
InterruptsIO:204: error: 'PG2' was not declared in this scope
InterruptsIO:205: error: 'PORTG' was not declared in this scope
InterruptsIO.ino: In function 'void doserOn(uint8_t, uint32_t)':
InterruptsIO:247: error: 'PORTG' was not declared in this scope
InterruptsIO:247: error: 'PG0' was not declared in this scope
InterruptsIO:249: error: 'PORTG' was not declared in this scope
InterruptsIO:249: error: 'PG2' was not declared in this scope
InterruptsIO.ino: In function 'void doserOff(uint8_t)':
InterruptsIO:263: error: 'PORTG' was not declared in this scope
InterruptsIO:263: error: 'PG0' was not declared in this scope
InterruptsIO:265: error: 'PORTG' was not declared in this scope
InterruptsIO:265: error: 'PG2' was not declared in this scope
InterruptsIO.ino: In function 'boolean isDoserOn(uint8_t)':
InterruptsIO:282: error: 'PORTG' was not declared in this scope
InterruptsIO:282: error: 'PG0' was not declared in this scope
InterruptsIO:284: error: 'PORTG' was not declared in this scope
InterruptsIO:284: error: 'PG2' was not declared in this scope
InterruptsIO.ino: In function 'void calstop(uint8_t)':
InterruptsIO:309: error: 'PORTG' was not declared in this scope
InterruptsIO:309: error: 'PG0' was not declared in this scope
InterruptsIO:311: error: 'PORTG' was not declared in this scope
InterruptsIO:311: error: 'PG2' was not declared in this scope
InterruptsIO.ino: In function 'void caladjust(uint8_t, uint32_t)':
InterruptsIO:323: error: 'PORTG' was not declared in this scope
InterruptsIO:323: error: 'PG0' was not declared in this scope
InterruptsIO:325: error: 'PORTG' was not declared in this scope
InterruptsIO:325: error: 'PG2' was not declared in this scope
InterruptsIO.ino: In function 'void initFeeder()':
InterruptsIO:396: error: 'DDRK' was not declared in this scope
InterruptsIO:396: error: 'PK2' was not declared in this scope
InterruptsIO:397: error: 'PORTK' was not declared in this scope
InterruptsIO.ino: In function 'void feed()':
InterruptsIO:401: error: 'DDRK' was not declared in this scope
InterruptsIO:401: error: 'PK2' was not declared in this scope
InterruptsIO:402: error: 'PORTK' was not declared in this scope
InterruptsIO.ino: In function 'void feedHandler()':
InterruptsIO:410: error: 'PORTK' was not declared in this scope
InterruptsIO:410: error: 'PK2' was not declared in this scope
InterruptsIO:411: error: 'DDRK' was not declared in this scope
InterruptsIO.ino: In function 'void initSonar()':
InterruptsIO:532: error: 'A13' was not declared in this scope
InterruptsIO.ino: In function 'void sonarHandler(uint8_t)':
InterruptsIO:542: error: 'PK5' was not declared in this scope
InterruptsIO.ino: In function 'void updateSonar()':
InterruptsIO:562: error: 'PORTL' was not declared in this scope
InterruptsIO:562: error: 'PL2' was not declared in this scope
LED.ino: In function 'boolean initLED()':
LED:69: error: 'DDRE' was not declared in this scope
LED:69: error: 'PE3' was not declared in this scope
LED:69: error: 'PE4' was not declared in this scope
LED:69: error: 'PE5' was not declared in this scope
LED:70: error: 'DDRH' was not declared in this scope
LED:70: error: 'PH3' was not declared in this scope
LED:70: error: 'PH4' was not declared in this scope
LED:70: error: 'PH5' was not declared in this scope
LED:71: error: 'TCCR3A' was not declared in this scope
LED:71: error: 'WGM31' was not declared in this scope
LED:71: error: 'COM3A1' was not declared in this scope
LED:71: error: 'COM3B1' was not declared in this scope
LED:71: error: 'COM3C1' was not declared in this scope
LED:72: error: 'WGM30' was not declared in this scope
LED:72: error: 'COM3A0' was not declared in this scope
LED:72: error: 'COM3B0' was not declared in this scope
LED:72: error: 'COM3C0' was not declared in this scope
LED:73: error: 'TCCR3B' was not declared in this scope
LED:73: error: 'WGM33' was not declared in this scope
LED:73: error: 'WGM32' was not declared in this scope
LED:73: error: 'CS30' was not declared in this scope
LED:74: error: 'CS32' was not declared in this scope
LED:74: error: 'CS31' was not declared in this scope
LED:75: error: 'TCCR4A' was not declared in this scope
LED:75: error: 'WGM41' was not declared in this scope
LED:75: error: 'COM4A1' was not declared in this scope
LED:75: error: 'COM4B1' was not declared in this scope
LED:75: error: 'COM4C1' was not declared in this scope
LED:76: error: 'WGM40' was not declared in this scope
LED:76: error: 'COM4A0' was not declared in this scope
LED:76: error: 'COM4B0' was not declared in this scope
LED:76: error: 'COM4C0' was not declared in this scope
LED:77: error: 'TCCR4B' was not declared in this scope
LED:77: error: 'WGM43' was not declared in this scope
LED:77: error: 'WGM42' was not declared in this scope
LED:77: error: 'CS40' was not declared in this scope
LED:78: error: 'CS42' was not declared in this scope
LED:78: error: 'CS41' was not declared in this scope
LED:79: error: 'ICR3' was not declared in this scope
LED:80: error: 'ICR4' was not declared in this scope
LED:81: error: 'OCR3A' was not declared in this scope
LED:82: error: 'OCR3B' was not declared in this scope
LED:83: error: 'OCR3C' was not declared in this scope
LED:84: error: 'OCR4A' was not declared in this scope
LED:85: error: 'OCR4B' was not declared in this scope
LED:86: error: 'OCR4C' was not declared in this scope
Outlets.ino: In function 'void initOutlets()':
Outlets:8: error: 'DDRA' was not declared in this scope
Outlets:9: error: 'PORTA' was not declared in this scope
Outlets.ino: In function 'void _outletOn(uint8_t)':
Outlets:187: error: 'PORTA' was not declared in this scope
Outlets.ino: In function 'void _outletOff(uint8_t)':
Outlets:207: error: 'PORTA' was not declared in this scope
Outlets.ino: In function 'boolean isOutletOn(uint8_t)':
Outlets:256: error: 'PORTA' was not declared in this scope
PWMPumps.ino: At global scope:
PWMPumps:36: error: 'OCR5B' was not declared in this scope
PWMPumps:36: error: 'OCR5C' was not declared in this scope
PWMPumps.ino: In function 'void initPWMPumps()':
PWMPumps:40: error: 'PB5' was not declared in this scope
PWMPumps:40: error: 'PB6' was not declared in this scope
Utils.ino: In function 'void lightToggle()':
Utils:16: error: 'PB7' was not declared in this scope
Utils.ino: In function 'void lightOn()':
Utils:20: error: 'PB7' was not declared in this scope
Utils.ino: In function 'void lightOff()':
Utils:24: error: 'PB7' was not declared in this scope
Utils.ino: In function 'void poutlets()':
Utils:311: error: 'PORTA' was not declared in this scope
 
Crap, how do I go about that?

if your MAXTEMP is 1, then address is not needed, as the code is optimized to not even bother sending the address, as only one sensor will respond to the read command.

Code:
    case 5:
      if (micros()-timestamp<410) return;
      if (MAXTEMP==1) {
        ds.skip(); //540us
        state=6;
      } else {
         if (bytecounter==0) {
           ds.write(0x55);
         } else {
           ds.write(tempdata[t].addr[bytecounter-1]);
         }
you should test by loading the DS18B20 test sketch under OneWire example and change the one wire pin from 10 to 48. If it works using the test sketch, then it should work with chauvet code.
 
moomin, the code is for arduino mega, make sure you set the arduino board to arduino mega under tools/board menu.
 
do you know if your fixture uses 5v pwm or 10v pwm? I think most recent (probably from last 3-4 years) only use 5v pwm.

I personally also just need 2 channels. So I may make the code configurable to use the mega pwm for up to 3 channels, and only use the pca9685 if more than 3 channels are required. If it turns out to be too complicated, only then I will make using pca9685 not optional.

Sorry for the late response, my BML fixtures uses PWM 10v drivers.
 
if your MAXTEMP is 1, then address is not needed, as the code is optimized to not even bother sending the address, as only one sensor will respond to the read command.

Code:
    case 5:
      if (micros()-timestamp<410) return;
      if (MAXTEMP==1) {
        ds.skip(); //540us
        state=6;
      } else {
         if (bytecounter==0) {
           ds.write(0x55);
         } else {
           ds.write(tempdata[t].addr[bytecounter-1]);
         }
you should test by loading the DS18B20 test sketch under OneWire example and change the one wire pin from 10 to 48. If it works using the test sketch, then it should work with chauvet code.

Thanks good to know that you don't need to put in the address, I using three sensors and sometimes the third one reads zero, I think its a bad probe will investigate later.
 
So after testing with DS18B20 to see if the temp is working, and if it does, reload the chauvet code, and comment out where it has probe address? Or is that unnecessarily since it is only one probe?
 
if your MAXTEMP is 1, then address is not needed, as the code is optimized to not even bother sending the address, as only one sensor will respond to the read command.

Code:
    case 5:
      if (micros()-timestamp<410) return;
      if (MAXTEMP==1) {
        ds.skip(); //540us
        state=6;
      } else {
         if (bytecounter==0) {
           ds.write(0x55);
         } else {
           ds.write(tempdata[t].addr[bytecounter-1]);
         }
you should test by loading the DS18B20 test sketch under OneWire example and change the one wire pin from 10 to 48. If it works using the test sketch, then it should work with chauvet code.


K just got through uploading the code, however I am not getting any print out on my LCD. Just white blocks. ANd I did not see an DS18B20, only DS18x20, so I used that.
 
K just got through uploading the code, however I am not getting any print out on my LCD. Just white blocks. ANd I did not see an DS18B20, only DS18x20, so I used that.

the ds18x20 example sketch does not use the lcd, it prints the results to serial monitor.

Actually, I have a correction. The address is used on initialization to confirm the temp sensor is present. It is just not used in the program loop. So you need the temp sensor address even if you only use one temp sensor.
 
Device not found is what I get with both dallastemperture test and ds18x20. So I will assume I got them inverted and will have to correct this.

Just got through re-testing my LCD as well. Using the LCD Test code I had found earlier this year, I ran it, and it works as expected, back light everything. However, with the Chauvet Code, I do not get my backlight.
 
Last edited:
Back
Top