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

Dependencies:   lib_sx9500

Revision:
80:0f41eaa54a9b
Parent:
79:0431b9fd3dc0
Child:
81:7a20aa99834e
--- a/main.cpp	Sat Nov 23 18:03:20 2019 +0000
+++ b/main.cpp	Mon Dec 02 19:04:59 2019 +0000
@@ -1,32 +1,93 @@
 #include "mbed.h"
-
-DigitalOut rgb_red(LED_RED, 1);       //     LED1 = LED_RED,  1 --> OFF, 0 --> ON
-DigitalOut rgb_blue(LED_BLUE, 1);     //     LED3 = LED_BLUE, 1 --> OFF, 0 --> ON
-DigitalOut rgb_green(PTE7,1);         //                      1 --> OFF, 0 --> ON
-
-void rgb_sel(int8_t idx) {
+#include "sx9500.h"
 
-switch(idx) {
-                case 0:
-                    rgb_red = 0; rgb_blue=1; rgb_green = 1;
-                    break;
-                case 1:
-                    rgb_red = 1; rgb_blue=0; rgb_green = 1;
-                    break;
-                case 2:
-                    rgb_red = 1; rgb_blue=1; rgb_green = 0;
-                    break;
-            }
-    
-}
+I2C i2c0(I2C_SDA , I2C_SCL );    // I2C_SCL = PTC10,  I2C_SDA = PTC11,
+SX9500 touch(i2c0, PTA24, PTA9); // TOUCH_TXEN = PTA24, TOUCH_INT = PTA9
+DigitalOut touch_rst(PTA2,1);    // TOUCH_RST = PTA2
 
 // main() runs in its own thread in the OS
 int main() {
-    int idx;
-    while (true) {
-        for(idx=0;idx<3;idx++) {
-            rgb_sel(idx);
+    
+    touch.reset();        
+    touch.set_active(true);
+    
+    wait(1);
+        
+    while (true) {      
+#if(1)          
+            char CSn;
+            for(CSn = 0; CSn < 3; CSn++) {
+                touch.print_sensor(CSn);
+                wait(0.25);
+            }
+#else                  
+            ////////////////////////////////////////////////////////////////////////////////
+            touch.RegProxCtrl0.octet = touch.read_single(SX9500_REG_PROXCTRL0);
+            touch.RegProxCtrl0.bits.sensor_en = 3;    // CS0 and CS1 on
+            touch.write(SX9500_REG_PROXCTRL0, touch.RegProxCtrl0.octet);
+            touch.write(SX9500_REG_PROXCTRL6, 1);  // threshold to 20 for CS1 release
+            touch.write(SX9500_REG_IRQMSK, 0x60);     // enable near and far interrupts
+            touch.set_active(true);
+            printf("RegProxCtrl0:%02x\r\n", touch.read_single(SX9500_REG_PROXCTRL0));    // sensor-enable and scan period
             wait(0.5);
-        }        
+#endif     
     }
-}
\ No newline at end of file
+}
+
+        /************************** sx9500... *************************************
+        else if (pcbuf[0] == '9' && pcbuf[1] == '5') {
+            if (pcbuf[2] == '?') {
+                printf("95R     reset\r\n");
+                printf("95.     read status\r\n");
+                printf("95t[%%d]   get/set PROXTHRESH\r\n");
+                printf("95s[%%d]   get/set SCANPERIOD\r\n");
+                printf("95a         toggle txen\r\n");
+            } else if (pcbuf[2] == '.') {
+                printf("(txen) active:%d\r\n", sx9500.get_active());
+                printf("RegStat:%02x\r\n", sx9500.read_single(SX9500_REG_STAT));
+                printf("RegProxCtrl0:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL0));
+                printf("RegProxCtrl1:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL1));
+                printf("RegProxCtrl2:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL2));
+                printf("RegProxCtrl3:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL3));
+                printf("RegProxCtrl4:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL4));
+                printf("RegProxCtrl5:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL5));
+                printf("RegProxCtrl6:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL6));
+            } else if (pcbuf[2] == 'a') {
+                if (sx9500.get_active()) {
+                    sx9500.set_active(false);
+                } else {
+                    sx9500.RegProxCtrl0.octet = sx9500.read_single(SX9500_REG_PROXCTRL0);
+                    sx9500.RegProxCtrl0.bits.sensor_en = 3;    // CS0 and CS1 on
+                    sx9500.write(SX9500_REG_PROXCTRL0, sx9500.RegProxCtrl0.octet);
+                    sx9500.write(SX9500_REG_PROXCTRL6, 1);  // threshold to 20 for CS1 release
+                    sx9500.write(SX9500_REG_IRQMSK, 0x60);     // enable near and far interrupts
+                    sx9500.set_active(true);
+                    printf("RegProxCtrl0:%02x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL0));    // sensor-enable and scan period
+                }
+                printf("(txen) active:%d\r\n", sx9500.get_active());
+            } else if (pcbuf[2] == 'R') {
+                sx9500.reset();
+            } else if (pcbuf[2] == 'i') {
+                if (pcbuf[3] != 0) {
+                    sscanf(pcbuf+3, "%x", &i);
+                    sx9500.write(SX9500_REG_IRQMSK, i);
+                }
+                printf("irqmsk:%02x\r\n", sx9500.read_single(SX9500_REG_IRQMSK));
+            } else if (pcbuf[2] == 't') {
+                if (pcbuf[3] >= '0' && pcbuf[3] <= '9') {
+                    sscanf(pcbuf+3, "%d", &i);
+                    sx9500.write(SX9500_REG_PROXCTRL6, i);           
+                }   
+                printf("proxthresh:0x%x\r\n", sx9500.read_single(SX9500_REG_PROXCTRL6));
+            } else if (pcbuf[2] == 'p') {
+                if (pcbuf[3] >= '0' && pcbuf[3] <= '9') {
+                    sscanf(pcbuf+2, "%d", &i);
+                    sx9500.RegProxCtrl0.bits.scan_period = i;
+                    sx9500.write(SX9500_REG_PROXCTRL0, sx9500.RegProxCtrl0.octet);
+                }
+                sx9500.RegProxCtrl0.octet = sx9500.read_single(SX9500_REG_PROXCTRL0);
+                printf("scan period:%d\r\n", sx9500.RegProxCtrl0.bits.scan_period);
+            }
+        } 
+        
+*/        
\ No newline at end of file