nexpaq development module demo for MAX3010x sensor

Dependencies:   MAX30105 nexpaq_mdk

Fork of ALS_Prox_Demo by nexpaq

Temp Prox Demo

MAX32625NEXPAQ development module

This project is a demonstration application for the MAX32625NEXPAQ development module and a MAX3010x sensor.

This project demonstrates polling the proximity sensor to use it like a button and also polling the temperature sensor and sending the information back to the application running on the phone, and the phone controlling the threshold for the proximity sensor and controlling the on board RGB LED to create different colors.

nexpaq App Tile Files

temp_prox_demo.zip

Committer:
nexpaq
Date:
Mon Sep 19 14:50:49 2016 +0000
Revision:
5:7d8e69b1d3b6
Parent:
4:494741f7f5b2
Child:
6:eb5c0139e5db
Committing for event

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nexpaq 0:b86eda0e990d 1 #include "mbed.h"
nexpaq 0:b86eda0e990d 2 #include "nexpaq_mdk.h"
nexpaq 5:7d8e69b1d3b6 3 #include "MAX44000.h"
nexpaq 0:b86eda0e990d 4
jowen 2:3842948024ca 5 #ifdef __cplusplus
jowen 2:3842948024ca 6 extern "C" {
jowen 2:3842948024ca 7 #endif
jowen 2:3842948024ca 8 extern volatile uint8_t flag_jump_bsl;
jowen 2:3842948024ca 9 #ifdef __cplusplus
jowen 2:3842948024ca 10 }
jowen 2:3842948024ca 11 #endif
nexpaq 5:7d8e69b1d3b6 12
nexpaq 5:7d8e69b1d3b6 13 MAX44000 max44000(P1_6, P1_7);
nexpaq 0:b86eda0e990d 14 DigitalOut ledR(P2_4, LED_OFF);
nexpaq 0:b86eda0e990d 15 DigitalOut ledG(P2_5, LED_OFF);
nexpaq 0:b86eda0e990d 16 DigitalOut ledB(P2_6, LED_OFF);
nexpaq 0:b86eda0e990d 17 DigitalIn button(P0_1, PullUp);
nexpaq 0:b86eda0e990d 18
nexpaq 0:b86eda0e990d 19 /***** Definitions *****/
nexpaq 0:b86eda0e990d 20 #define FUNCTION_TABLE_NUM 1
nexpaq 0:b86eda0e990d 21 #define UUID_NUM 16 //UUID number is 16, don't change it
nexpaq 4:494741f7f5b2 22 #define LOOP_DELAY 100
nexpaq 5:7d8e69b1d3b6 23 #define PROX_THRESHOLD 50
nexpaq 0:b86eda0e990d 24
nexpaq 0:b86eda0e990d 25 /***** Globals *****/
nexpaq 0:b86eda0e990d 26 void my_function_CMD_2700(unsigned char *pData, unsigned char len);
nexpaq 0:b86eda0e990d 27 const MDK_REGISTER_CMD my_cmd_func_table[FUNCTION_TABLE_NUM] = {
nexpaq 0:b86eda0e990d 28 {0x2700, my_function_CMD_2700}, // Command -> function
nexpaq 0:b86eda0e990d 29 };
nexpaq 0:b86eda0e990d 30
nexpaq 5:7d8e69b1d3b6 31 int lastPrx = 0;
nexpaq 5:7d8e69b1d3b6 32 unsigned char prxPress = 0x02;
gsteiert 3:9d15891f9352 33 int lastBtn = 1;
nexpaq 0:b86eda0e990d 34 unsigned char btnPress = 0x01;
nexpaq 0:b86eda0e990d 35
nexpaq 0:b86eda0e990d 36 /***** Functions *****/
nexpaq 0:b86eda0e990d 37 void my_function_CMD_2700(unsigned char *pData, unsigned char len){
nexpaq 0:b86eda0e990d 38 unsigned char response = 0x00;
nexpaq 0:b86eda0e990d 39 ledR = (pData[0]>0) ? LED_ON : LED_OFF ;
nexpaq 0:b86eda0e990d 40 ledG = (pData[1]>0) ? LED_ON : LED_OFF ;
nexpaq 0:b86eda0e990d 41 ledB = (pData[2]>0) ? LED_ON : LED_OFF ;
nexpaq 0:b86eda0e990d 42 np_api_upload(0x2701, &response, 1);
nexpaq 0:b86eda0e990d 43 }
nexpaq 0:b86eda0e990d 44
nexpaq 0:b86eda0e990d 45 /******************************************************************************/
nexpaq 0:b86eda0e990d 46 void app_setup(){
nexpaq 0:b86eda0e990d 47 if ( np_api_register((MDK_REGISTER_CMD*)my_cmd_func_table, FUNCTION_TABLE_NUM) == MDK_REGISTER_FAILD ) {
nexpaq 0:b86eda0e990d 48 // Register failed handle code
nexpaq 0:b86eda0e990d 49 error("MDK Register Failed");
nexpaq 0:b86eda0e990d 50 }
nexpaq 5:7d8e69b1d3b6 51 max44000.init(MAX44000::MODE_ALS_PROX, MAX44000::ALSTIM_64X, MAX44000::ALSPGA_1X, MAX44000::DRV_110);
nexpaq 0:b86eda0e990d 52 }
nexpaq 0:b86eda0e990d 53
nexpaq 0:b86eda0e990d 54 void app_loop() {
nexpaq 5:7d8e69b1d3b6 55 int proxData = max44000.readReg(MAX44000::REG_PRX_DATA);
nexpaq 5:7d8e69b1d3b6 56 if (proxData > PROX_THRESHOLD) {
nexpaq 5:7d8e69b1d3b6 57 if (!lastPrx) {
nexpaq 5:7d8e69b1d3b6 58 np_api_upload(0x2800, &prxPress, 1);
nexpaq 5:7d8e69b1d3b6 59 }
nexpaq 5:7d8e69b1d3b6 60 lastPrx = 1;
nexpaq 5:7d8e69b1d3b6 61 } else {
nexpaq 5:7d8e69b1d3b6 62 lastPrx = 0;
nexpaq 5:7d8e69b1d3b6 63 }
nexpaq 5:7d8e69b1d3b6 64
gsteiert 3:9d15891f9352 65 if (!button && lastBtn) {
gsteiert 3:9d15891f9352 66 np_api_upload(0x2800, &btnPress, 1);
gsteiert 3:9d15891f9352 67 }
gsteiert 3:9d15891f9352 68 lastBtn = button;
nexpaq 0:b86eda0e990d 69 }
nexpaq 0:b86eda0e990d 70
nexpaq 0:b86eda0e990d 71 int main(void){
jowen 2:3842948024ca 72
nexpaq 0:b86eda0e990d 73 np_api_init();
nexpaq 0:b86eda0e990d 74 app_setup();
nexpaq 0:b86eda0e990d 75 np_api_start();
nexpaq 5:7d8e69b1d3b6 76
nexpaq 0:b86eda0e990d 77 while(1){
gsteiert 3:9d15891f9352 78 Thread::wait(LOOP_DELAY);
nexpaq 0:b86eda0e990d 79 app_loop();
nexpaq 0:b86eda0e990d 80 np_api_bsl_chk();
nexpaq 0:b86eda0e990d 81 }
jowen 2:3842948024ca 82
nexpaq 0:b86eda0e990d 83 return 0;
nexpaq 0:b86eda0e990d 84 }
nexpaq 0:b86eda0e990d 85