Touch sensor example for NXP Rapid IoT prototyping kit. Read more at https://www.hackster.io/marcomerli/riotwear-mbed-2b2011.
main.cpp@80:0f41eaa54a9b, 2019-12-02 (annotated)
- 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?
User | Revision | Line number | New 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 | */ |