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