Export for Dan

Dependencies:   mbed MODSERIAL1

Committer:
atravieso
Date:
Fri Oct 30 18:51:47 2015 +0000
Revision:
6:aa3219001d18
Parent:
5:14a21c3812ed
Child:
7:79a10204cb3b
Serial comms work via J3 via an RS232 level shifter.  Humidity and accelerations print to the terminal.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
atravieso 0:4b4c18724370 1
atravieso 0:4b4c18724370 2
atravieso 0:4b4c18724370 3 #include "mbed.h"
atravieso 0:4b4c18724370 4 #include "MODSERIAL.h"
atravieso 5:14a21c3812ed 5 #include "HIH_5030.h"
atravieso 6:aa3219001d18 6 #include "ADXL345.h"
atravieso 0:4b4c18724370 7
atravieso 1:66e3217ec4ec 8 #define MESSAGE_BUFFER_SIZE 100
atravieso 0:4b4c18724370 9
atravieso 0:4b4c18724370 10 DigitalOut led1(LED1);
atravieso 0:4b4c18724370 11 DigitalOut led2(LED2);
atravieso 0:4b4c18724370 12 DigitalOut led3(LED3);
atravieso 0:4b4c18724370 13 DigitalOut led4(LED4);
atravieso 5:14a21c3812ed 14 AnalogIn ain_UseA(p15);
atravieso 5:14a21c3812ed 15 //AnalogIn ain_UseB(p16); //pins 16-19 are tied to ground to reduce noise
atravieso 5:14a21c3812ed 16 //AnalogIn ain_UseC(p17);
atravieso 5:14a21c3812ed 17 //AnalogIn ain_UseD(p18);
atravieso 5:14a21c3812ed 18 //AnalogIn ain_UseE(p19);
atravieso 6:aa3219001d18 19 ADXL345 accelerometer(p5, p6, p7, p8);
atravieso 0:4b4c18724370 20
atravieso 4:810c3971bb3e 21 MODSERIAL messageSystem(p13, p14);
atravieso 0:4b4c18724370 22
atravieso 5:14a21c3812ed 23 unsigned char messageBufferIncoming[MESSAGE_BUFFER_SIZE];
atravieso 5:14a21c3812ed 24 unsigned int hexBufferIncoming[MESSAGE_BUFFER_SIZE];
atravieso 4:810c3971bb3e 25 unsigned char messageBufferOutgoing[MESSAGE_BUFFER_SIZE];
atravieso 1:66e3217ec4ec 26 int count = 0;
atravieso 1:66e3217ec4ec 27 int i = 0;
atravieso 0:4b4c18724370 28 bool messageReceived;
atravieso 0:4b4c18724370 29
atravieso 1:66e3217ec4ec 30
atravieso 0:4b4c18724370 31 void messageReceive(MODSERIAL_IRQ_INFO *q) {
atravieso 1:66e3217ec4ec 32 // Get the pointer to MODSERIAL object that invoked this callback.
atravieso 0:4b4c18724370 33 MODSERIAL *sys = q->serial;
atravieso 3:4039b6c8da2e 34
atravieso 3:4039b6c8da2e 35 //dereference rxGetLasChar() of sys object
atravieso 4:810c3971bb3e 36 unsigned int c = sys->rxGetLastChar(); // Returns the last byte to pass through the RX interrupt handler.
atravieso 3:4039b6c8da2e 37
atravieso 5:14a21c3812ed 38 //add the character that triggered the interrupt to the incoming buffers
atravieso 5:14a21c3812ed 39 //I'm adding to an in buffer and a char buffer, but using the int buffer to determine which message it is
atravieso 5:14a21c3812ed 40 //if I want to use the char buffer to determine, then I need to use strcmp instead of =
atravieso 1:66e3217ec4ec 41 if(i <=MESSAGE_BUFFER_SIZE){
atravieso 5:14a21c3812ed 42 messageBufferIncoming[i] = c;
atravieso 3:4039b6c8da2e 43 hexBufferIncoming[i] = c;
atravieso 1:66e3217ec4ec 44 i++;
atravieso 5:14a21c3812ed 45 }
atravieso 1:66e3217ec4ec 46 count++;
atravieso 5:14a21c3812ed 47 if (count == 4){ //TODO: Determine if I need to be able to find a message anywhere within a bigger buffer
atravieso 4:810c3971bb3e 48 //led4 = !led4;
atravieso 4:810c3971bb3e 49 if (hexBufferIncoming[0] == 0xAA){ //Start Calibration
atravieso 3:4039b6c8da2e 50 if (hexBufferIncoming[1] == 0x55){
atravieso 3:4039b6c8da2e 51 if (hexBufferIncoming[2] == 0xFF){
atravieso 3:4039b6c8da2e 52 if (hexBufferIncoming[3] == 0x00){
atravieso 3:4039b6c8da2e 53 led1 = !led1;
atravieso 5:14a21c3812ed 54 //TODO: Determine if I need to add disable interrupt. What happens if I receive while transmitting???
atravieso 4:810c3971bb3e 55 messageSystem.printf("%c", messageBufferOutgoing[0]= 0xAB);
atravieso 4:810c3971bb3e 56 messageSystem.printf("%c", messageBufferOutgoing[1] = 0x54);
atravieso 4:810c3971bb3e 57 messageSystem.printf("%c", messageBufferOutgoing[2] = 0xFF);
atravieso 4:810c3971bb3e 58 messageSystem.printf("%c", messageBufferOutgoing[3] = 0x00);
atravieso 4:810c3971bb3e 59
atravieso 3:4039b6c8da2e 60 }
atravieso 3:4039b6c8da2e 61 }
atravieso 3:4039b6c8da2e 62 }
atravieso 3:4039b6c8da2e 63 }
atravieso 3:4039b6c8da2e 64
atravieso 4:810c3971bb3e 65 else if (hexBufferIncoming[0] == 0xBB){ //Stop Calibration
atravieso 3:4039b6c8da2e 66 if (hexBufferIncoming[1] == 0x44){
atravieso 3:4039b6c8da2e 67 if (hexBufferIncoming[2] == 0xFF){
atravieso 3:4039b6c8da2e 68 if (hexBufferIncoming[3] == 0x00){
atravieso 3:4039b6c8da2e 69 led2 = !led2;
atravieso 4:810c3971bb3e 70 messageSystem.printf("%c", messageBufferOutgoing[0]= 0xBC);
atravieso 4:810c3971bb3e 71 messageSystem.printf("%c", messageBufferOutgoing[1]= 0x43);
atravieso 4:810c3971bb3e 72 messageSystem.printf("%c", messageBufferOutgoing[2]= 0xFF);
atravieso 4:810c3971bb3e 73 messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
atravieso 3:4039b6c8da2e 74 }
atravieso 3:4039b6c8da2e 75 }
atravieso 3:4039b6c8da2e 76 }
atravieso 3:4039b6c8da2e 77 }
atravieso 3:4039b6c8da2e 78
atravieso 4:810c3971bb3e 79 else if (hexBufferIncoming[0] == 0xCC){ //Get Calibration Value Leave room for data bits
atravieso 3:4039b6c8da2e 80 if (hexBufferIncoming[1] == 0x33){
atravieso 3:4039b6c8da2e 81 if (hexBufferIncoming[2] == 0xFF){
atravieso 3:4039b6c8da2e 82 if (hexBufferIncoming[3] == 0x00){
atravieso 3:4039b6c8da2e 83 led3 = !led3;
atravieso 4:810c3971bb3e 84 messageSystem.printf("%c", messageBufferOutgoing[0]= 0xCD);
atravieso 4:810c3971bb3e 85 messageSystem.printf("%c", messageBufferOutgoing[1]= 0x32);
atravieso 4:810c3971bb3e 86 messageSystem.printf("%c", messageBufferOutgoing[2]= 0xFF);
atravieso 4:810c3971bb3e 87 messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
atravieso 3:4039b6c8da2e 88 }
atravieso 3:4039b6c8da2e 89 }
atravieso 3:4039b6c8da2e 90 }
atravieso 3:4039b6c8da2e 91 }
atravieso 4:810c3971bb3e 92 else if (hexBufferIncoming[0] == 0xDD){ //Get Dynamic Data Leave room for data bits
atravieso 3:4039b6c8da2e 93 if (hexBufferIncoming[1] == 0x22){
atravieso 3:4039b6c8da2e 94 if (hexBufferIncoming[2] == 0xFF){
atravieso 3:4039b6c8da2e 95 if (hexBufferIncoming[3] == 0x00){
atravieso 3:4039b6c8da2e 96 led4 = !led4;
atravieso 4:810c3971bb3e 97 messageSystem.printf("%c", messageBufferOutgoing[0]= 0xDE);
atravieso 4:810c3971bb3e 98 messageSystem.printf("%c", messageBufferOutgoing[1]= 0x21);
atravieso 4:810c3971bb3e 99 messageSystem.printf("%c", messageBufferOutgoing[2]= 0xFF);
atravieso 4:810c3971bb3e 100 messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
atravieso 3:4039b6c8da2e 101 }
atravieso 3:4039b6c8da2e 102 }
atravieso 3:4039b6c8da2e 103 }
atravieso 3:4039b6c8da2e 104 }
atravieso 4:810c3971bb3e 105 else if (hexBufferIncoming[0] == 0xDB){ //Get Heading //Add space for responses
atravieso 3:4039b6c8da2e 106 if (hexBufferIncoming[1] == 0x24){
atravieso 3:4039b6c8da2e 107 if (hexBufferIncoming[2] == 0xFF){
atravieso 3:4039b6c8da2e 108 if (hexBufferIncoming[3] == 0x00){
atravieso 3:4039b6c8da2e 109 led1 = !led1;
atravieso 4:810c3971bb3e 110 messageSystem.printf("%c", messageBufferOutgoing[0]= 0xDC);
atravieso 4:810c3971bb3e 111 messageSystem.printf("%c", messageBufferOutgoing[1]= 0x23);
atravieso 4:810c3971bb3e 112 messageSystem.printf("%c", messageBufferOutgoing[2]= 0x00);
atravieso 4:810c3971bb3e 113 messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
atravieso 3:4039b6c8da2e 114 }
atravieso 3:4039b6c8da2e 115 }
atravieso 3:4039b6c8da2e 116 }
atravieso 3:4039b6c8da2e 117 }
atravieso 4:810c3971bb3e 118 else if (hexBufferIncoming[0] == 0xD9){ //Get Temperature //Add space for response
atravieso 3:4039b6c8da2e 119 if (hexBufferIncoming[1] == 0x26){
atravieso 3:4039b6c8da2e 120 if (hexBufferIncoming[2] == 0xFF){
atravieso 3:4039b6c8da2e 121 if (hexBufferIncoming[3] == 0x00){
atravieso 3:4039b6c8da2e 122 led2 = !led2;
atravieso 4:810c3971bb3e 123 messageSystem.printf("%c", messageBufferOutgoing[0]= 0xDA);
atravieso 4:810c3971bb3e 124 messageSystem.printf("%c", messageBufferOutgoing[1]= 0x25);
atravieso 4:810c3971bb3e 125 messageSystem.printf("%c", messageBufferOutgoing[2]= 0x00);
atravieso 4:810c3971bb3e 126 messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
atravieso 3:4039b6c8da2e 127 }
atravieso 3:4039b6c8da2e 128 }
atravieso 3:4039b6c8da2e 129 }
atravieso 3:4039b6c8da2e 130 }
atravieso 4:810c3971bb3e 131 else if (hexBufferIncoming[0] == 0xEE){ //Get Elapsed Time On //Add space for response
atravieso 3:4039b6c8da2e 132 if (hexBufferIncoming[1] == 0x11){
atravieso 3:4039b6c8da2e 133 if (hexBufferIncoming[2] == 0x00){
atravieso 3:4039b6c8da2e 134 if (hexBufferIncoming[3] == 0x01){
atravieso 3:4039b6c8da2e 135 led3 = !led3;
atravieso 4:810c3971bb3e 136 messageSystem.printf("%c", messageBufferOutgoing[0]= 0xEF);
atravieso 4:810c3971bb3e 137 messageSystem.printf("%c", messageBufferOutgoing[1]= 0x10);
atravieso 4:810c3971bb3e 138 messageSystem.printf("%c", messageBufferOutgoing[2]= 0x00);
atravieso 4:810c3971bb3e 139 messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
atravieso 3:4039b6c8da2e 140 }
atravieso 3:4039b6c8da2e 141 }
atravieso 3:4039b6c8da2e 142 }
atravieso 3:4039b6c8da2e 143 }
atravieso 5:14a21c3812ed 144 memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming));
atravieso 4:810c3971bb3e 145 memset(hexBufferIncoming, '\0', sizeof(hexBufferIncoming));
atravieso 4:810c3971bb3e 146 memset(messageBufferOutgoing, '\0', sizeof(messageBufferOutgoing));
atravieso 1:66e3217ec4ec 147 i = 0;
atravieso 1:66e3217ec4ec 148 messageReceived = true;
atravieso 1:66e3217ec4ec 149 count = 0;
atravieso 1:66e3217ec4ec 150 }
atravieso 0:4b4c18724370 151 return;
atravieso 0:4b4c18724370 152 }
atravieso 0:4b4c18724370 153
atravieso 1:66e3217ec4ec 154 void messageProcess(void) {
atravieso 3:4039b6c8da2e 155 // led1 = !led1;
atravieso 0:4b4c18724370 156 messageReceived = false;
atravieso 0:4b4c18724370 157 }
atravieso 5:14a21c3812ed 158 /*
atravieso 5:14a21c3812ed 159 Constructor
atravieso 5:14a21c3812ed 160 dataPin: the IO pin connected to the sensor's data pin (pin 15)
atravieso 5:14a21c3812ed 161 supplyVoltage: the voltage supplying the humidity sensor (pins 1,3 - for the HIH5030 3.3 V typical)
atravieso 5:14a21c3812ed 162 referenceVoltage: motor controller's reference voltage (3.3V for the LPC1768)
atravieso 5:14a21c3812ed 163 */
atravieso 0:4b4c18724370 164
atravieso 5:14a21c3812ed 165 HIH5030::HIH5030(float dataPin, float supplyVoltage, float referenceVoltage){
atravieso 5:14a21c3812ed 166
atravieso 5:14a21c3812ed 167 pin = dataPin;
atravieso 5:14a21c3812ed 168 vSupply = supplyVoltage;
atravieso 5:14a21c3812ed 169 vRef = referenceVoltage;
atravieso 5:14a21c3812ed 170
atravieso 5:14a21c3812ed 171 /*
atravieso 5:14a21c3812ed 172 Relative Humidity is calculated using the following equations taken from the datasheet:
atravieso 5:14a21c3812ed 173 (1) Vout = (VSupply)(0.00636(sensorRH) + 0.1515)
atravieso 5:14a21c3812ed 174 (2) sensorRH = (Vout - zeroOffset) / slope
atravieso 5:14a21c3812ed 175
atravieso 5:14a21c3812ed 176 Solving (1) for sensorRH:
atravieso 5:14a21c3812ed 177 sensorRH = (Vout - (0.1515)VSupply) / (0.00636)VSupply
atravieso 5:14a21c3812ed 178
atravieso 5:14a21c3812ed 179 Equate result with (2):
atravieso 5:14a21c3812ed 180 zeroOffset = (0.1515)VSupply
atravieso 5:14a21c3812ed 181 slope = (0.00636)VSupply
atravieso 5:14a21c3812ed 182 */
atravieso 5:14a21c3812ed 183
atravieso 5:14a21c3812ed 184 slope = 0.00636 * vSupply;
atravieso 5:14a21c3812ed 185 zeroOffset = 0.1515 * vSupply;
atravieso 5:14a21c3812ed 186
atravieso 5:14a21c3812ed 187 }
atravieso 5:14a21c3812ed 188
atravieso 5:14a21c3812ed 189
atravieso 5:14a21c3812ed 190 /*
atravieso 5:14a21c3812ed 191 Convert sensor reading into relative humidity using equation (2)
atravieso 5:14a21c3812ed 192 */
atravieso 5:14a21c3812ed 193
atravieso 5:14a21c3812ed 194 float HIH5030::getSensorRH() {
atravieso 5:14a21c3812ed 195 return ((vout() - zeroOffset) / slope);
atravieso 5:14a21c3812ed 196
atravieso 5:14a21c3812ed 197 }
atravieso 5:14a21c3812ed 198
atravieso 5:14a21c3812ed 199 /*
atravieso 5:14a21c3812ed 200 Get temperature-compensated relative humity. From data sheet:
atravieso 5:14a21c3812ed 201 trueRH = sensorRH / (1.0546 - 0.00216T)
atravieso 5:14a21c3812ed 202 */
atravieso 5:14a21c3812ed 203
atravieso 5:14a21c3812ed 204 float HIH5030::getTrueRH(float temperature) {
atravieso 5:14a21c3812ed 205 return getSensorRH() / (1.0546 - (0.00216 * temperature));
atravieso 5:14a21c3812ed 206
atravieso 5:14a21c3812ed 207 }
atravieso 5:14a21c3812ed 208
atravieso 5:14a21c3812ed 209 /*
atravieso 5:14a21c3812ed 210 Get sensor output voltage.
atravieso 5:14a21c3812ed 211 Assumes 12-bit (2^16 = 4096) A/D resolution.
atravieso 5:14a21c3812ed 212 */
atravieso 5:14a21c3812ed 213
atravieso 5:14a21c3812ed 214 float HIH5030::vout() {
atravieso 5:14a21c3812ed 215 return (float)(ain_UseA.read_u16()) * 3.3 / 65536;
atravieso 5:14a21c3812ed 216
atravieso 5:14a21c3812ed 217 }
atravieso 6:aa3219001d18 218 void ADXL345::getOutput(int* readings){
atravieso 6:aa3219001d18 219
atravieso 6:aa3219001d18 220 char buffer[6];
atravieso 6:aa3219001d18 221
atravieso 6:aa3219001d18 222 multiByteRead(ADXL345_DATAX0_REG, buffer, 6);
atravieso 6:aa3219001d18 223
atravieso 6:aa3219001d18 224 readings[0] = (int)buffer[1] << 8 | (int)buffer[0];
atravieso 6:aa3219001d18 225 readings[1] = (int)buffer[3] << 8 | (int)buffer[2];
atravieso 6:aa3219001d18 226 readings[2] = (int)buffer[5] << 8 | (int)buffer[4];
atravieso 6:aa3219001d18 227
atravieso 6:aa3219001d18 228 }
atravieso 6:aa3219001d18 229
atravieso 6:aa3219001d18 230 void ADXL345::multiByteRead(int startAddress, char* buffer, int size) {
atravieso 6:aa3219001d18 231
atravieso 6:aa3219001d18 232 int tx = (ADXL345_SPI_READ | ADXL345_MULTI_BYTE | (startAddress & 0x3F));
atravieso 6:aa3219001d18 233
atravieso 6:aa3219001d18 234 nCS_ = 0;
atravieso 6:aa3219001d18 235 //Send address to start reading from.
atravieso 6:aa3219001d18 236 spi_.write(tx);
atravieso 6:aa3219001d18 237
atravieso 6:aa3219001d18 238 for (int i = 0; i < size; i++) {
atravieso 6:aa3219001d18 239 buffer[i] = spi_.write(0x00);
atravieso 6:aa3219001d18 240 }
atravieso 6:aa3219001d18 241
atravieso 6:aa3219001d18 242 nCS_ = 1;
atravieso 6:aa3219001d18 243
atravieso 6:aa3219001d18 244 }
atravieso 6:aa3219001d18 245
atravieso 6:aa3219001d18 246 //ACCELEROMETER
atravieso 6:aa3219001d18 247
atravieso 6:aa3219001d18 248 ADXL345::ADXL345(PinName mosi,
atravieso 6:aa3219001d18 249 PinName miso,
atravieso 6:aa3219001d18 250 PinName sck,
atravieso 6:aa3219001d18 251 PinName cs) : spi_(mosi, miso, sck), nCS_(cs) {
atravieso 6:aa3219001d18 252
atravieso 6:aa3219001d18 253 //2MHz, allowing us to use the fastest data rates.
atravieso 6:aa3219001d18 254 spi_.frequency(2000000);
atravieso 6:aa3219001d18 255 spi_.format(8,3);
atravieso 6:aa3219001d18 256
atravieso 6:aa3219001d18 257 nCS_ = 1;
atravieso 6:aa3219001d18 258
atravieso 6:aa3219001d18 259 wait_us(500);
atravieso 6:aa3219001d18 260
atravieso 6:aa3219001d18 261 }
atravieso 6:aa3219001d18 262
atravieso 6:aa3219001d18 263 //ACCELEROMETER
atravieso 0:4b4c18724370 264
atravieso 0:4b4c18724370 265 int main() {
atravieso 0:4b4c18724370 266
atravieso 0:4b4c18724370 267 messageReceived = false;
atravieso 5:14a21c3812ed 268 memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming));
atravieso 4:810c3971bb3e 269 memset(hexBufferIncoming, '\0', sizeof(hexBufferIncoming));
atravieso 4:810c3971bb3e 270 memset(messageBufferOutgoing, '\0', sizeof(messageBufferOutgoing));
atravieso 0:4b4c18724370 271 messageSystem.baud(9600);
atravieso 3:4039b6c8da2e 272 messageSystem.attach(&messageReceive, MODSERIAL::RxIrq); //Attach a C++ type object/method pointer as the callback.
atravieso 1:66e3217ec4ec 273
atravieso 0:4b4c18724370 274 // Fix Mbed library bug, see http://mbed.org/forum/bugs-suggestions/topic/1498
atravieso 0:4b4c18724370 275 LPC_GPIOINT->IO2IntClr = (1UL << 5) | (1UL << 4) | (1UL << 3) | (1UL << 2);
atravieso 0:4b4c18724370 276 \
atravieso 0:4b4c18724370 277 while(1) {
atravieso 4:810c3971bb3e 278 //led1 = !led1;
atravieso 4:810c3971bb3e 279 wait(.05);
atravieso 5:14a21c3812ed 280 float ad[5];
atravieso 5:14a21c3812ed 281 float supplyvoltage = 3.3;
atravieso 5:14a21c3812ed 282 float referencevoltage = 3.3;
atravieso 5:14a21c3812ed 283 float vdiv = (3.3 / 65536); //3.3 is the reference voltage (AnalogIn measures from 0V to 3.3V) and 65536 is the highest number that can be represented by a 16 bit unsigned
atravieso 5:14a21c3812ed 284 while( 1 ){
atravieso 5:14a21c3812ed 285 ad[0] = (float)ain_UseA.read_u16() * vdiv; //16-bit unsigned short representing the current input voltage, normalised to a 16-bit value
atravieso 5:14a21c3812ed 286 // ad[1] = (float)ain_UseB.read_u16() * vdiv;
atravieso 5:14a21c3812ed 287 // ad[2] = (float)ain_UseC.read_u16() * vdiv;
atravieso 5:14a21c3812ed 288 // ad[3] = (float)ain_UseD.read_u16() * vdiv;
atravieso 5:14a21c3812ed 289 // ad[4] = (float)ain_UseE.read_u16() * vdiv;
atravieso 5:14a21c3812ed 290 //pc.printf("%5.3f,%5.3f,%5.3f,%5.3f,%5.3f\r\n ", ad[0],ad[1],ad[2],ad[3],ad[4]);
atravieso 5:14a21c3812ed 291 HIH5030 humidity(ad[0], supplyvoltage, referencevoltage);
atravieso 5:14a21c3812ed 292 messageSystem.printf("%5.3f\r\nHumidity: ", humidity.getSensorRH());
atravieso 5:14a21c3812ed 293 led3 = 1;
atravieso 5:14a21c3812ed 294 wait(2.0);
atravieso 5:14a21c3812ed 295 led3 = 0;
atravieso 5:14a21c3812ed 296 wait(2.0);
atravieso 6:aa3219001d18 297
atravieso 6:aa3219001d18 298 ///ACCELEROMETER
atravieso 6:aa3219001d18 299
atravieso 6:aa3219001d18 300 int readings[3] = {0, 0, 0};
atravieso 6:aa3219001d18 301
atravieso 6:aa3219001d18 302 // messageSystem.printf("Starting ADXL345 test...\n");
atravieso 6:aa3219001d18 303 // messageSystem.printf("Device ID is: 0x%02x\n", accelerometer.getDevId());
atravieso 6:aa3219001d18 304
atravieso 6:aa3219001d18 305 //Go into standby mode to configure the device.
atravieso 6:aa3219001d18 306 // accelerometer.setPowerControl(0x00);
atravieso 6:aa3219001d18 307
atravieso 6:aa3219001d18 308 //Full resolution, +/-16g, 4mg/LSB.
atravieso 6:aa3219001d18 309 // accelerometer.setDataFormatControl(0x0B);
atravieso 6:aa3219001d18 310
atravieso 6:aa3219001d18 311 //3.2kHz data rate. Changed from 3.2k to 25Hz
atravieso 6:aa3219001d18 312 // accelerometer.setDataRate(ADXL345_25HZ);
atravieso 6:aa3219001d18 313
atravieso 6:aa3219001d18 314 //Measurement mode.
atravieso 6:aa3219001d18 315 // accelerometer.setPowerControl(0x08);
atravieso 6:aa3219001d18 316
atravieso 6:aa3219001d18 317 wait(0.1);
atravieso 6:aa3219001d18 318
atravieso 6:aa3219001d18 319 accelerometer.getOutput(readings);
atravieso 6:aa3219001d18 320
atravieso 6:aa3219001d18 321 //13-bit, sign extended values.
atravieso 6:aa3219001d18 322 messageSystem.printf("X:%i, Y:%i, Z:%i\r\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]);
atravieso 6:aa3219001d18 323 led4 = !led4;
atravieso 6:aa3219001d18 324
atravieso 6:aa3219001d18 325 ///ACCELEROMETER
atravieso 5:14a21c3812ed 326 }
atravieso 6:aa3219001d18 327
atravieso 6:aa3219001d18 328
atravieso 0:4b4c18724370 329 if (messageReceived)
atravieso 0:4b4c18724370 330 {
atravieso 4:810c3971bb3e 331 //led2 = !led2;
atravieso 0:4b4c18724370 332 messageProcess();
atravieso 0:4b4c18724370 333 }
atravieso 0:4b4c18724370 334 }
atravieso 0:4b4c18724370 335 }