![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Power Grid Board Game Timer. Acts like a chess timer for 3-6 people. Uses an ADXL accelerometer to pause the timer and change players. Uses an LCD screen to prompt the players for input, read that input, and change between rounds.
Dependencies: DmTouch_UniGraphic UniGraphic-forLdelaney17FinalProject mbed
acc.cpp
- Committer:
- ldelaney17
- Date:
- 2017-01-25
- Revision:
- 5:e07903df9510
- Parent:
- 2:e6788e73de54
File content as of revision 5:e07903df9510:
#include "acc.h" void acc_init(float duration, float threshold, float gap, float window){ //acc = &connection; char durationByte, thresholdByte, gapByte, windowByte; //convert the function parameters from their respective units to the appropriate byte values durationByte = duration / 0.625; thresholdByte = threshold / 0.00625; gapByte = gap / 1.25; windowByte = window / 1.25; //set the config constants char acc_config_dataFormat[2] = {0x31,0x0b}; //measurement range char acc_config_powerControl[2] = {0x2d,0x08}; char acc_config_tapThreshold[2] = {0x1d,thresholdByte}; char acc_config_tapDuration[2] = {0x21,durationByte}; char acc_config_latentGap[2] = {0x22,gapByte}; char acc_config_window[2] = {0x23,windowByte}; char acc_config_enableAxis[2] = {0x2a,0x07}; char acc_config_intEnable[2] = {0x2e,0x60}; char acc_config_intMap[2] = {0x2f,0x60}; //set the configuration connection.write(addr_acc, acc_config_dataFormat, 2); //full measurement range wait(.05); connection.write(addr_acc, acc_config_tapDuration, 2); wait(.05); connection.write(addr_acc, acc_config_tapThreshold, 2); wait(.05); connection.write(addr_acc, acc_config_latentGap, 2); wait(.05); connection.write(addr_acc, acc_config_window, 2); wait(.05); connection.write(addr_acc, acc_config_enableAxis, 2); wait(.05); connection.write(addr_acc, acc_config_intEnable, 2); wait(.05); connection.write(addr_acc, acc_config_intMap, 2); wait(.05); connection.write(addr_acc, acc_config_powerControl, 2); // measure mode wait(.05); } char get_int_type(){ char int_source_arr[2] = {0x30|0x80, 0x00}; connection.write(addr_acc, int_source_arr, 1); //set up the connection for reading from int_source char acc_data[1]; connection.read(addr_acc, acc_data, 1); //read the int_source byte //pc.printf("%x\t",acc_data[0]&0x60); //this was used for debugging if(acc_data[0] & 0x20) //if a double tap, return 2 return 2; else if (acc_data[0] & 0x40) //if a single tap, return 1 return 1; //this code should never be reached, but is included so that there is an appropriate exit path return 0; }