Typhon reef controller firmware

Discussion in 'Lighting' started by Fred d, 10 Jul 2014.

  1. Fred d

    Fred d

    Joined:
    10 Aug 2012
    Posts:
    1,103
    Likes Received:
    15
    Location:
    cape town
    Hi all

    I am wanting to upgrade / reflash the firmware on my typhon reef controller . I was messing with it and it simply stopped . The screen switches on but nothing shows and it doesn't illuminate .

    PROBLEM IS ... BOOSTLED'S WEBSITE IS UNDER CONSTRUCTION AND HAS BEEN FOR A WHILE

    Has anybody done this before and if yes then please could you send me the zipfile you downloaded from boostled's website

    Pretty please ...
     
  2. AdS Guest




    to hide all adverts.
  3. Fred d

    Fred d Thread Starter

    Joined:
    10 Aug 2012
    Posts:
    1,103
    Likes Received:
    15
    Location:
    cape town
    WOW ! Has nobody on this forum done this before ?
     
  4. Qball_V1.0

    Qball_V1.0

    Joined:
    8 Oct 2012
    Posts:
    241
    Likes Received:
    11
    Location:
    East London
    Home Page
    They also sell the typhoon controller and woulf probably be able to assist you
     
  5. Fred d

    Fred d Thread Starter

    Joined:
    10 Aug 2012
    Posts:
    1,103
    Likes Received:
    15
    Location:
    cape town
    will check it out and let you know ... thanks @Qball_V1.0
     
    Last edited by a moderator: 26 Nov 2015
  6. Qball_V1.0

    Qball_V1.0

    Joined:
    8 Oct 2012
    Posts:
    241
    Likes Received:
    11
    Location:
    East London
    No problem dude
     
  7. Fred d

    Fred d Thread Starter

    Joined:
    10 Aug 2012
    Posts:
    1,103
    Likes Received:
    15
    Location:
    cape town
  8. Fred d

    Fred d Thread Starter

    Joined:
    10 Aug 2012
    Posts:
    1,103
    Likes Received:
    15
    Location:
    cape town
    I found this code and flashed it to my typhon , seems to be the standard code for the typhon controller

    Had serious issues with BOOSTLED as they simply don't seem interested to help
    Thanks Kim for the help in sorting this controller out for me


    /*
    //
    Typhon firmware
    //
    v0.2 alpha 2010-23-11
    //
    N. Enders, R. Ensminger
    //
    //
    This sketch provides firmware for the Typhon LED controller.
    //
    It provides a structure to fade 4 independent channels of LED lighting
    //
    on and off each day, to simulate sunrise and sunset.
    //
    //
    Current work in progress:
    //
    - store all LED variables in EEPROM so they are not reset by a loss of power
    //
    //
    Future developments may include:
    //
    - moon phase simulation
    //
    - storm simulation
    //
    //
    Sketch developed in Arduino-18
    //
    Requires LiquidCrystal, Wire, EEPROM, EEPROMVar, and Button libraries.
    //
    Button is available here: 301 Moved Permanently
    //
    EEPROMVar is available here: 301 Moved Permanently
    */

    //
    include the libraries:
    #include <LiquidCrystal.h>
    #include <Wire.h>
    #include <Button.h>
    #include <EEPROM.h>
    #include <EEPROMVar.h>


    /****
    Define Variables & Constants ****/
    /**************************************/

    //
    set the RTC's I2C address
    #define
    DS1307_I2C_ADDRESS 0x68
    //
    create the LCD
    LiquidCrystal
    lcd(8, 7, 5, 4, 16, 2);
    //
    set up backlight
    int
    bkl = 6; //
    backlight pin
    byte
    bklIdle = 10; //
    PWM value for backlight at idle
    byte
    bklOn = 70; //
    PWM value for backlight when on
    int
    bklDelay = 10000; //
    ms for the backlight to idle before turning off
    unsigned long
    bklTime = 0; //
    counter since backlight turned on
    //
    create the menu counter
    int
    menuCount = 1;
    int
    menuSelect = 0;
    //create
    manual override variables
    boolean override = false;
    byte
    overmenu = 0;
    int
    overpercent = 0;
    //
    create the buttons
    Button
    menu = Button(12,PULLDOWN);
    Button select
    = Button(13,PULLDOWN);
    Button
    plus = Button(14,PULLDOWN);
    Button
    minus = Button(15,PULLDOWN);

    //
    LED variables. These control the behavior of lighting. Change these to customize behavoir
    int
    minCounter = 0; //
    counter that resets at midnight.
    int
    oldMinCounter = 0; //
    counter that resets at midnight.
    int
    oneLed = 9; //
    pin for channel 1
    int
    twoLed = 10; //
    pin for channel 2
    int
    threeLed = 11; //
    pin for channel 3
    int
    fourLed = 3; //
    pin for channel 4

    int
    oneVal = 0; //
    current value for channel 1
    int
    twoVal = 0; //
    current value for channel 2
    int
    threeVal = 0; //
    current value for channel 3
    int
    fourVal = 0; //
    current value for channel 4

    //
    Variables making use of EEPROM memory:

    EEPROMVar<int>
    oneStartMins = 750; //
    minute to start this channel.
    EEPROMVar<int>
    onePhotoPeriod = 720; //
    photoperiod in minutes for this channel.
    EEPROMVar<int>
    oneMax = 100; //
    max intensity for this channel, as a percentage
    EEPROMVar<int>
    oneFadeDuration = 60; //
    duration of the fade on and off for sunrise and sunset for

    // this channel.
    EEPROMVar<int>
    twoStartMins = 810;
    EEPROMVar<int>
    twoPhotoPeriod = 600;
    EEPROMVar<int>
    twoMax = 100;
    EEPROMVar<int>
    twoFadeDuration = 60;

    EEPROMVar<int>
    threeStartMins = 810;
    EEPROMVar<int>
    threePhotoPeriod = 600;
    EEPROMVar<int>
    threeMax = 100;
    EEPROMVar<int>
    threeFadeDuration = 60;


    EEPROMVar<int>
    fourStartMins = 480;
    EEPROMVar<int>
    fourPhotoPeriod = 510;
    EEPROMVar<int>
    fourMax = 100;
    EEPROMVar<int>
    fourFadeDuration = 60;

    /*
    int
    oneStartMins = 1380; // minute to start this channel.
    int
    onePhotoPeriod = 120; // photoperiod in minutes for this channel.
    int
    oneMax = 100; // max intensity for this channel, as a percentage
    int
    oneFadeDuration = 60; // duration of the fade on and off for sunrise and sunset for

    // this channel.
    int
    twoStartMins = 800;
    int
    twoPhotoPeriod = 60;
    int
    twoMax = 100;
    int
    twoFadeDuration = 15;

    int
    threeStartMins = 800;
    int
    threePhotoPeriod = 60;
    int
    threeMax = 100;
    int
    threeFadeDuration = 30;


    int
    fourStartMins = 800;
    int
    fourPhotoPeriod = 120;
    int
    fourMax = 100;
    int
    fourFadeDuration = 60;
    */

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

    //
    Convert decimal numbers to binary coded decimal
    byte
    decToBcd(byte val)
    {
    return ( (val/10*16) + (val%10) );
    }

    //
    Convert binary coded decimal to decimal numbers
    byte
    bcdToDec(byte val)
    {
    return ( (val/16*10) + (val%16) );
    }

    //
    Sets date and time, starts the clock
    void
    setDate(byte second, //
    0-59
    byte
    minute, // 0-59

    byte hour, // 1-23

    byte dayOfWeek, // 1-7

    byte dayOfMonth, // 1-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
    void
    getDate(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());
    }

    /******
    LED Functions ******/
    /***************************/
    //function
    to set LED brightness according to time of day
    //function
    has three equal phases - ramp up, hold, and ramp down

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

    int 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

    int ledMax // max value for this channel

    ) {
    int
    val = 0;


    //fade
    up
    if (mins >
    start || mins <= start +
    fade) {

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

    }

    //fade down

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

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

    }

    //off or post-midnight run.

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

    if((start+period)%1440 <
    start && (start + period)%1440 >
    mins )

    {

    val=map((start+period-mins)%1440,0,fade,0,ledMax);

    }

    else

    val = 0;

    }




    if (val > ledMax)
    {val = ledMax;}

    if (val < 0) {val = 0; }


    analogWrite(ledPin,
    map(val, 0, 100, 0, 255));
    if(override){val=overpercent;}
    return
    val;
    }

    /****
    Display Functions ****/
    /***************************/

    //
    format a number of minutes into a readable time (24 hr format)
    void
    printMins(int mins, //time
    in minutes to print

    boolean ampm //print am/pm?

    ) {
    int
    hr = (mins%1440)/60;
    int
    mn = mins%60;

    if(hr<10){

    lcd.print(" ");

    }

    lcd.print(hr);

    lcd.print(":");

    if(mn<10){

    lcd.print("0");

    }

    lcd.print(mn);
    }

    //
    format hours, mins, secs into a readable time (24 hr format)
    void
    printHMS (byte hr,

    byte mn,

    byte sec //time to print

    )
    {


    if(hr<10){

    lcd.print(" ");

    }

    lcd.print(hr,
    DEC);

    lcd.print(":");

    if(mn<10){

    lcd.print("0");

    }

    lcd.print(mn,
    DEC);

    lcd.print(":");

    if(sec<10){

    lcd.print("0");

    }

    lcd.print(sec,
    DEC);
    }
    void
    ovrSetAll(int pct){

    analogWrite(oneLed,map(pct,0,100,0,255));

    analogWrite(twoLed,map(pct,0,100,0,255));

    analogWrite(threeLed,map(pct,0,100,0,255));

    analogWrite(fourLed,map(pct,0,100,0,255));
    }

    /****
    Setup ****/
    /***************/

    void
    setup() {
    Wire.begin();

    pinMode(bkl, OUTPUT);

    lcd.begin(16, 2);

    digitalWrite(bkl, HIGH);

    lcd.print("Typhon-Reef");

    lcd.setCursor(0,1);

    lcd.print("");

    delay(5000);

    lcd.clear();

    analogWrite(bkl,bklIdle);
    }

    /*****
    Loop *****/
    /****************/

    void
    loop() {
    byte
    second, minute, hour,
    dayOfWeek, dayOfMonth, month,
    year;


    getDate(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

    oldMinCounter = minCounter;

    minCounter = hour * 60 +
    minute;

    //check
    & set fade durations
    if(oneFadeDuration >
    onePhotoPeriod/2 && onePhotoPeriod >0){oneFadeDuration =
    onePhotoPeriod/2;}
    if(oneFadeDuration<1){oneFadeDuration=1;}

    if(twoFadeDuration >
    twoPhotoPeriod/2 && twoPhotoPeriod >0){twoFadeDuration =
    twoPhotoPeriod/2;}
    if(twoFadeDuration<1){twoFadeDuration=1;}

    if(threeFadeDuration >
    threePhotoPeriod/2 && threePhotoPeriod >0){threeFadeDuration =
    threePhotoPeriod/2;}
    if(threeFadeDuration<1){threeFadeDuration=1;}

    if(fourFadeDuration >
    fourPhotoPeriod/2 && fourPhotoPeriod > 0){fourFadeDuration =
    fourPhotoPeriod/2;}
    if(fourFadeDuration<1){fourFadeDuration=1;}

    //check
    & set any time functions


    //set
    outputs
    if(!override){

    oneVal = setLed(minCounter,
    oneLed, oneStartMins, onePhotoPeriod,
    oneFadeDuration, oneMax);

    twoVal = setLed(minCounter,
    twoLed, twoStartMins, twoPhotoPeriod,
    twoFadeDuration, twoMax);

    threeVal = setLed(minCounter,
    threeLed, threeStartMins, threePhotoPeriod,
    threeFadeDuration, threeMax);

    fourVal = setLed(minCounter,
    fourLed, fourStartMins, fourPhotoPeriod,
    fourFadeDuration, fourMax);
    }
    else{

    ovrSetAll(overpercent);
    }


    //turn
    the backlight off and reset the menu if the idle time has elapsed
    if(bklTime +
    bklDelay < millis() &&
    bklTime > 0 ){

    analogWrite(bkl,bklIdle);

    menuCount = 1;

    lcd.clear();

    bklTime = 0;
    }

    //iterate
    through the menus
    if(menu.uniquePress()){

    analogWrite(bkl,bklOn);

    bklTime = millis();

    if(menuCount < 20){

    menuCount++;

    }else {

    menuCount = 1;

    }

    lcd.clear();
    }
    if(menuCount == 1){

    //main screen turn on!!!

    if (minCounter > oldMinCounter){

    lcd.clear();

    }

    lcd.setCursor(0,0);

    printHMS(hour, minute,
    second);

    lcd.setCursor(0,1);

    lcd.print(oneVal);

    lcd.setCursor(4,1);

    lcd.print(twoVal);

    lcd.setCursor(8,1);

    lcd.print(threeVal);

    lcd.setCursor(12,1);

    lcd.print(fourVal);

    //debugging function to use the select button to advance the timer by 1 minute

    //if(select.uniquePress()){setDate(second, minute+1, hour, dayOfWeek, dayOfMonth, month, year);}
    }

    if(menuCount == 2){

    //Manual Override Menu

    lcd.setCursor(0,0);

    lcd.print("Manual Overrides");

    lcd.setCursor(0,1);

    lcd.print("All: ");

    if(select.uniquePress()){

    if(menuSelect < 3){menuSelect++;}

    else{menuSelect = 0;}

    bklTime = millis();

    }


    if(menuSelect == 0){

    lcd.print("Timer");

    override = false;}

    if(menuSelect == 1){

    lcd.print("ON ");

    overpercent = 100;

    override = true;}

    if(menuSelect == 2){

    lcd.print("OFF ");

    overpercent = 0;

    override = true;}

    if(menuSelect == 3){

    override = true;

    lcd.print(overpercent,DEC);

    lcd.print("% ");

    if(plus.uniquePress() &&
    overpercent <100){

    overpercent++;

    bklTime = millis();}

    if(minus.uniquePress() &&
    overpercent > 0){

    overpercent--;

    bklTime = millis();}

    }
    }


    if(menuCount == 3){

    //set start time for channel one

    lcd.setCursor(0,0);

    lcd.print("Channel 1 Start");

    lcd.setCursor(0,1);

    printMins(oneStartMins, true);


    if(plus.uniquePress() &&
    oneStartMins < 1440){

    oneStartMins++;

    if(onePhotoPeriod >0){onePhotoPeriod--;}

    else{onePhotoPeriod=1439;}

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    oneStartMins > 0){

    oneStartMins--;

    if(onePhotoPeriod<1439){onePhotoPeriod++;}

    else{onePhotoPeriod=0;}

    bklTime = millis();

    }
    }

    if(menuCount == 4){

    //set end time for channel one

    lcd.setCursor(0,0);

    lcd.print("Channel 1 End");

    lcd.setCursor(0,1);

    printMins(oneStartMins+onePhotoPeriod, true);

    if(plus.uniquePress()){

    if(onePhotoPeriod < 1439){

    onePhotoPeriod++;}

    else{

    onePhotoPeriod=0;

    }

    bklTime = millis();

    }

    if(minus.uniquePress()){

    if(onePhotoPeriod >0){

    onePhotoPeriod--;}

    else{

    onePhotoPeriod=1439;

    }

    bklTime = millis();

    }
    }

    if(menuCount == 5){

    //set fade duration for channel one

    lcd.setCursor(0,0);

    lcd.print("Channel 1 Fade");

    lcd.setCursor(0,1);

    printMins(oneFadeDuration, false);

    if(plus.uniquePress() && (oneFadeDuration <
    onePhotoPeriod/2 || oneFadeDuration == 0)){

    oneFadeDuration++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    oneFadeDuration > 1){

    oneFadeDuration--;

    bklTime = millis();

    }
    }

    if(menuCount == 6){

    //set intensity for channel one

    lcd.setCursor(0,0);

    lcd.print("Channel 1 Max");

    lcd.setCursor(1,1);

    lcd.print(oneMax);

    if(plus.uniquePress() &&
    oneMax < 100){

    lcd.clear();

    oneMax++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    oneMax > 0){

    lcd.clear();

    oneMax--;

    bklTime = millis();

    }
    }

    if(menuCount == 7){

    //set start time for channel two

    lcd.setCursor(0,0);

    lcd.print("Channel 2 Start");

    lcd.setCursor(0,1);

    printMins(twoStartMins, true);

    if(plus.uniquePress() &&
    twoStartMins < 1440){

    twoStartMins++;

    if(twoPhotoPeriod >0){twoPhotoPeriod--;}

    else{twoPhotoPeriod=1439;}

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    twoStartMins > 0){

    twoStartMins--;

    if(twoPhotoPeriod<1439){twoPhotoPeriod++;}

    else{twoPhotoPeriod=0;}

    bklTime = millis();

    }
    }

    if(menuCount == 8){

    //set end time for channel two

    lcd.setCursor(0,0);

    lcd.print("Channel 2 End");

    lcd.setCursor(0,1);

    printMins(twoStartMins+twoPhotoPeriod, true);

    if(plus.uniquePress()){

    if(twoPhotoPeriod < 1439){

    twoPhotoPeriod++;}

    else{

    twoPhotoPeriod=0;

    }

    bklTime = millis();

    }

    if(minus.uniquePress()){

    if(twoPhotoPeriod >0){

    twoPhotoPeriod--;}

    else{

    twoPhotoPeriod=1439;

    }

    bklTime = millis();

    }
    }

    if(menuCount == 9){

    //set fade duration for channel two

    lcd.setCursor(0,0);

    lcd.print("Channel 2 Fade");

    lcd.setCursor(0,1);

    printMins(twoFadeDuration, false);

    if(plus.uniquePress() && (twoFadeDuration <
    twoPhotoPeriod/2 || twoFadeDuration == 0)){

    twoFadeDuration++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    twoFadeDuration > 1){

    twoFadeDuration--;

    bklTime = millis();

    }
    }

    if(menuCount == 10){

    //set intensity for channel two

    lcd.setCursor(0,0);

    lcd.print("Channel 2 Max");

    lcd.setCursor(1,1);

    lcd.print(twoMax);

    if(plus.uniquePress() &&
    twoMax < 100){

    lcd.clear();

    twoMax++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    twoMax > 0){

    lcd.clear();

    twoMax--;

    bklTime = millis();

    }
    }

    if(menuCount == 11){

    //set start time for channel three

    lcd.setCursor(0,0);

    lcd.print("Channel 3 Start");

    lcd.setCursor(0,1);

    printMins(threeStartMins, true);

    if(plus.uniquePress() &&
    threeStartMins < 1440){

    threeStartMins++;

    if(threePhotoPeriod >0){threePhotoPeriod--;}

    else{threePhotoPeriod=1439;}

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    threeStartMins > 0){

    threeStartMins--;

    if(threePhotoPeriod<1439){threePhotoPeriod++;}

    else{threePhotoPeriod=0;}

    bklTime = millis();

    }
    }

    if(menuCount == 12){

    //set end time for channel three

    lcd.setCursor(0,0);

    lcd.print("Channel 3 End");

    lcd.setCursor(0,1);

    printMins(threeStartMins+threePhotoPeriod, true);

    if(plus.uniquePress()){

    if(threePhotoPeriod < 1439){

    threePhotoPeriod++;}

    else{

    threePhotoPeriod=0;

    }

    bklTime = millis();

    }

    if(minus.uniquePress()){

    if(threePhotoPeriod >0){

    threePhotoPeriod--;}

    else{

    threePhotoPeriod=1439;

    }

    bklTime = millis();

    }
    }

    if(menuCount == 13){

    //set fade duration for channel three

    lcd.setCursor(0,0);

    lcd.print("Channel 3 Fade");

    lcd.setCursor(0,1);

    printMins(threeFadeDuration, false);

    if(plus.uniquePress() && (threeFadeDuration <
    threePhotoPeriod/2 || oneFadeDuration == 0)){

    threeFadeDuration++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    threeFadeDuration > 1){

    threeFadeDuration--;

    bklTime = millis();

    }
    }

    if(menuCount == 14){

    //set intensity for channel three

    lcd.setCursor(0,0);

    lcd.print("Channel 3 Max");

    lcd.setCursor(1,1);

    lcd.print(threeMax);

    if(plus.uniquePress() &&
    threeMax < 100){

    lcd.clear();

    threeMax++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    threeMax > 0){

    lcd.clear();

    threeMax--;

    bklTime = millis();

    }
    }

    if(menuCount == 15){

    //set start time for channel four

    lcd.setCursor(0,0);

    lcd.print("Channel 4 Start");

    lcd.setCursor(0,1);

    printMins(fourStartMins, true);

    if(plus.uniquePress() &&
    fourStartMins < 1440){

    fourStartMins++;

    if(fourPhotoPeriod >0){fourPhotoPeriod--;}

    else{fourPhotoPeriod=1439;}

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    fourStartMins > 0){

    fourStartMins--;

    if(fourPhotoPeriod<1439){fourPhotoPeriod++;}

    else{fourPhotoPeriod=0;}

    bklTime = millis();

    }
    }

    if(menuCount == 16){

    //set end time for channel four

    lcd.setCursor(0,0);

    lcd.print("Channel 4 End");

    lcd.setCursor(0,1);

    printMins(fourStartMins+fourPhotoPeriod, true);

    if(plus.uniquePress()){

    if(fourPhotoPeriod < 1439){

    fourPhotoPeriod++;}

    else{

    fourPhotoPeriod=0;

    }

    bklTime = millis();

    }

    if(minus.uniquePress()){

    if(fourPhotoPeriod >0){

    fourPhotoPeriod--;}

    else{

    fourPhotoPeriod=1439;

    }

    bklTime = millis();

    }
    }

    if(menuCount == 17){

    //set fade duration for channel four

    lcd.setCursor(0,0);

    lcd.print("Channel 4 Fade");

    lcd.setCursor(0,1);

    printMins(fourFadeDuration, false);

    if(plus.uniquePress() && (fourFadeDuration <
    fourPhotoPeriod/2 || oneFadeDuration == 0)){

    fourFadeDuration++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    fourFadeDuration > 1){

    fourFadeDuration--;

    bklTime = millis();

    }
    }

    if(menuCount == 18){

    //set intensity for channel four

    lcd.setCursor(0,0);

    lcd.print("Channel 4 Max");

    lcd.setCursor(1,1);

    lcd.print(fourMax);

    if(plus.uniquePress() &&
    fourMax < 100){

    lcd.clear();

    fourMax++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    fourMax > 0){

    lcd.clear();

    fourMax--;

    bklTime = millis();

    }
    }

    if(menuCount == 19){

    //set hours

    lcd.setCursor(0,0);

    lcd.print("Set Time: Hrs");

    lcd.setCursor(0,1);

    printHMS(hour, minute,
    second);

    if(plus.uniquePress() &&
    hour < 23){

    hour++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    hour > 0){

    hour--;

    bklTime = millis();

    }

    setDate(second, minute,
    hour, dayOfWeek, dayOfMonth,
    month, year);
    }

    if(menuCount == 20){

    //set minutes

    lcd.setCursor(0,0);

    lcd.print("Set Time: Mins");

    lcd.setCursor(0,1);

    printHMS(hour, minute,
    second);

    if(plus.uniquePress() &&
    minute < 59){

    minute++;

    bklTime = millis();

    }

    if(minus.uniquePress() &&
    minute > 0){

    minute--;

    bklTime = millis();

    }

    setDate(second, minute,
    hour, dayOfWeek, dayOfMonth,
    month, year);
    }
    }
     
  9. Fred d

    Fred d Thread Starter

    Joined:
    10 Aug 2012
    Posts:
    1,103
    Likes Received:
    15
    Location:
    cape town
    I also found a lot of great info on another forum that will help a lot of reefers on here

    a link to the thread is

    Reprogramming the Typhon - Lighting Forum - Nano-Reef.com Forums

    go to page 1 and just skim through the posts ... the code I am using now has a bell curve instead of a linear lighting increase / decrease . take note that there was a correction made to the libraries of the code as the clock wasn't innitialised in the original code
     
  10. Fred d

    Fred d Thread Starter

    Joined:
    10 Aug 2012
    Posts:
    1,103
    Likes Received:
    15
    Location:
    cape town
    so far as the flash hardware , you can pick it up off ebay for a great price

    [ame="http://www.ebay.com/itm/FTDI-Basic-Breakout-Arduino-USB-to-TTL-Upload-Tool-For-MWC-MultiWii-Lite-SE-/380777495426?pt=Radio_Control_Parts_Accessories&hash=item58a81b7b82"]FTDI Basic Breakout Arduino USB to TTL UPLOAD Tool for MWC MultiWii Lite SE | eBay [/ame]
     
Recent Posts

Loading...
Similar Threads - Typhon reef controller Forum Date
[wtd] Typhon LED Controller Wanted 10 Feb 2014
[wtd] typhon controller Wanted 4 Jun 2013
stock update reef angel Majestic Pets Solutions Monday at 14:20
[wtd] Seneye reef Wanted 30 Nov 2016
[wtd] reefoctopus xps 5000 skimmer Wanted 29 Nov 2016
Reef Octopus int5000 General Discussions and Advice 24 Nov 2016
Jaun's 240 mixed reef Medium Tanks 22 Nov 2016