dhgdh
Dependencies: MAX44000 PWM_Tone_Library nexpaq_mdk
Fork of LED_Demo by
main.cpp
- Committer:
- cyberjoey
- Date:
- 2016-10-22
- Revision:
- 9:6bb35cef007d
- Parent:
- 8:782d1dcdfd94
File content as of revision 9:6bb35cef007d:
#include "mbed.h" #include "nexpaq_mdk.h" #include "MAX44000.h" #include "pwm_tone.h" //MAX44000 max44000(P1_6, P1_7); //i2c code goes here//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// I2C i2c(P1_6,P1_7); PwmOut ledR(P2_4); PwmOut ledG(P2_5); PwmOut ledB(P2_6); PwmOut Buzzer(P1_2); DigitalIn button(P0_1, PullUp); //DigitalOut buz(P0_0); //int buzzing=0; /***** Definitions *****/ #define FUNCTION_TABLE_NUM 1 #define UUID_NUM 16 //UUID number is 16, don't change it #define LOOP_DELAY 100 #define PROX_THRESHOLD 50 /***** Globals *****/ void my_function_CMD_2700(unsigned char *pData, unsigned char len); const MDK_REGISTER_CMD my_cmd_func_table[FUNCTION_TABLE_NUM] = { {0x2700, my_function_CMD_2700}, // Command -> function }; int buzzing=0; //int lastPrx = 0; int toggle = 0; unsigned char prxPress = 0x02; int lastBtn = 1; unsigned char btnPress = 0x01; /***** Functions *****/ void my_function_CMD_2700(unsigned char *pData, unsigned char len) { unsigned char response = 0x00; ledR = 1.0f - (pData[0] / 255.0f); ledG = 1.0f - (pData[1] / 255.0f); ledB = 1.0f - (pData[2] / 255.0f); toggle = pData[0]; np_api_upload(0x2701, &response, 1); } int i2c_read_gesture(char gestReg) { char readVal; //char gestReg; //gestReg = 0x04; i2c.write( 0x20, &gestReg, 1 ); i2c.read( 0x20, &readVal, 1 ); //perform cast here return( readVal ); } /******************************************************************************/ void app_setup() { if ( np_api_register((MDK_REGISTER_CMD*)my_cmd_func_table, FUNCTION_TABLE_NUM) == MDK_REGISTER_FAILD ) { // Register failed handle code error("MDK Register Failed"); } //max44000.init(MAX44000::MODE_ALS_PROX, MAX44000::ALSTIM_64X, MAX44000::ALSPGA_1X, MAX44000::DRV_110); ledR = 1.0f; ledG = 1.0f; ledB = 1.0f; //buz = 0; } void app_loop() { float A_4 = 1000000/Do4; //int proxData = max44000.readReg(MAX44000::REG_PRX_DATA); int gesture = i2c_read_gesture(0x04); if(!buzzing){ if (gesture == 0x01) { if (!toggle) { np_api_upload(0x2800, &prxPress, 1); //int dummy = i2c_read_gesture(0x0a); //Stop_tunes(Buzzer); } toggle = 1; } else if (gesture == 0x02) { if(toggle){ np_api_upload(0x2800, &prxPress, 1); } toggle = 0;} if(toggle){ int distance = i2c_read_gesture(0x0a); if(distance<60){ buzzing =1;} } if (!button && lastBtn) { np_api_upload(0x2800, &btnPress, 1); } } lastBtn = button; if(buzzing){ Tune(Buzzer, A_4, 4); //4 Octave C beat 4/16 } if(buzzing &&!toggle){ buzzing=0; //np_api_upload(0x2800, &prxPress, 1); //toggle = 1; } } int main(void) { np_api_init(); app_setup(); np_api_start(); while(1) { Thread::wait(LOOP_DELAY); app_loop(); np_api_bsl_chk(); } return 0; }