Ultra Low Power (5uA) 2D Rotating Magnetic Angle Sensor + Touch + Inductive Proximity (Metal Detect)

Dependencies:   IQS62x IQSDisplayTerminal mbed

IQS624 Hello World

Ultra Low Power (5uA) I2C ProxFusion™ sensor for 2D Magnetic Angle + Touch + Proximity

/media/uploads/AzqDev/iqs624-and-lpc1768-tiny.gif
IQS624 connected to mbed LPC1768. The five wires are - 2x I2C, 2x Power, 1x RDY.
You can get get a low cost (<$10) evaluation kit containing the small board shown above (cables & LPC1768 not included) from Mouser - http://bit.ly/IQS624-Eval-Kit-Mouser

IQS624 Information

Azoteq IQS624 is an ultra low power (5uA) I2C sensor for 2D Rotating Magnetic Fields, Capactive Touch and Inductive Proximity.
Designed for next generation user interfaces.

Data sheet & eval kit info: http://www.azoteq.com/products/proxfusion/iqs624?mbed

IQS624 mbed Component Link

Components / IQS624
Ultra low power sensor for rotating magnetic field, capacitive touch, and inductive proximity. Empowers next-generation user interfaces.

IQS624 Pinout

/media/uploads/AzqDev/iqs624-5-pinout-for-i2c-ultra-low-power-sensor-with-2d-magnetic-angle-capacitive-touch-inductive.gif

IQS624 Data Sheet & Evaluation Kit Information


http://www.azoteq.com/products/proxfusion/iqs624?mbed

IQS624 Interconnection

/media/uploads/AzqDev/iqs624-3-connect-mbed-i2c-ultra-low-power-sensor-with-2d-magnetic-angle-capacitive-touch.gif
/media/uploads/AzqDev/iqs624-and-teensy-tiny.gif
IQS624 connected to mbed Teensy 3.1 (actually Teensy 3.2) using 5 wires - 2x I2C, 2x Power, 1x RDY.

IQS624 YouTube Links


IQS624 1-minute YouTube video: http://bit.ly/IQS624Video

ProxFusion for active pens: https://youtu.be/tUImswNPQY4

IQS624_Init/IQS624_Init.cpp

Committer:
AzqDev
Date:
2018-01-23
Revision:
30:e644a57c1692
Parent:
22:bcc69607eca2

File content as of revision 30:e644a57c1692:

#include "IQS62x.h"

// Function to configure/initialize the IQS624
// Uses the configuration data provided in "IQS624_Init.h"
// The file "IQS624_Init.h" can be created/exported by the Azoteq software tools
// The included version of "IQS624_Init.h" is a robust demo configuration
// More info on IQS624: http://www.azoteq.com/products/proxfusion/iqs624?mbed

#include "IQS624_Init.h"

void IQS62xIO::configure() {

/* Change the Prox Sensor Settings */
/* Memory Map Position 0x40 - 0x49 */
  writeRegister( 0x40,  PXS_SETTINGS_0     );
  writeRegister( 0x41,  PXS_SETTINGS_1     );
  writeRegister( 0x42,  PXS_SETTINGS_2     );      
  writeRegister( 0x43,  PXS_SETTINGS_3     );
  writeRegister( 0x44,  PXS_SETTINGS_4     );
  writeRegister( 0x45,  PXS_SETTINGS_5     );
  writeRegister( 0x46,  PXS_SETTINGS_6     );     
  writeRegister( 0x47,  PXS_SETTINGS_7     );
  writeRegister( 0x48,  PXS_SETTINGS_8     );
  writeRegister( 0x49,  PXS_SETTINGS_9     );     

/* Change the Prox UI Settings */
/* Memory Map Position 0x50 - 0x54 */
  writeRegister( 0x50,  PXS_UI_SETTINGS_0  );
  writeRegister( 0x51,  PXS_UI_SETTINGS_1  );
  writeRegister( 0x52,  PXS_UI_SETTINGS_2  );
  writeRegister( 0x53,  PXS_UI_SETTINGS_3  );
  writeRegister( 0x54,  PXS_UI_SETTINGS_4  );

/* Change the HALL Sensor Settings */
/* Memory Map Position 0x70 - 0x7A */
  writeRegister( 0x70,  HALL_SETTINGS_0    );
  writeRegister( 0x71,  HALL_SETTINGS_1    );
  writeRegister( 0x72,  HALL_SETTINGS_2    );
  writeRegister( 0x73,  HALL_SETTINGS_3    );
  writeRegister( 0x74,  HALL_SETTINGS_4    );
  writeRegister( 0x75,  HALL_SETTINGS_5    );
  writeRegister( 0x76,  HALL_SETTINGS_6    );
  writeRegister( 0x77,  HALL_SETTINGS_7    );
  writeRegister( 0x78,  HALL_SETTINGS_8    );
  writeRegister( 0x79,  HALL_SETTINGS_9    );
  writeRegister( 0x7a,  HALL_SETTINGS_10   );           

/* Change the Device & PMU Settings */
/* Memory Map Position 0xD0 - 0xD7 */
  writeRegister( 0xd0,  SYSTEM_SETTINGS        );
  writeRegister( 0xd1,  ACTIVE_CHS             );            
  writeRegister( 0xd2,  PMU_SETTINGS           );
  writeRegister( 0xd3,  REPORT_RATES_TIMINGS_0 );    
  writeRegister( 0xd4,  REPORT_RATES_TIMINGS_1 );
  writeRegister( 0xd5,  REPORT_RATES_TIMINGS_2 );
  writeRegister( 0xd6,  REPORT_RATES_TIMINGS_3 );
  // NO 0xd7 in data sheet....    writeRegister( 0xd7,  REPORT_RATES_TIMINGS_4 );

}
// end of IQS624_Init.cpp