Jump to content

Arduino Aquarium Controller


sherman
 Share

Recommended Posts

Anyone had use arduino microprocessor to DIY as aquarium controller?

Please share your BOM ,programming and hardware circuit?

Thanks

6.5 * 2 * 2 + 3.75 * 1.5 *1.5,(Decomn on 14/9/08)
4*2*2 + 2.5*1.25*1.25 (Decomn on 1/8/09)
5*2*2 (Fully LED light system, 140 3 watt SSC leds with 60 degree lens)(Decomm)
2.5*2*2(Fully LED Light System,96 3 watt SSC leds with 60 degree lens)(Decomm)

5*2.5*2(LED only)

Eheim return 1 * pump

1 HP Daikin compressor with cooling coil
2 Jebao OW40, 1 ecotech MP40,
1X6085 Tunze wm,

1 CURVE 7 Skimmer

  1 DIY 80 led control by Bluefish mini 

1 radion XR30W G2, 2 Radion XR15G3

Sump area lite by 5 ft T5 , 6 * SSC 3 watt red LED for refugium

1 Full spectrum E27 led light

1 CR control by bubble count

Start No Water Change since 1st Dec 2016

Add new 2.5x2x 1.5 ft 

 nLekOfpYts.jpg
[/quote]


 

Link to comment
Share on other sites

Camping here.....

"Reefs, like forests, will only be protected in long term if they are appreciated"
Dr. J.E.N. Veron
Australian Institute of Marine Science


-----------------------------------------------------------------------

Member of:

post-1182-0-60431600-1322062247_thumb.jp

post-2241-0-43391700-1354511230.png

UEN: T08SS0098F
Please visit us here: http://www.facebook....uaristSocietySG
Facebook Group: http://www.facebook....gid=34281892381

Link to comment
Share on other sites

Bro ... that's too generic a question.

Try http://www.arduino.cc/ for a general overview of Arduino and it's capabilities.

The language used is C/C++, it helps if you have some background of OOP (object oriented programming). You'll have to advise what exactly you want to do, i,e monitor temperature, dim lights, do auto top ups etc then I can help. Are you stuck programming at some point or you don't have any code yet to start with ?

As for the hardware, it depends on what you want to do. Arduino uses "shields" to expand it's capabilities and functions. For example, if you need a Ethernet connection for your project, then likely you'll be using the Ethernet shield. Bluetooth obviously uses the Bluetooth shield. Temperature control and basic light dimming functions can be done using the main board itself with a breadboard, some transistors, resistors and relays. Electrical and electronics background will come in handy here. Again, it depends on what you want to do. http://arduino.cc/en/Main/Products shows some basic shields

http://www.ladyada.net/learn/arduino/ is great place to visit for basics of Arduino.

http://arduino.cc/forum/index.php?action=forum - fantastic site to ask questions but do search before posting, it's very likely your questions have been asked by others before.

In a nutshell, tell me what you want to do and I'll tell you what you need. HTH :thumbsup:

Link to comment
Share on other sites

I am not a programmer, nor am I technically trained, I studied Business :ph34r: But I wanted something that is customized to my needs so I google everything I could find on arduino and read and studied it for months before I attempted on DIY. I believe if a person want something, he/she should do their homework. If an idiot like me can do it, anyone can, so please don't PM me as the answers are all on the internet like gp2700 stated.

Lastly, you can't just copy the codes from a built for your own use unless you are using exactly the same hardware (relay, switches, LCD, Temp probes, etc). Arduino is great because you can practically program it to do anything (look at Reef Angel) the possibilities can only limited by you skill and imagination.

Enough talk, the codes for my simple DIY arduino dosing pump. This dosing pump has been in operation since March 2012.

I appreciate it if programmers can give pointers on cleaning up the codes.



#include <Time.h>

#include <TimeAlarms.h>

int Pin1 = 7;	 // Alk

int Pin2 = 6;	 // Cal

int Pin3 = 5;	 // Mag


//byte seconds;


void setup()

