Task 4.1.4 Solution

Dependencies:   mbed

main.cpp

Committer:
noutram
Date:
2015-09-24
Revision:
0:7912f2086c2b

File content as of revision 0:7912f2086c2b:

#include "mbed.h"

#define kRED    4
#define kYELLOW 2
#define kGREEN  1

#define fMargin 0.05f
#define kGYThreshold 0.4f
#define kGYThresholdL (kGYThreshold - fMargin)
#define kGYThresholdU (kGYThreshold + fMargin)

#define kYRThreshold 0.6f
#define kYRThresholdL (kYRThreshold - fMargin)
#define kYRThresholdU (kYRThreshold + fMargin)


//Global objects
BusOut binaryOutput(D5, D6, D7);    //Outputs as an integer

DigitalIn SW1(D3);
DigitalIn SW2(D4);

AnalogIn AIN(A0);
float fVin = 0.0;
unsigned state = kGREEN;

//Main function
int main() {
    
    while(1) {
        
        //Read ADC
        fVin = AIN;
        
        //Write to terminal
        printf("Analog input = %6.4f\n", fVin);
        
        //Next State Logic
        switch (state) {
         
        case kGREEN:
            if (fVin > kGYThresholdU) {
                state = kYELLOW;    
            }
            break;
        
        case kYELLOW:
            if (fVin > kYRThresholdU) {
                state = kRED;   
            } else if (fVin < kGYThresholdL) {
                state = kGREEN;   
            }
            break;
        
        case kRED:
            if (fVin < kYRThresholdL) {
                state = kYELLOW;
            }
            break;
            
        default:
            state = kGREEN;   
        }
        
        //Output logic = f(State)
        binaryOutput = state;   
        
        //Wait
        wait(0.1);
        
    } //end while(1)
} //end main