This program will run for https://www.sparkfun.com/products/760 as well as https://www.sparkfun.com/products/759 products from sparkfun

Dependencies:   mbed

main.cpp

Committer:
Neel
Date:
2013-04-20
Revision:
0:ad2e87d4b20e

File content as of revision 0:ad2e87d4b20e:

#include "mbed.h"

void draw_pattern(int pattern);
DigitalOut myled(LED1);
SPI spi(p5, p6, p7); // mosi, miso, sclk
DigitalOut cs(p14);
SPI spi1(p11, p12, p13);
DigitalOut cs1(p18);

/*volatile uint8_t arrow_green_right[] = {
    0, 0, 0, 1, 1, 1, 0, 0,    
    0, 0, 0, 1, 1, 1, 0, 0, 
    0, 0, 0, 1, 1, 1, 0, 0, 
    0, 0, 0, 1, 1, 1, 0, 0,    
    0, 0, 0, 1, 1, 1, 0, 0, 
    0, 1, 0, 1, 1, 1, 0, 1, 
    0, 0, 1, 1, 1, 1, 1, 0, 
    0, 0, 0, 1, 1, 1, 0, 0, 
};*/

volatile uint8_t arrow_red_left[] = {
    0, 0, 0, 224, 224, 224, 0, 0,    
    0, 0, 224, 224, 224, 224, 224, 0, 
    0, 224, 0, 224, 224, 224, 0, 224, 
    0, 0, 0, 224, 224, 224, 0, 0,    
    0, 0, 0, 224, 224, 224, 0, 0, 
    0, 0, 0, 224, 224, 224, 0, 0, 
    0, 0, 0, 224, 224, 224, 0, 0, 
    0, 0, 0, 224, 224, 224, 0, 0, 
};

volatile uint8_t arrow_blue_left[] = {
    0, 0, 0, 3, 3, 3, 0, 0,    
    0, 0, 3, 3, 3, 3, 3, 0, 
    0, 3, 0, 3, 3, 3, 0, 3, 
    0, 0, 0, 3, 3, 3, 0, 0,    
    0, 0, 0, 3, 3, 3, 0, 0, 
    0, 0, 0, 3, 3, 3, 0, 0, 
    0, 0, 0, 3, 3, 3, 0, 0, 
    0, 0, 0, 3, 3, 3, 0, 0, 
};

volatile uint8_t arrow_white_left[] = {
    0, 0, 0, 95, 95, 95, 0, 0,    
    0, 0, 95, 95, 95, 95, 95, 0, 
    0, 95, 0, 95, 95, 95, 0, 95, 
    0, 0, 0, 95, 95, 95, 0, 0,    
    0, 0, 0, 95, 95, 95, 0, 0, 
    0, 0, 0, 95, 95, 95, 0, 0, 
    0, 0, 0, 95, 95, 95, 0, 0, 
    0, 0, 0, 95, 95, 95, 0, 0, 
};

volatile uint8_t arrow_white_up[] = {
    0, 0, 0, 0, 0, 0, 0, 0,    
    0, 0, 0, 0, 0, 95, 0, 0, 
    0, 0, 0, 0, 0, 0, 95, 0, 
    0, 95, 95, 95, 95, 95, 95, 95,    
    0, 95, 95, 95, 95, 95, 95, 95, 
    95, 95, 95, 95, 95, 95, 95, 95, 
    0, 0, 0, 0, 0, 0, 95, 0, 
    0, 0, 0, 0, 0, 95, 0, 0, 
};

volatile uint8_t arrow_blue_up[] = {
    0, 0, 0, 0, 0, 0, 0, 0,    
    0, 0, 0, 0, 0, 3, 0, 0, 
    0, 0, 0, 0, 0, 0, 3, 0, 
    0, 3, 3, 3, 3, 3, 3, 3,    
    0, 3, 3, 3, 3, 3, 3, 3, 
    3, 3, 3, 3, 3, 3, 3, 3, 
    0, 0, 0, 0, 0, 0, 3, 0, 
    0, 0, 0, 0, 0, 3, 0, 0, 
};

