Touch sensor example for NXP Rapid IoT prototyping kit. Read more at https://www.hackster.io/marcomerli/riotwear-mbed-2b2011.

Dependencies:   lib_sx9500

Committer:
batman52
Date:
Mon Dec 02 19:04:59 2019 +0000
Revision:
80:0f41eaa54a9b
Parent:
79:0431b9fd3dc0
Child:
81:7a20aa99834e
Touch sensor example for NXP Rapid IoT prototyping kit based on hexiwear SDK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jonathan Austin 0:2757d7abb7d9 1 #include "mbed.h"
batman52 80:0f41eaa54a9b 2 #include "sx9500.h"
batman52 79:0431b9fd3dc0 3
batman52 80:0f41eaa54a9b 4 I2C i2c0(I2C_SDA , I2C_SCL ); // I2C_SCL = PTC10, I2C_SDA = PTC11,
batman52 80:0f41eaa54a9b 5 SX9500 touch(i2c0, PTA24, PTA9); // TOUCH_TXEN = PTA24, TOUCH_INT = PTA9
batman52 80:0f41eaa54a9b 6 DigitalOut touch_rst(PTA2,1); // TOUCH_RST = PTA2
Jonathan Austin 0:2757d7abb7d9 7
Jonathan Austin 1:846c97078558 8 // main() runs in its own thread in the OS
Jonathan Austin 0:2757d7abb7d9 9 int main() {
batman52 80:0f41eaa54a9b 10
batman52 80:0f41eaa54a9b 11 touch.reset();
batman52 80:0f41eaa54a9b 12 touch.set_active(true);
batman52 80:0f41eaa54a9b 13
batman52 80:0f41eaa54a9b 14 wait(1);
batman52 80:0f41eaa54a9b 15
batman52 80:0f41eaa54a9b 16 while (true) {
batman52 80:0f41eaa54a9b 17 #if(1)
batman52 80:0f41eaa54a9b 18 char CSn;
batman52 80:0f41eaa54a9b 19 for(CSn = 0; CSn < 3; CSn++) {
batman52 80:0f41eaa54a9b 20 touch.print_sensor(CSn);
batman52 80:0f41eaa54a9b 21 wait(0.25);
batman52 80:0f41eaa54a9b 22 }
batman52 80:0f41eaa54a9b 23 #else
batman52 80:0f41eaa54a9b 24 ////////////////////////////////////////////////////////////////////////////////
batman52 80:0f41eaa54a9b 25 touch.RegProxCtrl0.octet = touch.read_single(SX9500_REG_PROXCTRL0);
batman52 80:0f41eaa54a9b 26 touch.RegProxCtrl0.bits.sensor_en = 3; // CS0 and CS1 on
batman52 80:0f41eaa54a9b 27 touch.write(SX9500_REG_PROXCTRL0, touch.RegProxCtrl0.octet);
batman52 80:0f41eaa54a9b 28 touch.write(SX9500_REG_PROXCTRL6, 1); // threshold to 20 for CS1 release
batman52 80:0f41eaa54a9b 29 touch.write(SX9500_REG_IRQMSK, 0x60); // enable near and far interrupts
batman52 80:0f41eaa54a9b 30 touch.set_active(true);
batman52 80:0f41eaa54a9b 31 printf("RegProxCtrl0:%02x\r\n", touch.read_single(SX9500_REG_PROXCTRL0)); // sensor-enable and scan period
batman52 79:0431b9fd3dc0 32 wait(0.5);
batman52 80:0f41eaa54a9b 33 #endif
Jonathan Austin 0:2757d7abb7d9 34 }
batman52 80:0f41eaa54a9b 35 }
batman52 80:0f41eaa54a9b 36
batman52 80:0f41eaa54a9b 37 /************************** sx9500... *************************************
batman52 80:0f41eaa54a9b 38 else if (pcbuf[0] == '9' && pcbuf[1] == '5') {
batman52 80:0f41eaa54a9b 39 if (pcbuf[2] == '?') {
batman52 80:0f41eaa54a9b 40 printf("95R reset\r\n");
batman52 80:0f41eaa54a9b 41 printf("95. read status\r\n");
batman52 80:0f41eaa54a9b 42 printf("95t[%%d] get/set PROXTHRESH\r\n");
batman52 80:0f41eaa54a9b 43 printf("95s[%%d] get/set SCANPERIOD\r\n");
batman52 80:0f41eaa54a9b 44 printf("95a toggle txen\r\n");
batman52 80:0f41eaa54a9b 45 } else if (pcbuf[2] == '.') {
batman52 80:0f41eaa54a9b 46 printf("(txen) active:%d\r\n", sx9500.get_active());
batman52 80:0f41eaa54a9b 47 printf("RegStat:%02x\r\n", sx9500.read_single(SX9500_REG_STAT));
batman52 80:0f41eaa54a9b 48 printf("RegProxCtrl0:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL0));
batman52 80:0f41eaa54a9b 49 printf("RegProxCtrl1:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL1));
batman52 80:0f41eaa54a9b 50 printf("RegProxCtrl2:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL2));
batman52 80:0f41eaa54a9b 51 printf("RegProxCtrl3:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL3));
batman52 80:0f41eaa54a9b 52 printf("RegProxCtrl4:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL4));
batman52 80:0f41eaa54a9b 53 printf("RegProxCtrl5:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL5));
batman52 80:0f41eaa54a9b 54 printf("RegProxCtrl6:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL6));
batman52 80:0f41eaa54a9b 55 } else if (pcbuf[2] == 'a') {
batman52 80:0f41eaa54a9b 56 if (sx9500.get_active()) {
batman52 80:0f41eaa54a9b 57 sx9500.set_active(false);
batman52 80:0f41eaa54a9b 58 } else {
batman52 80:0f41eaa54a9b 59 sx9500.RegProxCtrl0.octet = sx9500.read_single(SX9500_REG_PROXCTRL0);
batman52 80:0f41eaa54a9b 60 sx9500.RegProxCtrl0.bits.sensor_en = 3; // CS0 and CS1 on
batman52 80:0f41eaa54a9b 61 sx9500.write(SX9500_REG_PROXCTRL0, sx9500.RegProxCtrl0.octet);
batman52 80:0f41eaa54a9b 62 sx9500.write(SX9500_REG_PROXCTRL6, 1); // threshold to 20 for CS1 release
batman52 80:0f41eaa54a9b 63 sx9500.write(SX9500_REG_IRQMSK, 0x60); // enable near and far interrupts
batman52 80:0f41eaa54a9b 64 sx9500.set_active(true);
batman52 80:0f41eaa54a9b 65 printf("RegProxCtrl0:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL0)); // sensor-enable and scan period
batman52 80:0f41eaa54a9b 66 }
batman52 80:0f41eaa54a9b 67 printf("(txen) active:%d\r\n", sx9500.get_active());
batman52 80:0f41eaa54a9b 68 } else if (pcbuf[2] == 'R') {
batman52 80:0f41eaa54a9b 69 sx9500.reset();
batman52 80:0f41eaa54a9b 70 } else if (pcbuf[2] == 'i') {
batman52 80:0f41eaa54a9b 71 if (pcbuf[3] != 0) {
batman52 80:0f41eaa54a9b 72 sscanf(pcbuf+3, "%x", &i);
batman52 80:0f41eaa54a9b 73 sx9500.write(SX9500_REG_IRQMSK, i);
batman52 80:0f41eaa54a9b 74 }
batman52 80:0f41eaa54a9b 75 printf("irqmsk:%02x\r\n", sx9500.read_single(SX9500_REG_IRQMSK));
batman52 80:0f41eaa54a9b 76 } else if (pcbuf[2] == 't') {
batman52 80:0f41eaa54a9b 77 if (pcbuf[3] >= '0' && pcbuf[3] <= '9') {
batman52 80:0f41eaa54a9b 78 sscanf(pcbuf+3, "%d", &i);
batman52 80:0f41eaa54a9b 79 sx9500.write(SX9500_REG_PROXCTRL6, i);
batman52 80:0f41eaa54a9b 80 }
batman52 80:0f41eaa54a9b 81 printf("proxthresh:0x%x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL6));
batman52 80:0f41eaa54a9b 82 } else if (pcbuf[2] == 'p') {
batman52 80:0f41eaa54a9b 83 if (pcbuf[3] >= '0' && pcbuf[3] <= '9') {
batman52 80:0f41eaa54a9b 84 sscanf(pcbuf+2, "%d", &i);
batman52 80:0f41eaa54a9b 85 sx9500.RegProxCtrl0.bits.scan_period = i;
batman52 80:0f41eaa54a9b 86 sx9500.write(SX9500_REG_PROXCTRL0, sx9500.RegProxCtrl0.octet);
batman52 80:0f41eaa54a9b 87 }
batman52 80:0f41eaa54a9b 88 sx9500.RegProxCtrl0.octet = sx9500.read_single(SX9500_REG_PROXCTRL0);
batman52 80:0f41eaa54a9b 89 printf("scan period:%d\r\n", sx9500.RegProxCtrl0.bits.scan_period);
batman52 80:0f41eaa54a9b 90 }
batman52 80:0f41eaa54a9b 91 }
batman52 80:0f41eaa54a9b 92
batman52 80:0f41eaa54a9b 93 */