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