this is program how build nRF51822 to get ADXL345 data
Dependencies: BLE_API mbed nRF51822
Fork of ADXL345_I2C by
Revision 6:bc835d0f686f, committed 2017-12-06
- Comitter:
- asyrofi
- Date:
- Wed Dec 06 03:10:08 2017 +0000
- Parent:
- 5:8242f251bcac
- Child:
- 7:31412349a322
- Commit message:
- mantap;
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Dec 04 15:11:37 2017 +0000
+++ b/main.cpp Wed Dec 06 03:10:08 2017 +0000
@@ -18,7 +18,9 @@
DigitalOut led1(LED1);
Serial uart1(USBTX,USBRX);
UARTService *uartServicePtr;
- uint8_t sFlag = 0;
+
+
+
void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
{
@@ -50,31 +52,62 @@
led1 = !led1;
}
-uint8_t c;
-void uartRx(void)
+int readings[3] = {0, 0, 0};
+int threshold =80;
+int xval[100]={0};
+int yval[100]={0};
+int zval[100]={0};
+int xavg;
+int yavg;
+int zavg;
+int steps, flag=0;
+void calibrate(void)
{
-
- c = uart1.getc();
-
- if(sFlag < 39)
- b[sFlag++] = c;
-
- if(c == '\r' || c == '\n' || sFlag == 15)
- {
- ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (const uint8_t*)b/*params->data*/, sFlag/*bytesRead*/);
- sFlag = 0;
- }
+ led1=1;
+ int sum1 = 0;
+ int sum2 = 0;
+ int sum3 = 0;
+ for (int i=0; i<100; i++)
+ {
+ xval[i]=(1); //nilai x adxl345
+ sum1 = xval[i]+sum1;
+ }
+ wait(0.1);
+ xavg=sum1/100.0;
+ uart1.printf("%i\n", (int16_t)xavg); //nilai hasil kalibrasi x
+
+
+ for (int i=0; i<100; i++)
+ {
+ yval[i]=(1); //nilai y adxl345
+ sum2 = yval[i]+sum2;
+ }
+ wait(0.1);
+ yavg=sum2/100.0;
+ uart1.printf("%i\n", (int16_t)yavg); //nilai hasil kalibrasi y
+
+ for (int i=0; i<100; i++)
+ {
+ zval[i]=(1); //nilai z adxl345
+ sum3 = zval[i]+sum3;
+ }
+ wait(0.1);
+ zavg=sum3/100.0;
+ uart1.printf("%i\n", (int16_t)zavg); //nilai hasil kalibrasi z
+ led1=0;
}
-
- int main() {
+ int main()
+ {
uart1.baud(9600);
int readings[3] = {0, 0, 0};
+ calibrate();
uart1.printf("Starting ADXL345 test...\n");
wait(.001);
uart1.printf("Device ID is: 0x%02x\n", accelerometer.getDeviceID());
wait(.001);
+
//Go into standby mode to configure the device.
accelerometer.setPowerControl(0x00);
@@ -88,11 +121,80 @@
//Measurement mode.
accelerometer.setPowerControl(0x08);
+ int acc=0;
+ int totvect [100] = {0};
+ int totave [100] = {0};
+ int totvel [100] = {0};
+ int totdist [100] = {0};
+ int totheight [100] = {0};
+
+
+ //float sum1, sum2, sum3 = 0
+ double xaccl[100] = {0};
+ double yaccl[100] = {0};
+ double zaccl[100] = {0};
+
+ //float x,y,z
+ for (int i=0; i<100; i++)
+ {
+ xaccl[i]=(1);
+ wait(0.1);
+ yaccl[i]=(1);
+ wait(0.1);
+ zaccl[i]=(1);
+ wait(0.1);
+
+ //formula
+
+ totvect[i] = sqrt(((xaccl[i]-xavg)* (xaccl[i]-xavg))+ ((yaccl[i] - yavg)*(yaccl[i] - yavg)) + ((zaccl[i] - zavg)*(zaccl[i] - zavg)));
+ totave[i] = (totvect[i] + totvect[i-1]) / 2 ;
+ totvel[i]=(totave[i]*0.2);
+ //totave1[i]=(totvel[i]+totvel[i-1])/2;
+ totdist[i]=(totvect[i]*(0.2*0.2)/2);
+ totheight[i]=sqrt((((xaccl[i]-xavg)* (xaccl[i]-xavg))+ ((yaccl[i] - yavg)*(yaccl[i] - yavg)))*(0.2*0.2)/2);
+ //totave3[i]=((totheight[i]+totheight[i-1])/2);
+ acc=acc+totave[i];
+
+ uart1.printf("%i\n", (int16_t)totave[i]);
+ uart1.printf("%i\n", (int16_t)totvel[i]);
+ uart1.printf("%i\n", (int16_t)totdist[i]);
+ uart1.printf("%i\n", (int16_t)totheight[i]);
+
+ wait(0.1);
+
+ if (steps == 10)
+ {
+ uart1.printf("capek");
+ }
+
+ else
+ {
+ //nothing
+ }
+
+ //cal steps
+ if (totave[i] > threshold && flag==0)
+ {
+ steps = steps+1;
+ flag=1;
+ }
+ else if (totave[i] > threshold && flag == 1)
+ {
+ // do nothing
+ }
+ if (totave[i] < threshold && flag == 1)
+ {flag=0;}
+ uart1.printf("%i\n", (int16_t)steps);
+
+
+ }
+
+
led1 = 1;
uart1.baud(9600);
Ticker ticker;
ticker.attach(periodicCallback, 1);
- uart1.attach(uartRx,Serial::RxIrq);
+
DEBUG("Initialising the nRF51822\n\r");
@@ -121,9 +223,11 @@
wait(0.1);
accelerometer.getOutput(readings);
uart1.printf("%i, %i, %i\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]);
- ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (const uint8_t*)readings[0]/*params->data*/, sizeof(readings),false/*bytesRead*/);
- ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (const uint8_t*)readings[1]/*params->data*/, sizeof(readings),false/*bytesRead*/);
- ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (const uint8_t*)readings[2]/*params->data*/, sizeof(readings),false/*bytesRead*/);
- }
+ ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t*)readings[0]/*params->data*/, sizeof(readings),false/*bytesRead*/);
+ ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t*)readings[1]/*params->data*/, sizeof(readings),false/*bytesRead*/);
+ ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t*)readings[2]/*params->data*/, sizeof(readings),false/*bytesRead*/);
+
+ }
}
+