volatile uint8_t arrow_white_down[] = {
     0, 0, 0, 0, 95, 0, 0, 0,   
     0, 0, 0, 95, 0, 0, 0, 0,
     0, 0, 95, 95, 95, 95, 95, 95,
     95, 95, 95, 95, 95, 95, 95, 95,    
     95, 0, 95, 95, 95, 95, 95, 95,
     95, 0, 0, 95, 0, 0, 0, 0,
     0, 0, 0, 0, 95, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0,
};

volatile uint8_t arrow_blue_down[] = {
     0, 0, 0, 0, 3, 0, 0, 0,   
     0, 0, 0, 3, 0, 0, 0, 0,
     0, 0, 3, 3, 3, 3, 3, 3,
     3, 3, 3, 3, 3, 3, 3, 3,    
     3, 0, 3, 3, 3, 3, 3, 3,
     3, 0, 0, 3, 0, 0, 0, 0,
     0, 0, 0, 0, 3, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0,
};
int main() 
{
    // Setup the spi for 8 bit data, high steady state clock,
    // second edge capture, with a 100kHz clock rate
    spi.format(8,3);
    spi.frequency(100000);
    /*cs = 0;
    wait(0.5);
    spi.write(0x25);
    spi.write(2);
    wait(0.5);
    cs=1;*/
    spi1.format(8,3);
    spi1.frequency(100000);
    //draw_pattern(0);
    //draw_pattern(1);
    draw_pattern(2);
    draw_pattern(3);
}


void draw_pattern(int pattern)
{
    switch(pattern)
    {
        case 0:
        {
            while(1)
              {
              cs = 0;
              //cs1 = 0;
              myled = 0;
              wait_ms(0.5); 
              for(int k = 0; k<65;k++ )
              {
                spi.write(arrow_blue_down[k+1]);
                //spi1.write(arrow_blue_up[k+1]);
              }
              wait_ms(0.5);
              cs = 1;
              //cs1 = 1;
              }
              
             /* {
              cs = 0;
              //cs1 = 0;
              myled = 0;
              wait_ms(0.5); 
              for(int k = 0; k<65;k++ )
              {
                spi.write(arrow_blue_up[k+1]);
                //spi1.write(arrow_blue_up[k+1]);
              }
              wait_ms(0.5);
              cs = 1;
              //cs1 = 1;
              }*/
              
              
        }
        case 1:
        {
            int i=0;
            do
            {
              cs = 0;
              //cs1 = 0;
              myled = 1;
              wait_ms(0.5); 
              for(int k=0;k<65;k++)
              {
                spi.write(arrow_red_left[k+1]);
                //spi1.write(image[k+1]);
              }
              wait_ms(0.5);
              cs = 1;
              myled=0;
              wait(1);
              i++;
            }while(i<10);
            break;
        }
        case 2:
        {
            int i=0;
            do
            {
              cs1 = 0;
              //cs1 = 0;
              myled = 1;
              wait_ms(0.5); 
              for(int k=0;k<65;k++)
              {
                spi1.write(arrow_white_up[k+1]);
                //spi1.write(image[k+1]);
              }
              wait_ms(0.5);
              cs1 = 1;
              myled=0;
              wait(1);
              i++;
            }while(i<10);
            break;
        }
        
        case 3:
        {
            int i=0;
            do
            {
              cs = 0;
              //cs1 = 0;
              myled = 1;
              wait_ms(0.5); 
              for(int k=0;k<65;k++)
              {
                spi.write(arrow_white_down[k+1]);
                //spi1.write(image[k+1]);
              }
              wait_ms(0.5);
              cs = 1;
              myled=0;
              wait(1);
              i++;
            }while(i<10);
            break;
        }
     }
}