The code consists of displaying a BMP image using the RGB matrices extracted from MATLAB.
main.cpp
- Committer:
- abarve9
- Date:
- 2012-12-07
- Revision:
- 0:27ddc786c67d
File content as of revision 0:27ddc786c67d:
#include "ADXL345.h"
#include "mbed.h"
DigitalOut latch(p15);
DigitalOut enable(p16);
DigitalIn s1(p29);
DigitalIn s2(p30);
//Cycles through different colors on RGB LED
SPI spi(p11, p12, p13);
//Use SPI hardware to write color values to LED driver chip
PortOut ledport(Port1, 0xFFFFFFFF);
ADXL345 accelerometer(p5, p6, p7, p8);
//Serial pc(USBTX, USBRX);
DigitalOut led8(p28);
DigitalOut led7(p27);
DigitalOut led6(p26);
DigitalOut led5(p25);
DigitalOut led4(p24);
DigitalOut led3(p23);
DigitalOut led2(p22);
DigitalOut led1(p21);
// ------------------------- Zigbee -------------
Serial pc1(USBTX, USBRX);
const int redcolor[10][8]={
{255 , 250, 0, 0 , 0, 0, 244, 255},
{251, 0, 0, 219 ,225 , 0 , 0 ,244},
{ 0 , 0 ,255 , 255, 255 , 255 , 0 , 0},
{0 , 222, 255, 254, 254, 255, 242 , 0},
{0 , 252 , 254 , 254 , 254 , 254 , 255, 0},
{0 , 254 ,254 , 254 , 254 , 254 , 255 , 0},
{0 , 230 ,255 , 254, 254, 255, 246, 0},
{0 , 0 , 255 , 255 , 255 , 255, 0, 0},
{244 , 0 , 0 , 244 , 250 , 0 , 0 ,232},
{255 , 238 , 0 , 0 , 0 , 0 , 227 , 255}
};
const int greencolor[10][8] = {
{255, 250 , 0 , 0 , 0 , 0 , 244 , 255},
{251 , 0 , 0 , 219 ,217 , 0 , 0 , 244},
{ 0 , 0 ,253 , 254, 245 , 255 , 0, 0},
{0 , 212 , 246 ,254 , 242 , 244 ,230 , 0},
{0 , 240 , 242 , 254 ,242 , 242 , 249 , 0},
{0 , 241 , 242 , 254 , 242, 242 , 250, 0},
{0 ,220 , 245 , 255 , 242 , 243, 235 , 0},
{0 , 0 , 255 , 255 , 243 , 255 , 0 , 0},
{ 244 , 0 , 0 , 244 ,242 , 0 , 0 , 232},
{ 255 , 238 , 0 , 0 , 0 , 0 , 228, 255}
};
const int bluecolor[10][8]= {
{255 , 251 ,0, 0 , 0 , 0, 246, 255},
{253 , 0 , 0 , 0 , 0 , 0 , 0 , 247},
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0, 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{247 , 0 , 0 , 0 , 0 , 0 , 0, 237},
{255 , 240 , 0 , 0 , 0 , 0, 232 ,255}
};
void RGB_LED(int red, int green, int blue)
{
unsigned int low_color=0;
unsigned int high_color=0;
high_color=(blue<<4)|((red&0x3C0)>>6);
low_color=(((red&0x3F)<<10)|(green));
spi.write(high_color);
spi.write(low_color);
latch=1;
latch=0;
}
int main()
{
int readings[3] = {0, 0, 0};
int i = 0;
const char text1[50] = "HI";
int len;
char character;
char currentchar = 0;
int LED_MASK = 0xFFFFFFFF;
int red=0;
int green=0;
int blue=0;
spi.format(16,0);
spi.frequency(500000);
enable=0;
latch=0;
len = 0;
for(int n = 0; text1[n] != '\0'; n++) {
len++;
}
float waitvalue = 0.06/((6*len) + 1);
pc1.printf("text1 = %s\n\r", text1);
// pc.printf("Device ID is: 0x%02x\r\n", accelerometer.getDevId());
wait(3);
//Go into standby mode to configure the device.
accelerometer.setPowerControl(0x00);
//Full resolution, +/-16g, 4mg/LSB.
accelerometer.setDataFormatControl(0x0B);
//3.2kHz data rate.
accelerometer.setDataRate(ADXL345_3200HZ);
//Measurement mode.
accelerometer.setPowerControl(0x08);
while (1) {
red = 0;
green = 0;
blue = 0;
accelerometer.getOutput(readings);
do {
accelerometer.getOutput(readings);
pc1.printf("| 1st while reading value = %i\n\r",(int16_t)readings[1]);
} while((int16_t)readings[1] < 50);
i = 0;
//while(text1[i] != '\0')
{
/* led8 = 0;
led7 = 0;
led6 = 0;
led5 = 0;
led4 = 0;
led3 = 0;
led2 = 0;
led1 = 0; */
for( int m=0; m< 8; m++) {
red = 0;
green = 0;
blue = 0;
RGB_LED(red,green,blue);
}
wait(waitvalue);
for( int m=0; m< 8; m++) {
red = 0;
green = 0;
blue = 0;
RGB_LED(red,green,blue);
}
wait(waitvalue);
//currentchar = text1[i];
for( int m =0; m < 10; m++) {
/*char mal = font[currentchar - 0x20][m];
led8 = mal & 0x80;
led7 = mal & 0x40;
led6 = mal & 0x20;
led5 = mal & 0x10;
led4 = mal & 0x08;
led3 = mal & 0x04;
led2 = mal & 0x02;
led1 = mal & 0x01;*/
// if(led8 == 1)
green = greencolor[m][7];
red = redcolor[m][7];
blue = bluecolor[m][7];
RGB_LED(red,green,blue);
green = greencolor[m][6];
red = redcolor[m][6];
blue = bluecolor[m][6];
RGB_LED(red,green,blue);
green = greencolor[m][5];
red = redcolor[m][5];
blue = bluecolor[m][5];
RGB_LED(red,green,blue);
green = greencolor[m][4];
red = redcolor[m][4];
blue = bluecolor[m][4];
RGB_LED(red,green,blue);
green = greencolor[m][3];
red = redcolor[m][3];
blue = bluecolor[m][3];
RGB_LED(red,green,blue);
green = greencolor[m][2];
red = redcolor[m][2];
blue = bluecolor[m][2];
RGB_LED(red,green,blue);
green = greencolor[m][1];
red = redcolor[m][1];
blue = bluecolor[1][m];
RGB_LED(red,green,blue);
green = greencolor[m][0];
red = redcolor[m][0];
blue = bluecolor[m][0];
RGB_LED(red,green,blue);
wait(waitvalue);
}
/* led8 = 0;
led7 = 0;
led6 = 0;
led5 = 0;
led4 = 0;
led3 = 0;
led2 = 0;
led1 = 0; */
for( int j=0; j< 8; j++) {
red = 0;
green = 0;
blue = 0;
RGB_LED(red,green,blue);
}
wait(waitvalue);
for( int j=0; j< 8; j++) {
red = 0;
green = 0;
blue = 0;
RGB_LED(red,green,blue);
}
wait(waitvalue);
}
do {
accelerometer.getOutput(readings);
pc1.printf("| 2nd while reading value = %i\n\r",(int16_t)readings[1]);
} while((int16_t)readings[1] > -50);
}
}