I/O expansion added to wizard.

Requests for new functions or software apps
Post Reply
Trevenator
Posts: 33
Joined: Mon May 20, 2013 7:49 am

Re: I/O expansion added to wizard.

Post by Trevenator »

Just ordered the Multi-Channel Water Level Expansion will use that to monitor the levels of my Cal - Alk - vinegar - vodka.
I already have the single Water Level Expansion on my ato.

Would still like a float switch on my skimmer cup and be able to shut it off and send a email when its full.
Image
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: I/O expansion added to wizard.

Post by rimai »

Open the enclosure. It will be written in the pcb.
Roberto.
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: I/O expansion added to wizard.

Post by rimai »

For your skimmer cup, use this:

Code: Select all

ReefAngel.Relay.Set(Port1,ReefAngel.IO.GetChannel(0)); // Set port 1 according to I/O channel 0
Roberto.
Trevenator
Posts: 33
Joined: Mon May 20, 2013 7:49 am

Re: I/O expansion added to wizard.

Post by Trevenator »

rimai wrote:Open the enclosure. It will be written in the pcb.
It says reef angel plus main unit 2.1
Image
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: I/O expansion added to wizard.

Post by rimai »

I meant the I/O module.
Roberto.
Trevenator
Posts: 33
Joined: Mon May 20, 2013 7:49 am

Re: I/O expansion added to wizard.

Post by Trevenator »

ok its I/O Expansion 2.0
Image
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: I/O expansion added to wizard.

Post by rimai »

Yes, starting on 2.0 version, you can easily use any port as output too. You just need to code it so the module knows you are using as output.
You need to add this to the end of your code:

Code: Select all

void SetIOChannel(byte channel, byte value)
{
    Wire.beginTransmission(I2CIO_PCF8574);
    Wire.write(value<<channel);
    Wire.endTransmission();
}
Then, in your code, you can set any channel on the I/O module like this:

Code: Select all

SetIOChannel(0,1); // Set channel 0 to on
Roberto.
Veeresh
Posts: 5
Joined: Sat Mar 01, 2014 7:45 pm
Location: Singapore

Re: I/O expansion added to wizard.

Post by Veeresh »

Hi Roberto

My IO Expansion module rev is 2.2

I have added the following coding

void SetIOChannel(byte channel, byte value)
{
Wire.beginTransmission(I2CIO_PCF8574);
Wire.write(value<<channel);
Wire.endTransmission();
}


in the setup I called the following codes

// init IO port 1 to 3
// Testing phase

SetIOChannel(0,1); // Set channel 0 to on
SetIOChannel(1,1); // Set channel 1 to on
SetIOChannel(2,1); // Set channel 2 to on
SetIOChannel(3,0); // Set channel 3 to off
SetIOChannel(4,0); // Set channel 4 to off
SetIOChannel(5,0); // Set channel 5 to off


and in the loop



if (hour()>=0 && hour()< 17 )
{
unsigned long currentMillis = millis();

if ( currentMillis - previousMillis >= intervaltimer )
{
if (FanOffStatus == false)
{
FanOffStatus = true; // variable set to off the fan
previousMillis = currentMillis;
intervaltimer = 30000 ;
SetIOChannel(4,1); // Set channel 4 to on
SetIOChannel(5,0); // Set channel 5 to on

}
else
{
FanOffStatus = false; // variable set to on the fan
previousMillis = currentMillis ;
intervaltimer = 5000 ;
SetIOChannel(4,0); // Set channel 4 to on
SetIOChannel(5,1); // Set channel 5 to on

}


if (FanOffStatus == false)
{
ReefAngel.Relay.Off( Port3 );
}
else
{
ReefAngel.Relay.On( Port3 );
}

}

}



I'm just wanted to test the IO module to in port 4 and 5 to toggle between ON and OFF stage. and I noticed that all my port are at +5V including port 4 an 5. There is no toggling in voltage in port and 4 and 5. Looks like the RA is not IO module is set to OUTPOT module. Please advise
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: I/O expansion added to wizard.

Post by rimai »

I'll have to check when I get to the office.

Sent from my SM-G900P using Tapatalk
Roberto.
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: I/O expansion added to wizard.

Post by rimai »

I'm not so sure why it is not working for you.
This is what I tested:

Code: Select all

  if (millis()%2000<1000)
    SetIOChannel(0,1);
  else
    SetIOChannel(0,0);
Channel 0 goes high and low every second.
Roberto.
Post Reply