school project

Dependencies:   MMA8451Q mbed

main.cpp

Committer:
xlizne01
Date:
2016-01-12
Revision:
2:3278e4fd8fc2
Parent:
1:b23831b703fe
Child:
3:94bfc4de4ab1

File content as of revision 2:3278e4fd8fc2:

#include "mbed.h"
#include "MMA8451Q.h"
 
#define MMA8451_I2C_ADDRESS (0x1d<<1)
#define MOVE_ANGLE 45   // > degrees for move 

MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);

void accelerometer(void);  

 int i,j,k;
 int RED, GREEN, BLUE;
 int RledA, RledB, GledA, GledB, BledA, BledB;
 char acc_dir;

DigitalOut prvni(PTE5);
DigitalOut druhy(PTE4);
DigitalOut treti(PTE3);
DigitalOut ctvrty(PTE2);
DigitalOut paty(PTB11);
DigitalOut sesty(PTB10);
DigitalOut sedmy(PTB9);
DigitalOut osmy(PTB8);

DigitalOut Rled1(PTC9); 
DigitalOut Rled2(PTC8);
DigitalOut Rled3(PTA5);
DigitalOut Rled4(PTA4);
DigitalOut Rled5(PTA12);
DigitalOut Rled6(PTD4);
DigitalOut Rled7(PTA1);
DigitalOut Rled8(PTA2);

DigitalOut Gled1(PTA13);
DigitalOut Gled2(PTD5);
DigitalOut Gled3(PTD0);
DigitalOut Gled4(PTD2);
DigitalOut Gled5(PTD3);
DigitalOut Gled6(PTD1);
DigitalOut Gled7(PTE31);
DigitalOut Gled8(PTB0);

DigitalOut Bled1(PTC1);
DigitalOut Bled2(PTE29);
DigitalOut Bled3(PTC2);
DigitalOut Bled4(PTB3);
DigitalOut Bled5(PTB2);
DigitalOut Bled6(PTE21);
DigitalOut Bled7(PTE20);
DigitalOut Bled8(PTB1);

 

 
int main()
{      

 
while(1)
{ 

accelerometer();
 
 for(k=1;k<5;k++)
 {
     
 if(k==1)
    {
    prvni=1;
    druhy=1;
    treti=0;
    ctvrty=0;
    paty=0;
    sesty=0;
    sedmy=0;
    osmy=0;
    }
    
 if(k==2)
    {
    prvni=0;
    druhy=0;
    treti=1;
    ctvrty=1;
    paty=0;
    sesty=0;
    sedmy=0;
    osmy=0;
    }
    
 if(k==3)
    {
    prvni=0;
    druhy=0;
    treti=0;
    ctvrty=0;
    paty=1;
    sesty=1;
    sedmy=0;
    osmy=0;
    }
    
 if(k==4)
    {
    prvni=0;
    druhy=0;
    treti=0;
    ctvrty=0;
    paty=0;
    sesty=0;
    sedmy=1;
    osmy=1;
    }
    
 for(j=1;j<5;j++)
 {
    
   // if(j==1)
   // {
        switch(acc_dir)
                 {
                   case 'D':
                       RED=10;
                       break;
                   case 'R':
                       BLUE=10;
                       break;
                   case 'U':
                       GREEN=10;
                       break;
                   case 'L':
                       RED=10;
                       BLUE=10;
                        break;   
                   default:
                    break;  
                }
                       
  /*  }
    
    if(j==2)
    {
     
    }
    
    if(j==3)
    {
     
    }
    
    if(j==4)
    {
    
    }
   */
    for(i=11;i>0;i--)
    {
         
        if(RED>0)
        {
        RledA=1;
        RledB=1;
        }
        else
        {
        RledA=0;
        RledB=0;
        }
            
        if(GREEN>0)
        {
        GledA=1;
        GledB=1;
        }
        else
        {
        GledA=0;
        GledB=0;
        }
            
        if(BLUE>0)
        {
        BledA=1;
        BledB=1;
        }
        else
        {
        BledA=0;
        BledB=0;
        }
        
        if(j==1)
    {
     Rled1=RledA;
     Rled2=RledB;
     Gled1=GledA;
     Gled2=GledB;
     Bled1=BledA;
     Bled2=BledB;
    }
    
    if(j==2)
    {
     Rled3=RledA;
     Rled4=RledB;
     Gled3=GledA;
     Gled4=GledB;
     Bled3=BledA;
     Bled4=BledB;
    }
    
    if(j==3)
    {
     Rled5=RledA;
     Rled6=RledB;
     Gled5=GledA;
     Gled6=GledB;
     Bled5=BledA;
     Bled6=BledB;
    }
    
    if(j==4)
    {
     Rled7=RledA;
     Rled8=RledB;
     Gled7=GledA;
     Gled8=GledB;
     Bled7=BledA;
     Bled8=BledB;
    } 
            
        wait(0.00001);
        RED--;
        BLUE--;
        GREEN--;
        
        }    
    }
 }   
}
}

void accelerometer()
{
    
        float ax, ay, az;
        float xAngle, yAngle;
    
        ax = acc.getAccX();
        ay = acc.getAccY();
        az = acc.getAccZ();
        
        xAngle = atan( ax / (sqrt((ay)*(ay) + (az)*(az)))) * 60;
        yAngle = atan( ay / (sqrt((ax)*(ax) + (az)*(az)))) * 60;
        
        
        if(abs(xAngle) >= abs(yAngle))
        {
            if(xAngle >= MOVE_ANGLE)
            {                 
                 acc_dir = 'U';   // +X 
            }
           
            if(xAngle <= -MOVE_ANGLE)
            {
                 acc_dir = 'D';    // -X  
            }   
        }
        
        else
        {      
            if(yAngle >= MOVE_ANGLE)
            {
                 acc_dir = 'L';   // +Y 
            }
    
            if(yAngle <= -MOVE_ANGLE)
            {
                 acc_dir = 'R';   // -Y  
            }   
        }        
    
}