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

Committer:
AzqDev
Date:
Fri May 12 05:02:51 2017 +0000
Revision:
11:1a328b8ebbce
Child:
22:bcc69607eca2
added deviceType.h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AzqDev 11:1a328b8ebbce 1 #include "IQS62x.h"
AzqDev 11:1a328b8ebbce 2
AzqDev 11:1a328b8ebbce 3 // Function to configure/initialize the IQS624
AzqDev 11:1a328b8ebbce 4 // Uses the configuration data provided in "IQS624_Init.h"
AzqDev 11:1a328b8ebbce 5 // The file "IQS624_Init.h" can be created/exported by the Azoteq software tools
AzqDev 11:1a328b8ebbce 6 // The included version of "IQS624_Init.h" is a robust demo configuration
AzqDev 11:1a328b8ebbce 7 // More info on IQS624: http://www.azoteq.com/products/proxfusion/iqs624?mbed
AzqDev 11:1a328b8ebbce 8
AzqDev 11:1a328b8ebbce 9 #include "IQS624_Init.h"
AzqDev 11:1a328b8ebbce 10
AzqDev 11:1a328b8ebbce 11 void IQS62xIO::configure() {
AzqDev 11:1a328b8ebbce 12
AzqDev 11:1a328b8ebbce 13 /* Change the Prox Sensor Settings */
AzqDev 11:1a328b8ebbce 14 /* Memory Map Position 0x40 - 0x49 */
AzqDev 11:1a328b8ebbce 15 writeRegister( 0x40, PXS_SETTINGS_0 );
AzqDev 11:1a328b8ebbce 16 writeRegister( 0x41, PXS_SETTINGS_1 );
AzqDev 11:1a328b8ebbce 17 writeRegister( 0x42, PXS_SETTINGS_2 );
AzqDev 11:1a328b8ebbce 18 writeRegister( 0x43, PXS_SETTINGS_3 );
AzqDev 11:1a328b8ebbce 19 writeRegister( 0x44, PXS_SETTINGS_4 );
AzqDev 11:1a328b8ebbce 20 writeRegister( 0x45, PXS_SETTINGS_5 );
AzqDev 11:1a328b8ebbce 21 writeRegister( 0x46, PXS_SETTINGS_6 );
AzqDev 11:1a328b8ebbce 22 writeRegister( 0x47, PXS_SETTINGS_7 );
AzqDev 11:1a328b8ebbce 23 writeRegister( 0x48, PXS_SETTINGS_8 );
AzqDev 11:1a328b8ebbce 24 writeRegister( 0x49, PXS_SETTINGS_9 );
AzqDev 11:1a328b8ebbce 25
AzqDev 11:1a328b8ebbce 26 /* Change the Prox UI Settings */
AzqDev 11:1a328b8ebbce 27 /* Memory Map Position 0x50 - 0x54 */
AzqDev 11:1a328b8ebbce 28 writeRegister( 0x50, PXS_UI_SETTINGS_0 );
AzqDev 11:1a328b8ebbce 29 writeRegister( 0x51, PXS_UI_SETTINGS_1 );
AzqDev 11:1a328b8ebbce 30 writeRegister( 0x52, PXS_UI_SETTINGS_2 );
AzqDev 11:1a328b8ebbce 31 writeRegister( 0x53, PXS_UI_SETTINGS_3 );
AzqDev 11:1a328b8ebbce 32 writeRegister( 0x54, PXS_UI_SETTINGS_4 );
AzqDev 11:1a328b8ebbce 33
AzqDev 11:1a328b8ebbce 34 /* Change the HALL Sensor Settings */
AzqDev 11:1a328b8ebbce 35 /* Memory Map Position 0x70 - 0x7A */
AzqDev 11:1a328b8ebbce 36 writeRegister( 0x70, HALL_SETTINGS_0 );
AzqDev 11:1a328b8ebbce 37 writeRegister( 0x71, HALL_SETTINGS_1 );
AzqDev 11:1a328b8ebbce 38 writeRegister( 0x72, HALL_SETTINGS_2 );
AzqDev 11:1a328b8ebbce 39 writeRegister( 0x73, HALL_SETTINGS_3 );
AzqDev 11:1a328b8ebbce 40 writeRegister( 0x74, HALL_SETTINGS_4 );
AzqDev 11:1a328b8ebbce 41 writeRegister( 0x75, HALL_SETTINGS_5 );
AzqDev 11:1a328b8ebbce 42 writeRegister( 0x76, HALL_SETTINGS_6 );
AzqDev 11:1a328b8ebbce 43 writeRegister( 0x77, HALL_SETTINGS_7 );
AzqDev 11:1a328b8ebbce 44 writeRegister( 0x78, HALL_SETTINGS_8 );
AzqDev 11:1a328b8ebbce 45 writeRegister( 0x79, HALL_SETTINGS_9 );
AzqDev 11:1a328b8ebbce 46 writeRegister( 0x7a, HALL_SETTINGS_10 );
AzqDev 11:1a328b8ebbce 47
AzqDev 11:1a328b8ebbce 48 /* Change the Device & PMU Settings */
AzqDev 11:1a328b8ebbce 49 /* Memory Map Position 0xD0 - 0xD7 */
AzqDev 11:1a328b8ebbce 50 writeRegister( 0xd0, SYSTEM_SETTINGS );
AzqDev 11:1a328b8ebbce 51 writeRegister( 0xd1, ACTIVE_CHS );
AzqDev 11:1a328b8ebbce 52 writeRegister( 0xd2, PMU_SETTINGS );
AzqDev 11:1a328b8ebbce 53 writeRegister( 0xd3, REPORT_RATES_TIMINGS_0 );
AzqDev 11:1a328b8ebbce 54 writeRegister( 0xd4, REPORT_RATES_TIMINGS_1 );
AzqDev 11:1a328b8ebbce 55 writeRegister( 0xd5, REPORT_RATES_TIMINGS_2 );
AzqDev 11:1a328b8ebbce 56 writeRegister( 0xd6, REPORT_RATES_TIMINGS_3 );
AzqDev 11:1a328b8ebbce 57 writeRegister( 0xd7, REPORT_RATES_TIMINGS_4 );
AzqDev 11:1a328b8ebbce 58
AzqDev 11:1a328b8ebbce 59 }
AzqDev 11:1a328b8ebbce 60 // end of IQS624_Init.cpp