{

  Serial.begin(9600);


  pinMode(Pin1, OUTPUT);  

  pinMode(Pin2, OUTPUT);

  pinMode(Pin3, OUTPUT);


setTime(17,59,45,3,1,12); // set time to 8:29:40am Jan 1 2010


  Alarm.alarmRepeat(18,00,0, Pump1);  

  Alarm.alarmRepeat(19,00,00, Pump2);

Alarm.alarmRepeat(20,00,0, Pump3);

  Alarm.alarmRepeat(21,00,0, Pump4);

Alarm.alarmRepeat(22,00,00, Pump5);  

Alarm.alarmRepeat(23,00,0, Pump6);  

  Alarm.alarmRepeat(0,00,0, Pump7);

  Alarm.alarmRepeat(1,00,00, Pump8);  

Alarm.alarmRepeat(2,00,0, Pump9);  

  Alarm.alarmRepeat(3,00,0, Pump10);

  Alarm.alarmRepeat(4,00,00, Pump11);  

Alarm.alarmRepeat(5,00,0, Pump12);

  Alarm.alarmRepeat(6,00,0, Pump13);

Alarm.alarmRepeat(7,00,00, Pump14);  

Alarm.alarmRepeat(8,00,0, Pump15);

  Alarm.alarmRepeat(9,00,0, Pump16);

  Alarm.alarmRepeat(10,00,00, Pump17);

Alarm.alarmRepeat(11,00,0, Pump18);

  Alarm.alarmRepeat(12,00,0, Pump19);

  Alarm.alarmRepeat(13,00,00, Pump20);

Alarm.alarmRepeat(14,00,00, Pump21);

  Alarm.alarmRepeat(15,00,0, Pump22);

  Alarm.alarmRepeat(16,00,00, Pump23);

Alarm.alarmRepeat(17,00,00, Pump24);


//  Alarm.timerRepeat(15, RepeatTask);			// timer for every 15 seconds	

//  Alarm.timerOnce(10, OnceOnlyTask);			// called once after 10 seconds

}


void  loop()

{  

  digitalClockDisplay();

  Alarm.delay(1000); // wait one second between clock display

}



void Pump1()

{

  digitalWrite(Pin1, HIGH);   // set the LED on

  delay(40000);			  // wait for a second

  digitalWrite(Pin1, LOW);	// set the LED off

  delay(50);			  // wait for a second

}


void Pump2()

{

  digitalWrite(Pin3, HIGH);   // set the LED on

  delay(15000);			  // wait for a second

  digitalWrite(Pin3, LOW);	// set the LED off

  delay(50);			  // wait for a second

}


void Pump3()

