An integrated code base for smart watch model using nrf51822. Used the efforts from Roger Clark, Goran Mahovlic, Nordic team SDKs and mbed repos on OLED. Programming: The watch prototype can be interfaced to Tiny Seeed BLE programmer (left of the Tiny Seeed BLE board). Connect SWDIO, SWD CLK, Vin and GND pins. For USB debugging also connect RX and TX pins. Used Roger's nice webpage to come up with the pin mapping and many other HW insights. http://www.rogerclark.net/arduino-on-the-id100hr-fitness-tracker/

Dependencies:   BLE_API SFE_MicroOLED_debugPrint mbed nRF51822

Fork of BLE_TemperatureAdvertising by xiao sun

Committer:
sandyr7
Date:
Wed Dec 27 06:47:27 2017 +0000
Revision:
7:1b0597b7ead3
Parent:
5:8c21994db8d2
test;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sandyr7 5:8c21994db8d2 1
sandyr7 5:8c21994db8d2 2 #include "KX22.h"
sandyr7 5:8c21994db8d2 3 #include "mbed.h"
sandyr7 5:8c21994db8d2 4 extern Serial pc;
sandyr7 5:8c21994db8d2 5
sandyr7 5:8c21994db8d2 6
sandyr7 5:8c21994db8d2 7 KX22::KX22(uint8_t SCL, uint8_t SDA){
sandyr7 5:8c21994db8d2 8
sandyr7 5:8c21994db8d2 9 scl = SCL;
sandyr7 5:8c21994db8d2 10 sda = SDA;
sandyr7 5:8c21994db8d2 11
sandyr7 5:8c21994db8d2 12 TwoWire* wire = new TwoWire(NRF_TWI1);
sandyr7 5:8c21994db8d2 13 (*wire).begin(scl, sda, TWI_FREQUENCY_100K);
sandyr7 5:8c21994db8d2 14
sandyr7 5:8c21994db8d2 15 writeTwoBytes(KX22_Accel_CNTL1_1,KX22_Accel_CNTL1_2,wire);
sandyr7 5:8c21994db8d2 16 writeTwoBytes(KX22_Accel_ODCNTL_1,KX22_Accel_ODCNTL_2,wire);
sandyr7 5:8c21994db8d2 17 writeTwoBytes(KX22_Accel_CNTL3_1,KX22_Accel_CNTL3_2,wire);
sandyr7 5:8c21994db8d2 18 writeTwoBytes(KX22_Accel_TILT_TIMER_1,KX22_Accel_TILT_TIMER_2,wire);
sandyr7 5:8c21994db8d2 19 writeTwoBytes(KX22_Accel_CNTL2_1,KX22_Accel_CNTL2_2,wire);
sandyr7 5:8c21994db8d2 20
sandyr7 5:8c21994db8d2 21 delete(wire);
sandyr7 5:8c21994db8d2 22
sandyr7 5:8c21994db8d2 23 }
sandyr7 5:8c21994db8d2 24
sandyr7 5:8c21994db8d2 25 void KX22::writeTwoBytes (int one, int two, TwoWire* wire)
sandyr7 5:8c21994db8d2 26 {
sandyr7 5:8c21994db8d2 27 (*wire).beginTransmission(KX22_addr_w);
sandyr7 5:8c21994db8d2 28 (*wire).write(one);
sandyr7 5:8c21994db8d2 29 (*wire).write(two);
sandyr7 5:8c21994db8d2 30 (*wire).endTransmission();
sandyr7 5:8c21994db8d2 31 }
sandyr7 5:8c21994db8d2 32 //void writeTwoBytes (int one, int two)
sandyr7 5:8c21994db8d2 33 int KX22::getByte (int address, TwoWire* wire)
sandyr7 5:8c21994db8d2 34 {
sandyr7 5:8c21994db8d2 35 int readedValue= 0;
sandyr7 5:8c21994db8d2 36 (*wire).beginTransmission(KX22_addr_w);
sandyr7 5:8c21994db8d2 37 (*wire).write(address);
sandyr7 5:8c21994db8d2 38 (*wire).endTransmission();
sandyr7 5:8c21994db8d2 39 (*wire).requestFrom(KX22_addr_r , 1); // Or-ed with "1" for read bit
sandyr7 5:8c21994db8d2 40 if(1 <= (*wire).available()) // if two bytes were received
sandyr7 5:8c21994db8d2 41 {
sandyr7 5:8c21994db8d2 42 readedValue = (*wire).read();
sandyr7 5:8c21994db8d2 43 }
sandyr7 5:8c21994db8d2 44 return readedValue;
sandyr7 5:8c21994db8d2 45 }
sandyr7 5:8c21994db8d2 46
sandyr7 5:8c21994db8d2 47 //void writeTwoBytes (int one, int two)
sandyr7 5:8c21994db8d2 48 //int getByte (int address)
sandyr7 5:8c21994db8d2 49 int16_t KX22::getAccel(int channelNum)
sandyr7 5:8c21994db8d2 50 {
sandyr7 5:8c21994db8d2 51 TwoWire* wire = new TwoWire(NRF_TWI1);
sandyr7 5:8c21994db8d2 52 (*wire).begin(scl, sda, TWI_FREQUENCY_100K);
sandyr7 5:8c21994db8d2 53
sandyr7 5:8c21994db8d2 54 //pc.printf("Inside the getAccel: channel=%d\n",channelNum);
sandyr7 5:8c21994db8d2 55 int16_t accVal = (int16_t)( getByte(DATA_OUT_BASE+1 + 2*channelNum,wire)<<8 |
sandyr7 5:8c21994db8d2 56 getByte(DATA_OUT_BASE + 2*channelNum,wire) );
sandyr7 5:8c21994db8d2 57 //pc.printf("int code for accel value is %d\n",accVal);
sandyr7 5:8c21994db8d2 58 //pc.printf("float val is 1/100 of %d\n",(int16_t) 100*tmp/16384.0);
sandyr7 5:8c21994db8d2 59 delete(wire);
sandyr7 5:8c21994db8d2 60 accVal = (int16_t) (accVal*10000.0/16384.0);
sandyr7 5:8c21994db8d2 61 return accVal; //(int16_t) 100*tmp/16384.0;
sandyr7 5:8c21994db8d2 62 }
sandyr7 5:8c21994db8d2 63