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

Dependencies:   lib_sx9500

main.cpp

Committer:
batman52
Date:
2019-12-02
Revision:
80:0f41eaa54a9b
Parent:
79:0431b9fd3dc0
Child:
81:7a20aa99834e

File content as of revision 80:0f41eaa54a9b:

#include "mbed.h"
#include "sx9500.h"

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() {
    
    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     
    }
}

        /************************** 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);
            }
        } 
        
*/