{

  digitalWrite(Pin2, HIGH);   // set the LED on

  delay(28000);			  // wait for a second

  digitalWrite(Pin2, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump4()

{

  digitalWrite(Pin1, HIGH);   // set the LED on

  delay(33000);			  // wait for a second

  digitalWrite(Pin1, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump5()

{

  digitalWrite(Pin3, HIGH);   // set the LED on

  delay(15000);			  // wait for a second

  digitalWrite(Pin3, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump6()

{

  digitalWrite(Pin2, HIGH);   // set the LED on

  delay(25000);			  // wait for a second

  digitalWrite(Pin2, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump7()

{

  digitalWrite(Pin1, HIGH);   // set the LED on

  delay(40000);			  // wait for a second

  digitalWrite(Pin1, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump8()

{

  digitalWrite(Pin3, HIGH);   // set the LED on

  delay(15000);			  // wait for a second

  digitalWrite(Pin3, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump9()

{

  digitalWrite(Pin2, HIGH);   // set the LED on

  delay(28000);			  // wait for a second

  digitalWrite(Pin2, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump10()

{

  digitalWrite(Pin1, HIGH);   // set the LED on

  delay(33000);			  // wait for a second

  digitalWrite(Pin1, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump11()

{

  digitalWrite(Pin3, HIGH);   // set the LED on

  delay(15000);			  // wait for a second

  digitalWrite(Pin3, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump12()

{

  digitalWrite(Pin2, HIGH);   // set the LED on

  delay(28000);			  // wait for a second

  digitalWrite(Pin2, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump13()

{

  digitalWrite(Pin1, HIGH);   // set the LED on

  delay(40000);			  // wait for a second

  digitalWrite(Pin1, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump14()

{

  digitalWrite(Pin3, HIGH);   // set the LED on

  delay(15000);			  // wait for a second

  digitalWrite(Pin3, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump15()

{

  digitalWrite(Pin2, HIGH);   // set the LED on

  delay(25000);			  // wait for a second

  digitalWrite(Pin2, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump16()

{

  digitalWrite(Pin1, HIGH);   // set the LED on

  delay(33000);			  // wait for a second

  digitalWrite(Pin1, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump17()

{

  digitalWrite(Pin3, HIGH);   // set the LED on

  delay(15000);			  // wait for a second

  digitalWrite(Pin3, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump18()

{

  digitalWrite(Pin2, HIGH);   // set the LED on

  delay(28000);			  // wait for a second

  digitalWrite(Pin2, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump19()

{

  digitalWrite(Pin1, HIGH);   // set the LED on

  delay(40000);			  // wait for a second

  digitalWrite(Pin1, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump20()

{

  digitalWrite(Pin3, HIGH);   // set the LED on

  delay(15000);			  // wait for a second

  digitalWrite(Pin3, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump21()

{

  digitalWrite(Pin2, HIGH);   // set the LED on

  delay(25000);			  // wait for a second

  digitalWrite(Pin2, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump22()

{

  digitalWrite(Pin1, HIGH);   // set the LED on

  delay(33000);			  // wait for a second

  digitalWrite(Pin1, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump23()

{

  digitalWrite(Pin3, HIGH);   // set the LED on

  delay(15000);			  // wait for a second

  digitalWrite(Pin3, LOW);	// set the LED off

  delay(100);			  // wait for a second

}


void Pump24()

{

  digitalWrite(Pin2, HIGH);   // set the LED on

  delay(28000);			  // wait for a second

  digitalWrite(Pin2, LOW);	// set the LED off

  delay(100);			  // wait for a second

}



void digitalClockDisplay()

{

  // digital clock display of the time

  Serial.print(hour());

  printDigits(minute());

  printDigits(second());

  Serial.println();

}


void printDigits(int digits)

{

  Serial.print(":");

  if(digits < 10)

	Serial.print('0');

  Serial.print(digits);

}


post-5841-0-98167300-1356139501_thumb.jp

post-5841-0-75292900-1356140508_thumb.jp

Link to comment
Share on other sites

My buggy reef controller codes.

I have taken this down for the time being as there are some bugs with the program and I am too busy to troubleshoot.

It controls the LED drivers for sunset/sunrise, LED intensity controlled using the 3 potentiometers, temp probe, relays for wavemakers and other equipment.



/*

 Arduino LED controller for reef aquariums



*/


// Pins to control 

int blueLed = 9;     // LED PWM channel for blues

int whiteLed = 10;   // LED PWM channel for whites

int redLed = 6;      // Led PWM channel for reds

int fanPin =  7;    // Relay connected to digital pin 13

// int WavePin =  13;    // Wave maker Relay connected to digital pin 7

int SumpPin =  8;    // Sump light Relay connected to digital pin 8


int analogInPin = A0;  // Analog input pin that the potentiometer is attached to

int analogInPin1 = A3;  // Analog input pin that the potentiometer is attached to

int analogInPin2 = A2;  // Analog input pin that the potentiometer is attached to


int sensorValue = 0;        // value read from the pot

int outputValue = 255;        // value output to the PWM (analog out)

int sensorValue1 = 0;        // value read from the pot

int outputValue1 = 255;        // value output to the PWM (analog out)

int sensorValue2 = 0;        // value read from the pot

int outputValue2 = 255;        // value output to the PWM (analog out)


int blueout = 0;

int whiteout = 0;

int redout = 0;


int blue = 0;

int white = 0;

int red = 0;


int relay = 0;


// Set up 

#include <WProgram.h>

#include <Wire.h>

#include <DS1307.h>

#include <LiquidCrystal.h>

#include <OneWire.h>

#include <TimedAction.h>

// #include <DallasTemperature.h>


TimedAction timedAction = TimedAction(1500, blink);      //this initializes a TimedAction class that will change the state of an LED every second.


#define WavePin 13

boolean WaveState = false;


#define DS1307_I2C_ADDRESS 0x68


// Temperature ****************************************************

#define ONE_WIRE_BUS 7              // Data wire is plugged into port 7 on the Arduino

// #define TEMPERATURE_PRECISION 9


OneWire oneWire(ONE_WIRE_BUS);

// DallasTemperature sensors(&oneWire);

// DeviceAddress insideThermometer, outsideThermometer;



// RTC variables

byte second, rtcMins, oldMins, rtcHrs, oldHrs, dayOfWeek, dayOfMonth, month, year;


// Other variables. These control the behavior of lighting. Change these to customize behavoir

int minCounter = 0;         // counter that resets at midnight. Don't change this.

int blueStartMins = 720;    // minute to start blues. Change this to the number of minutes past midnight you want the blues to start.

int whiteStartMins = 740;   // minute to start whites. Same as above.

int redStartMins = 750;     // minute to start red.

int bluePhotoPeriod = 660;  // photoperiod in minutes, blues. Change this to alter the total photoperiod for blues.

int whitePhotoPeriod = 580; // photoperiod in minutes, whites. Same as above.

int redPhotoPeriod = 400;   

int fadeDuration = 40;      // duration of the fade on and off for sunrise and sunset. Change this to alter how long the fade lasts.

//int blueMax = outputValue;          // max intensity for blues. Change if you want to limit max intensity.

//int whiteMax = outputValue1;         // max intensity for whites. Same as above.

int fanontime =700;         // minute to start fan

int fanperiod = 700;        // duration of fan on time

int Sumpontime = 800;         // minute to start fan

int Sumpperiod = 240;        // duration of fan on time


int rtc[7];



// LCD interface pins

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);



/****** LED Functions ******/

/***************************/

//function to set LED brightness according to time of day

//function has three equal phases - ramp up, hold, and ramp down

byte setLed(int mins,    // current time in minutes 

            byte ledPin,  // pin for this channel of LEDs 

            int start,   // start time for this channel of LEDs 

            int period,  // photoperiod for this channel of LEDs 

            int fade,    // fade duration for this channel of LEDs 

            byte ledMax   // max value for this channel 

            )  { 

  byte ledVal = 0; 

  if (mins <= start || mins > start + period)  { 

   //this is when the LEDs are off, thus ledVal is 0; 

    ledVal = 0; 

  } 

  if (mins > start && mins <= start + fade)  { 

    //this is sunrise 

    ledVal =  map(mins - start, 0, fade, 0, ledMax); 

  } 

    if (mins > start + fade && mins <= start + period - fade)  { 

     //this is when the lights are on max (between sunrise and sunset) 

      ledVal = ledMax; 

  } 

    if (mins > start + period - fade && mins <= start + period)  { 

    //this is the sunset. 

    ledVal = map(mins - start - period + fade, 0, fade, ledMax, 0); 

  } 

   analogWrite(ledPin, ledVal); 

//   analogWrite(ledPin, map(ledVal, 0, 100, 0, 255)); 


   return ledVal;   


}  


// Relay for Sump & Fan

   byte setRelay(int mins, byte relayPin, int start, int period) {

   byte replay = LOW;  

      if (mins <= start || mins > start + period )  {

   relay = LOW;   

   }

   if (mins > start && mins <= start + period)  {

   relay = HIGH; 

   }

   digitalWrite(relayPin, relay);  

   }




/***** RTC Functions *******/

/***************************/

// Convert normal decimal numbers to binary coded decimal

byte decToBcd(byte val)

{

  return ( (val/10*16) + (val%10) );

}


// Convert binary coded decimal to normal decimal numbers

byte bcdToDec(byte val)

{

  return ( (val/16*10) + (val%16) );

}


// 1) Sets the date and time on the ds1307

// 2) Starts the clock

// 3) Sets hour mode to 24 hour clock

// Assumes you're passing in valid numbers.

void setDateDs1307(byte second,        // 0-59

                   byte minute,        // 0-59

                   byte hour,          // 1-24

                   byte dayOfWeek,     // 1-7

                   byte dayOfMonth,    // 1-28/29/30/31

                   byte month,         // 1-12

                   byte year)          // 0-99

{

   Wire.beginTransmission(DS1307_I2C_ADDRESS);

   Wire.send(0);

   Wire.send(decToBcd(second));

   Wire.send(decToBcd(minute));

   Wire.send(decToBcd(hour));

   Wire.send(decToBcd(dayOfWeek));

   Wire.send(decToBcd(dayOfMonth));

   Wire.send(decToBcd(month));

   Wire.send(decToBcd(year));

   Wire.endTransmission();

}


// Gets the date and time from the ds1307

void getDateDs1307(byte *second,

          byte *minute,

          byte *hour,

          byte *dayOfWeek,

          byte *dayOfMonth,

          byte *month,

          byte *year)

{

  Wire.beginTransmission(DS1307_I2C_ADDRESS);

  Wire.send(0);

  Wire.endTransmission();


  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);


  *second     = bcdToDec(Wire.receive() & 0x7f);

  *minute     = bcdToDec(Wire.receive());

  *hour       = bcdToDec(Wire.receive() & 0x3f);

  *dayOfWeek  = bcdToDec(Wire.receive());

  *dayOfMonth = bcdToDec(Wire.receive());

  *month      = bcdToDec(Wire.receive());

  *year       = bcdToDec(Wire.receive());

}



void setup()  { 


// init I2C  

  Wire.begin();


// set up the LCD's number of rows and columns:

  lcd.begin(16, 2);


// initialize the digital pin as an output:

//  pinMode(fanPin, OUTPUT);

  pinMode(WavePin, OUTPUT);

  digitalWrite(WavePin, WaveState);

//  pinMode(SumpPin, OUTPUT);


// Temperature Setup

  sensors.begin();        // Start up the library

  if (!sensors.getAddress(insideThermometer, 0)) lcd.println("Unable to find address for Device 0"); 

  if (!sensors.getAddress(outsideThermometer, 1)) lcd.println("Unable to find address for Device 1"); 

  sensors.setResolution(insideThermometer, 12);              // set the resolution to x bit

 sensors.setResolution(outsideThermometer, 12);              // set the resolution to x bit


}



/***** Main Loop ***********/

/***************************/

void loop()  { 


  timedAction.check();


  // get time from RTC and put in hrs and mins variables

  getDateDs1307(&second, &rtcMins, &rtcHrs, &dayOfWeek, &dayOfMonth, &month, &year);

  minCounter = rtcHrs * 60 + rtcMins;

   delay (100);


  // read the analog in value:

  sensorValue = analogRead(analogInPin);            

  // map it to the range of the analog out:

  outputValue = map(sensorValue, 0, 1023, 0, 255);  

   delay (20);


  // read the analog in value:

  sensorValue1 = analogRead(analogInPin1);            

  // map it to the range of the analog out:

  outputValue1 = map(sensorValue1, 0, 1023, 0, 255);  

   delay (20);


  // read the analog in value:

  sensorValue2 = analogRead(analogInPin2);            

  // map it to the range of the analog out:

  outputValue2 = map(sensorValue2, 0, 1023, 0, 255);

   delay (20);


  //set LED values

  white = setLed(minCounter, whiteLed, whiteStartMins, whitePhotoPeriod, fadeDuration, outputValue1);

  blue = setLed(minCounter, blueLed, blueStartMins, bluePhotoPeriod, fadeDuration, outputValue);

  red = setLed(minCounter, redLed, redStartMins, redPhotoPeriod, fadeDuration, outputValue2);

    delay (50);


  blueout = map(blue, 0, 255, 0, 99);

  whiteout = map(white, 0, 255, 0, 99);

  redout = map(red, 0, 255, 0, 99);  



  // Relay control 

  setRelay(minCounter, fanPin, fanontime, fanperiod);

  setRelay(minCounter, SumpPin, Sumpontime, Sumpperiod);

     delay (50);


  // Print Intensity

    lcd.setCursor(0, 1);

    lcd.print("B:");

    lcd.print(blueout);

    lcd.print("%");

    lcd.setCursor(6, 1);

    lcd.print("W:");

    lcd.print(whiteout);

    lcd.print("%");

    lcd.setCursor(12, 1);

    lcd.print("R:");

    lcd.print(redout);

    lcd.print("%");

    delay (100);


//  Print Temperature

  sensors.requestTemperatures();

  float tempCI = sensors.getTempC(insideThermometer);

  lcd.setCursor(0, 0);

  lcd.print("Rm:");

  lcd.print(TempCI);

  float tempCO = sensors.getTempC(outsideThermometer);

  lcd.setCursor(9, 0);

  lcd.print("T:");

  lcd.print(tempCO);


  // Print Date & Time


  char* dayOfWeek[] = {"", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};

  char* month[] = {"", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};


  RTC.get(rtc,true);

  lcd.setCursor(0, 0);

  printDigits(rtc[2],':');

  printDigits(rtc[1],' ');

  lcd.print(dayOfWeek[rtc[3]]);

  lcd.setCursor(10, 0); //Starts on column 0 row 2 

  lcd.print(rtc[4]);

  lcd.print('-');

  lcd.print(month[rtc[5]]);

   delay (100);


//  digitalWrite(WavePin, HIGH);   // set the relay on

//  delay(1000);                  // wait time in seconds

//  digitalWrite(WavePin, LOW);    // set the relay off

//  delay(1000);                  // wait time in seconds

}


 void printDigits(byte digits, char delimiter)

 {

  if(digits < 10)

  lcd.print('0');

  lcd.print(digits,DEC);

  lcd.print(delimiter);

   delay (100);

}


void blink(){

  WaveState ? WaveState=false : WaveState=true;

  digitalWrite(WavePin, WaveState);

}


post-5841-0-86380600-1356141339_thumb.jp

post-5841-0-08076100-1356141450_thumb.jp

  • Like 1
Link to comment
Share on other sites

Thank You bro gp2700 and bro bezz for sharing.

Is the Uno or Mega a good starting point?

6.5 * 2 * 2 + 3.75 * 1.5 *1.5,(Decomn on 14/9/08)
4*2*2 + 2.5*1.25*1.25 (Decomn on 1/8/09)
5*2*2 (Fully LED light system, 140 3 watt SSC leds with 60 degree lens)(Decomm)
2.5*2*2(Fully LED Light System,96 3 watt SSC leds with 60 degree lens)(Decomm)

5*2.5*2(LED only)

Eheim return 1 * pump

1 HP Daikin compressor with cooling coil
2 Jebao OW40, 1 ecotech MP40,
1X6085 Tunze wm,

1 CURVE 7 Skimmer

  1 DIY 80 led control by Bluefish mini 

1 radion XR30W G2, 2 Radion XR15G3

Sump area lite by 5 ft T5 , 6 * SSC 3 watt red LED for refugium

1 Full spectrum E27 led light

1 CR control by bubble count

Start No Water Change since 1st Dec 2016

Add new 2.5x2x 1.5 ft 

 nLekOfpYts.jpg
[/quote]


 

Link to comment
Share on other sites

Thank You bro gp2700 and bro bezz for sharing.

Is the Uno or Mega a good starting point?

I've only work with Uno & its predecessors but both mega & uno function the same. Mega has more ports which also makes it slightly more complex to work with. Most examples you find on the web is based on Uno, so Uno may be a better start since you can play around with other people's program to customise to your needs.

hope this helps

Link to comment
Share on other sites

Agree with bro bezz that both controllers function the same. Only difference is the physical footprint, memory and inputs.

Check out this Arduino build. http://ukreefs.com/index.php?topic=258.0 I think this is one of the more impressive builds I've seen.

I'm planning on the same build but will develop the code from scratch - it's often easier to write your own code then to try reverse-engineer someone else's code.

Link to comment
Share on other sites

Thank You bro Bezz and gp2700 for the update.

I will go get the UNO. I saw them selling at S$39 in Sim Lim Tower.

Is this the best price locally?

Beside the UNO what other items I need to purchase to start off

my tank light control.(DIY LED light set)

I like to to be able to on certain array of my led light set for sunrise and sunset.

And other arrays for peak lighting at noon.

Your feedback will be greatly appreciated .Thank You

6.5 * 2 * 2 + 3.75 * 1.5 *1.5,(Decomn on 14/9/08)
4*2*2 + 2.5*1.25*1.25 (Decomn on 1/8/09)
5*2*2 (Fully LED light system, 140 3 watt SSC leds with 60 degree lens)(Decomm)
2.5*2*2(Fully LED Light System,96 3 watt SSC leds with 60 degree lens)(Decomm)

5*2.5*2(LED only)

Eheim return 1 * pump

1 HP Daikin compressor with cooling coil
2 Jebao OW40, 1 ecotech MP40,
1X6085 Tunze wm,

1 CURVE 7 Skimmer

  1 DIY 80 led control by Bluefish mini 

1 radion XR30W G2, 2 Radion XR15G3

Sump area lite by 5 ft T5 , 6 * SSC 3 watt red LED for refugium

1 Full spectrum E27 led light

1 CR control by bubble count

Start No Water Change since 1st Dec 2016

Add new 2.5x2x 1.5 ft 

 nLekOfpYts.jpg
[/quote]


 

Link to comment
Share on other sites

Thank You bro Bezz and gp2700 for the update.

I will go get the UNO. I saw them selling at S$39 in Sim Lim Tower.

Is this the best price locally?

Beside the UNO what other items I need to purchase to start off

my tank light control.(DIY LED light set)

I like to to be able to on certain array of my led light set for sunrise and sunset.

And other arrays for peak lighting at noon.

Your feedback will be greatly appreciated .Thank You

I bought my arduinos from ebay. slightly cheaper.

can your LED driver dim with a 5v PWM signal? if you are using meanwell, you'll need a 10v signal which is a pain to hook up to ardiuno as you'll need to create a separate circuit. I can't help you here as I bought drivers that specially use 5v pwm dimming. Also, if your drivers don't dim to 100%, sunrise/sunset will not look too nice.

you can also buy a ready made ardiuno controller, it is based on a design by a guy on reefcentral.

http://www.boostled.com/product_p/typhon.htm

Link to comment
Share on other sites

Bro bezz,

Thank You for the very fast response and great info.

The ready made ardino controller you recomend is great. It come with RTC and a LCD screen

Look like I do not need to do much accept to connect all my LED light driver to the

controller directly.

Bro bezz Thanks once again. This is really good info for all our DIY reefers.

It really help them to enchance their DIY led lighting

  • Like 1

6.5 * 2 * 2 + 3.75 * 1.5 *1.5,(Decomn on 14/9/08)
4*2*2 + 2.5*1.25*1.25 (Decomn on 1/8/09)
5*2*2 (Fully LED light system, 140 3 watt SSC leds with 60 degree lens)(Decomm)
2.5*2*2(Fully LED Light System,96 3 watt SSC leds with 60 degree lens)(Decomm)

5*2.5*2(LED only)

Eheim return 1 * pump

1 HP Daikin compressor with cooling coil
2 Jebao OW40, 1 ecotech MP40,
1X6085 Tunze wm,

1 CURVE 7 Skimmer

  1 DIY 80 led control by Bluefish mini 

1 radion XR30W G2, 2 Radion XR15G3

Sump area lite by 5 ft T5 , 6 * SSC 3 watt red LED for refugium

1 Full spectrum E27 led light

1 CR control by bubble count

Start No Water Change since 1st Dec 2016

Add new 2.5x2x 1.5 ft 

 nLekOfpYts.jpg
[/quote]


 

Link to comment
Share on other sites

If u get the boostled controller ur almost set on the hardware side, u just need to connect additional programs for additional functions.. If ur unfamiliar with programming the sketch best to copy from others as a missing code may cause u to overflow the dt or the sump... Always do a function test for the worst case scenario... If u know what u are doing u can even make it comparable to a reef angel.. It may be cheaper but it's not going to be easy

Link to comment
Share on other sites

Agree with bro bezz that both controllers function the same. Only difference is the physical footprint, memory and inputs. Check out this Arduino build. http://ukreefs.com/index.php?topic=258.0 I think this is one of the more impressive builds I've seen. I'm planning on the same build but will develop the code from scratch - it's often easier to write your own code then to try reverse-engineer someone else's code.

This is real informative thread bro gp2700.

I don't know prgramming so a bit hard to understand.

Bro, you software engineer?

6.5 * 2 * 2 + 3.75 * 1.5 *1.5,(Decomn on 14/9/08)
4*2*2 + 2.5*1.25*1.25 (Decomn on 1/8/09)
5*2*2 (Fully LED light system, 140 3 watt SSC leds with 60 degree lens)(Decomm)
2.5*2*2(Fully LED Light System,96 3 watt SSC leds with 60 degree lens)(Decomm)

5*2.5*2(LED only)

Eheim return 1 * pump

1 HP Daikin compressor with cooling coil
2 Jebao OW40, 1 ecotech MP40,
1X6085 Tunze wm,

1 CURVE 7 Skimmer

  1 DIY 80 led control by Bluefish mini 

1 radion XR30W G2, 2 Radion XR15G3

Sump area lite by 5 ft T5 , 6 * SSC 3 watt red LED for refugium

1 Full spectrum E27 led light

1 CR control by bubble count

Start No Water Change since 1st Dec 2016

Add new 2.5x2x 1.5 ft 

 nLekOfpYts.jpg
[/quote]


 

Link to comment
Share on other sites

bro sherman,

no, i'm not a software engineer but it so happens that I did pretty well for my C programming back in my poly days so picking it up again was not a uphill task. It's really not that difficult once you know what you want. The rest is just figuring out the syntax of the programming language.

Btw, what and how many LED drivers are you using for your SSC setup?

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



×
×
  • Create New...