Dependencies: BNO055 MODSERIAL mbed
Diff: main.cpp
- Revision:
- 2:7da645fba3eb
- Parent:
- 1:86b2752371c2
--- a/main.cpp Mon Nov 09 23:24:18 2015 +0000 +++ b/main.cpp Thu Nov 12 22:05:17 2015 +0000 @@ -176,7 +176,7 @@ brailleCharacter += add; } } - pc.printf("sending: %d\n",(int)brailleCharacter); + //pc.printf("sending: %d\n",(int)brailleCharacter); return brailleCharacter; } @@ -187,6 +187,67 @@ return str_to_bin(braille); } +//convert old column format to new and improved format +//old format: +//++++++++++ 0 1 +//0011223344 1 2 +//0011223344 2 4 +//0011223344 3 8 +//0011223344 4 16 +//0011223344 5 32 +//0011223344 6 64 +//0011223344 7 128 + +//new format +//0123456789 + +//++++++++++ 0 1 +//--222222-- 1 2 +//--222222-- 2 4 +//--222222-- 3 8 +//1111223333 4 16 +//1111223333 5 32 +//0000224444 6 64 +//0000224444 7 128 +void convertBrailleChar(char *brailleData){ + char lidar0 = brailleData[0] >> 4; //shift lidar0,1,3,4 data over by 4 bits (only loooking at nearest 4 data bits) + char lidar1 = brailleData[2] >> 4; + char lidar2 = brailleData[4]; + char lidar3 = brailleData[6] >> 4; + char lidar4 = brailleData[8] >> 4; + + //clear brailleData + for(int i=0;i<10;i++) + if(i != 4 && i != 5) + brailleData[i] = 1; + + for(int i=0;i<4;i++){ //add lidar0 and lidar1 data to first 4 columns + int bit0 = (lidar0 >> i) & 0x01; //we want the 1st bit 1st, 4th bit 4th. Then bit mask to show only the 0x01 bit. + brailleData[i] += 64*bit0 + 128*bit0; //add it to bits 6 and 7 + + int bit1 = (lidar1 >> i) & 0x01; //lidar 1 (rows 2, 3; columns 0-3 + brailleData[i] += 32*bit1 + 16*bit1; + + int j = 9-i; + int bit4 = (lidar4 >> i) & 0x01; //lidar 4 (rows 0, 1; columns 6-9) + brailleData[j] += 64*bit4 + 128*bit4; + + int bit3 = (lidar3 >> i) & 0x01; //lidar 3 (rows 2, 3; columns 6-9) + brailleData[j] += 32*bit3 + 16*bit3; + + if(i == 2 || i == 3){ //add lidar 2 data to top 4 rows of columns 2,3 and 6,7 + uint8_t bit5 = ((lidar2 >> 1) << 5);// 0x00001110; //we are only interested in the smallest 3 bits (not including the LSB) + bit5 = bit5/16; + pc.printf("lidar2: %d, brailleData: %d, bit5: %d\n",lidar2,brailleData[i],bit5); + brailleData[i] += bit5; //no need to scale bits + brailleData[j] += bit5; + } + } + // brailleData[4] += (lidar2 & 0x11111110); + // brailleData[5] += (lidar2 & 0x11111110); + +} + int main() { pc.baud(PC_BAUD); @@ -434,6 +495,8 @@ } } else{ + convertBrailleChar(brailleChar); + if(bt.writeable()){ // brailleChar[0] = 1; // brailleChar[1] = 1+2;