Erastus Coetzee
/
C027_HelloWorld
myeerste
main.cpp@0:bacc0d57f6b9, 2015-02-06 (annotated)
- Committer:
- erastus
- Date:
- Fri Feb 06 13:34:53 2015 +0000
- Revision:
- 0:bacc0d57f6b9
- Child:
- 1:497211807af7
my eerstehene
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
erastus | 0:bacc0d57f6b9 | 1 | #include "mbed.h" |
erastus | 0:bacc0d57f6b9 | 2 | #ifdef TARGET_UBLOX_C027 |
erastus | 0:bacc0d57f6b9 | 3 | #include "C027_api.h" |
erastus | 0:bacc0d57f6b9 | 4 | #else |
erastus | 0:bacc0d57f6b9 | 5 | #error "This example is targeted for the C027 platform" |
erastus | 0:bacc0d57f6b9 | 6 | #endif |
erastus | 0:bacc0d57f6b9 | 7 | |
erastus | 0:bacc0d57f6b9 | 8 | #define Generator = p36; |
erastus | 0:bacc0d57f6b9 | 9 | ifdef = |
erastus | 0:bacc0d57f6b9 | 10 | // PortIn p(Port2, 0x0000003F); // p21-p26 |
erastus | 0:bacc0d57f6b9 | 11 | |
erastus | 0:bacc0d57f6b9 | 12 | DigitalOut myled(LED); |
erastus | 0:bacc0d57f6b9 | 13 | |
erastus | 0:bacc0d57f6b9 | 14 | int main() { |
erastus | 0:bacc0d57f6b9 | 15 | int PowerI, LoopCounterI, PowerStatusI, Inverot1I, Invertor2I, Inveror3I, Invertor4I; |
erastus | 0:bacc0d57f6b9 | 16 | int EnableInvertorsI, NoStartI; |
erastus | 0:bacc0d57f6b9 | 17 | float BattVoltageF; |
erastus | 0:bacc0d57f6b9 | 18 | |
erastus | 0:bacc0d57f6b9 | 19 | PowerI = 0; |
erastus | 0:bacc0d57f6b9 | 20 | EnableInvertorsI = LoopCounterI = 0; |
erastus | 0:bacc0d57f6b9 | 21 | PowerStatusI, NoStartI = 0; |
erastus | 0:bacc0d57f6b9 | 22 | Invertor1I = Invertor2I = Invertor3I = Invertor4I = 0; |
erastus | 0:bacc0d57f6b9 | 23 | // sms ( "Startup"); |
erastus | 0:bacc0d57f6b9 | 24 | DigitalOut( P3, 0xff) // set all relays off |
erastus | 0:bacc0d57f6b9 | 25 | while(1) |
erastus | 0:bacc0d57f6b9 | 26 | { |
erastus | 0:bacc0d57f6b9 | 27 | PowerStatusI = DigitalIn( P2_0); // get main power status |
erastus | 0:bacc0d57f6b9 | 28 | if ( PowerStatusI ) |
erastus | 0:bacc0d57f6b9 | 29 | if ( GenStatusI) |
erastus | 0:bacc0d57f6b9 | 30 | { |
erastus | 0:bacc0d57f6b9 | 31 | if ( LoopCounterI++ > 6000) // If power is off for 10 minutes |
erastus | 0:bacc0d57f6b9 | 32 | { |
erastus | 0:bacc0d57f6b9 | 33 | // sms( poweroff); |
erastus | 0:bacc0d57f6b9 | 34 | wait( 300); |
erastus | 0:bacc0d57f6b9 | 35 | // sms ( starting gen); |
erastus | 0:bacc0d57f6b9 | 36 | do |
erastus | 0:bacc0d57f6b9 | 37 | { |
erastus | 0:bacc0d57f6b9 | 38 | myled = !myled; |
erastus | 0:bacc0d57f6b9 | 39 | myled( myled); // Toggle LED |
erastus | 0:bacc0d57f6b9 | 40 | if ( !GenStatusI ) // If no generator Voltage |
erastus | 0:bacc0d57f6b9 | 41 | DigitalOut( GenOn); // Start Generator |
erastus | 0:bacc0d57f6b9 | 42 | wait( 100); |
erastus | 0:bacc0d57f6b9 | 43 | GenStatusI = DigitalIn( P2_1); |
erastus | 0:bacc0d57f6b9 | 44 | if( GenStatusI) // check for generator Voltage = 220V |
erastus | 0:bacc0d57f6b9 | 45 | { |
erastus | 0:bacc0d57f6b9 | 46 | DigitalOut( GenOff); // stop starting generator |
erastus | 0:bacc0d57f6b9 | 47 | // sms( GenOn); |
erastus | 0:bacc0d57f6b9 | 48 | } else |
erastus | 0:bacc0d57f6b9 | 49 | if ( NoStartI ++ > 30) // try for 3 seconds |
erastus | 0:bacc0d57f6b9 | 50 | { |
erastus | 0:bacc0d57f6b9 | 51 | // sms( genrator not started); |
erastus | 0:bacc0d57f6b9 | 52 | do |
erastus | 0:bacc0d57f6b9 | 53 | { |
erastus | 0:bacc0d57f6b9 | 54 | DigtalOut( GenOff); // Set Generator off |
erastus | 0:bacc0d57f6b9 | 55 | wait ( 400); // Wait for 2 seconds |
erastus | 0:bacc0d57f6b9 | 56 | GenStatusI = DigitalIn( P2_1); |
erastus | 0:bacc0d57f6b9 | 57 | if ( GenStatusI ) |
erastus | 0:bacc0d57f6b9 | 58 | NoStartI = 0; |
erastus | 0:bacc0d57f6b9 | 59 | } while ( NoStartI-- > 0); |
erastus | 0:bacc0d57f6b9 | 60 | |
erastus | 0:bacc0d57f6b9 | 61 | } |
erastus | 0:bacc0d57f6b9 | 62 | } while ( GenStatusI == 0); |
erastus | 0:bacc0d57f6b9 | 63 | DigitalOut( GenOff); // set start to off |
erastus | 0:bacc0d57f6b9 | 64 | // sms( GenStarted); |
erastus | 0:bacc0d57f6b9 | 65 | if ( GenStatusI) // if Gen on close relays |
erastus | 0:bacc0d57f6b9 | 66 | { |
erastus | 0:bacc0d57f6b9 | 67 | // sms( "starting inv 1"); |
erastus | 0:bacc0d57f6b9 | 68 | myled( myled); // set LED on |
erastus | 0:bacc0d57f6b9 | 69 | DigitalOut ( relay); // start invertor 1 |
erastus | 0:bacc0d57f6b9 | 70 | wait ( 500); |
erastus | 0:bacc0d57f6b9 | 71 | // sms( "Starting inv 2"); |
erastus | 0:bacc0d57f6b9 | 72 | DigitalOut( relay); // start invertor 2 |
erastus | 0:bacc0d57f6b9 | 73 | wait ( 500); |
erastus | 0:bacc0d57f6b9 | 74 | // sms( "Starting inv 3"); |
erastus | 0:bacc0d57f6b9 | 75 | DigitalOut(relay); // start invertor 3 |
erastus | 0:bacc0d57f6b9 | 76 | wait ( 500); |
erastus | 0:bacc0d57f6b9 | 77 | // sms( "Starting inv 4"); |
erastus | 0:bacc0d57f6b9 | 78 | DigitalOut( relay); // start invertor 4 |
erastus | 0:bacc0d57f6b9 | 79 | wait ( 500) |
erastus | 0:bacc0d57f6b9 | 80 | // sms( "Starting Aircon"); |
erastus | 0:bacc0d57f6b9 | 81 | DigitalOut( relay); // start aircon |
erastus | 0:bacc0d57f6b9 | 82 | } |
erastus | 0:bacc0d57f6b9 | 83 | } |
erastus | 0:bacc0d57f6b9 | 84 | } else if ( GenStausI) |
erastus | 0:bacc0d57f6b9 | 85 | { |
erastus | 0:bacc0d57f6b9 | 86 | if ( -- LoopCounter <= 0) |
erastus | 0:bacc0d57f6b9 | 87 | { |
erastus | 0:bacc0d57f6b9 | 88 | // sms( "Eskom On "); |
erastus | 0:bacc0d57f6b9 | 89 | // sms( "Aircon to Eskom"); |
erastus | 0:bacc0d57f6b9 | 90 | DigitalOut( relay); // start aircon |
erastus | 0:bacc0d57f6b9 | 91 | wait ( 5000); |
erastus | 0:bacc0d57f6b9 | 92 | // sms( "Invertor 1 to Eskom"); |
erastus | 0:bacc0d57f6b9 | 93 | myled( myled); // set LED on |
erastus | 0:bacc0d57f6b9 | 94 | DigitalOut ( relay); // start invertor 1 |
erastus | 0:bacc0d57f6b9 | 95 | wait ( 1000); |
erastus | 0:bacc0d57f6b9 | 96 | // sms( "Invertor 2 to Eskom"); |
erastus | 0:bacc0d57f6b9 | 97 | DigitalOut( relay); // start invertor 2 |
erastus | 0:bacc0d57f6b9 | 98 | wait ( 1000); |
erastus | 0:bacc0d57f6b9 | 99 | // sms( "Invertor 3 to Eskom"); |
erastus | 0:bacc0d57f6b9 | 100 | DigitalOut(relay); // start invertor 3 |
erastus | 0:bacc0d57f6b9 | 101 | wait ( 1000); |
erastus | 0:bacc0d57f6b9 | 102 | // sms( "Invertoer 4 to Eskom"); |
erastus | 0:bacc0d57f6b9 | 103 | DigitalOut( relay); // start invertor 4 |
erastus | 0:bacc0d57f6b9 | 104 | } |
erastus | 0:bacc0d57f6b9 | 105 | } else |
erastus | 0:bacc0d57f6b9 | 106 | LoopCounterI = 0; |
erastus | 0:bacc0d57f6b9 | 107 | } else |
erastus | 0:bacc0d57f6b9 | 108 | { |
erastus | 0:bacc0d57f6b9 | 109 | BattVoltageF = (float) AnalogIn(BattV); |
erastus | 0:bacc0d57f6b9 | 110 | BattVoltageF *= 0.1039; |
erastus | 0:bacc0d57f6b9 | 111 | if ( BattVoltageF < 24.00) |
erastus | 0:bacc0d57f6b9 | 112 | { |
erastus | 0:bacc0d57f6b9 | 113 | // sms( Voltage low); |
erastus | 0:bacc0d57f6b9 | 114 | } |
erastus | 0:bacc0d57f6b9 | 115 | } |
erastus | 0:bacc0d57f6b9 | 116 | myled = !myled; |
erastus | 0:bacc0d57f6b9 | 117 | wait(1000); // wait 1 sec |
erastus | 0:bacc0d57f6b9 | 118 | myled( myled); |
erastus | 0:bacc0d57f6b9 | 119 | } // main loop while |
erastus | 0:bacc0d57f6b9 | 120 | } |