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