Final Version of food controller

Dependencies:   MMA8451Q TSI mbed

Fork of foodcontroller_NoWiFi by Serpentine

main.cpp

Committer:
danlock10y
Date:
2016-06-09
Revision:
5:c4bc5a92390a
Parent:
4:1961b60aa8fb

File content as of revision 5:c4bc5a92390a:

#include "mbed.h"
#include "TSISensor.h"
#include "MMA8451Q.h"

#define MMA8451_I2C_ADDRESS (0x1d<<1)
Serial pc(USBTX, USBRX); // tx, rx

DigitalOut gled(LED_GREEN);                        //Indicator for touch sensor Output speed 1
DigitalOut bled(LED_BLUE);                        //Indicator for touch sensor Output speed 2
DigitalOut rled(LED_RED);                        //Indicator for touch sensor Output speed 3
TSISensor tsi;                                     //Setup touch sensor
MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);   //Setup accelerometer
DigitalOut lefthigh(PTC7);                         //Test LED for left
DigitalOut leftlow(PTA1);
DigitalOut righthigh(PTC4);                         //Test LED for right
DigitalOut rightlow(PTA12);
DigitalOut forwardhigh(PTC0);                      //Test LED for forward
DigitalOut forwardlow(PTC3);
DigitalOut backwardhigh(PTA2);                     //Test LED for backward
DigitalOut backwardlow(PTD4);

int Direction;                                      //2 bit number to describe direction 0 forward assigned CW
int Velocity;                                       //2 bit number to vary velocity in game

bool right;                                         //Right or left? right = 1
bool forward;                                       //Forward or Backward? forward = 1

int main()
{
    while (1) 
    {
         
        float accX=acc.getAccX();                           //Measure acceleration in X direction
        float accY=acc.getAccY();                           //Measure acceleration in Y direction

         if (tsi.readDistance() != 0) 
        {          
            if (tsi.readDistance() <= 13)
            {
                Velocity = 3;
                rled = 0;
                bled = 1;
                gled = 1;
            }
            if (tsi.readDistance() > 13 && tsi.readDistance() < 26)
            {
                Velocity = 2;
                rled = 1;
                bled = 0;
                gled = 1;              
            }
            if (tsi.readDistance() >= 26)
            {
                Velocity = 1;
                rled = 1;
                bled = 1;
                gled = 0;
            }
                             
            printf("x=%d\r\n",Velocity);
            wait(0.2);


        }//endif touch sensor 
     
        if (accX > 0.1) 
        {
            right = false;
            //printf("left \r\n");
        }//endif

        if (accX < -0.1) 
        {
            right = true;
            //printf("right \r\n");
        }//endif
        wait(0.1);    

        if (accY > 0.1) 
        {
            forward = false;
            //printf("back \r\n");
        }//endif

        if (accY < -0.1) 
        {
            forward = true;            
            //printf("for \r\n");
        }//endif
        
        wait(0.1);
        
        if(abs(accY) > abs(accX))
        {
            if(forward == true)
            {
                Direction = 0;
                
                lefthigh = 0;
                leftlow = 0;
                righthigh = 0;
                rightlow = 0;
                forwardhigh = 1;
                forwardlow = 0;
                backwardhigh = 0;
                backwardlow = 0;                
            
            }//endif
            else
            {
                Direction = 2;
                
                lefthigh = 0;
                leftlow = 0;
                righthigh = 0;
                rightlow = 0;
                forwardhigh = 0;
                forwardlow = 0;
                backwardhigh = 1;
                backwardlow = 0;
                   
            }//endelse
        }//endif
        else
        {
            if(right == true)
            {
                Direction = 1;
                
                lefthigh = 0;
                leftlow = 0;
                righthigh = 1;
                rightlow = 0;
                forwardhigh = 0;
                forwardlow = 0;
                backwardhigh = 0;
                backwardlow = 0;
             
            }//endif
            else
            {
                Direction = 3;
                
                lefthigh = 1;
                leftlow = 0;
                righthigh = 0;
                rightlow = 0;
                forwardhigh = 0;
                forwardlow = 0;
                backwardhigh = 0;
                backwardlow = 0;                
                    
            }//endelse
        }//endelse
        
        printf("Direction = %d \r\n", Direction);
        
    }//endwhile
}//endmain