Erastus Coetzee
/
C027_HelloWorld
myeerste
Diff: main.cpp
- Revision:
- 0:bacc0d57f6b9
- Child:
- 1:497211807af7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Feb 06 13:34:53 2015 +0000 @@ -0,0 +1,120 @@ +#include "mbed.h" +#ifdef TARGET_UBLOX_C027 + #include "C027_api.h" +#else + #error "This example is targeted for the C027 platform" +#endif + +#define Generator = p36; +ifdef = +// PortIn p(Port2, 0x0000003F); // p21-p26 + +DigitalOut myled(LED); + +int main() { + int PowerI, LoopCounterI, PowerStatusI, Inverot1I, Invertor2I, Inveror3I, Invertor4I; + int EnableInvertorsI, NoStartI; + float BattVoltageF; + + PowerI = 0; + EnableInvertorsI = LoopCounterI = 0; + PowerStatusI, NoStartI = 0; + Invertor1I = Invertor2I = Invertor3I = Invertor4I = 0; + // sms ( "Startup"); + DigitalOut( P3, 0xff) // set all relays off + while(1) + { + PowerStatusI = DigitalIn( P2_0); // get main power status + if ( PowerStatusI ) + if ( GenStatusI) + { + if ( LoopCounterI++ > 6000) // If power is off for 10 minutes + { + // sms( poweroff); + wait( 300); + // sms ( starting gen); + do + { + myled = !myled; + myled( myled); // Toggle LED + if ( !GenStatusI ) // If no generator Voltage + DigitalOut( GenOn); // Start Generator + wait( 100); + GenStatusI = DigitalIn( P2_1); + if( GenStatusI) // check for generator Voltage = 220V + { + DigitalOut( GenOff); // stop starting generator + // sms( GenOn); + } else + if ( NoStartI ++ > 30) // try for 3 seconds + { + // sms( genrator not started); + do + { + DigtalOut( GenOff); // Set Generator off + wait ( 400); // Wait for 2 seconds + GenStatusI = DigitalIn( P2_1); + if ( GenStatusI ) + NoStartI = 0; + } while ( NoStartI-- > 0); + + } + } while ( GenStatusI == 0); + DigitalOut( GenOff); // set start to off + // sms( GenStarted); + if ( GenStatusI) // if Gen on close relays + { + // sms( "starting inv 1"); + myled( myled); // set LED on + DigitalOut ( relay); // start invertor 1 + wait ( 500); + // sms( "Starting inv 2"); + DigitalOut( relay); // start invertor 2 + wait ( 500); + // sms( "Starting inv 3"); + DigitalOut(relay); // start invertor 3 + wait ( 500); + // sms( "Starting inv 4"); + DigitalOut( relay); // start invertor 4 + wait ( 500) + // sms( "Starting Aircon"); + DigitalOut( relay); // start aircon + } + } + } else if ( GenStausI) + { + if ( -- LoopCounter <= 0) + { + // sms( "Eskom On "); + // sms( "Aircon to Eskom"); + DigitalOut( relay); // start aircon + wait ( 5000); + // sms( "Invertor 1 to Eskom"); + myled( myled); // set LED on + DigitalOut ( relay); // start invertor 1 + wait ( 1000); + // sms( "Invertor 2 to Eskom"); + DigitalOut( relay); // start invertor 2 + wait ( 1000); + // sms( "Invertor 3 to Eskom"); + DigitalOut(relay); // start invertor 3 + wait ( 1000); + // sms( "Invertoer 4 to Eskom"); + DigitalOut( relay); // start invertor 4 + } + } else + LoopCounterI = 0; + } else + { + BattVoltageF = (float) AnalogIn(BattV); + BattVoltageF *= 0.1039; + if ( BattVoltageF < 24.00) + { + // sms( Voltage low); + } + } + myled = !myled; + wait(1000); // wait 1 sec + myled( myled); + } // main loop while +}