Dectection take 1. Fixed adaptation step. Detect based on a number of standard deviations away from the mean.

Dependencies:   SI1143 m3pi mbed

Fork of Proximity_Sensor_2_detect by MF Doom

main.cpp

Committer:
mfillinois
Date:
2014-06-16
Revision:
6:f2c616fa9ffe
Parent:
5:b77b678ed22f
Child:
7:73a722360cdb

File content as of revision 6:f2c616fa9ffe:


#include "mbed.h"
#include "SI1143.h"
#include "m3pi.h"

//DigitalOut enable(p30);

//Ticker timer;

I2C* i2c = new I2C(p28, p27);
Serial bt(p13, p14);
m3pi pi;

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

InterruptIn event(p26);

SI1143 sensor1(i2c, p30, p29, 0x01);
//SI1143 sensor2(i2c, p25, p26, 0x02); // p25, p26

//InterruptIn prox_meas(p26); //26
int sense1a, sense1b, sense2a, sense2b;
//int NN = 500;
int sensor1alog[500];
int sensor1blog[500];
int whileflag = 1;

//int total = 1000;
int countingstuffpoop = 0;

void meas_int()
{
    led1 = 1;
    sense1a = sensor1.read_ps1();
    sense1b = sensor1.read_ps2();
    //sense2a = sensor2.get_ps1(1);
    //sense2b = sensor2.get_ps2(1);
    //bt.printf("%d,  %d;\r\n",sense1a, sense1b);
    //wait(0.001);

    countingstuffpoop++;
    if(countingstuffpoop < 500)
    {
        led4 = 0;
        sensor1alog[countingstuffpoop-1] = sense1a;
        sensor1blog[countingstuffpoop-1] = sense1b;
    }
    else
    {
        __disable_irq(); 
        whileflag = 0;
    }

    sensor1.clear_int();
    led1 = 0;
}

int main()
{
    // Setup the baseline
    //sensor1.restart(i2c, 0x01);
    //printf("%d    ",sensor1.adrs);
    //sensor2.restart(i2c, 0x02);
    //printf("%d\r\n",sensor2.adrs);
    led2 = 0;
    wait(10);

    event.fall(&meas_int);
    //timer.attach(&meas_int, 0.01);
    sensor1.start_ps_auto();
    led4 = 1;
    pi.left(0.1);

    while(whileflag)
    {
        // Read each led sensor
        //sense1 = sensor.get_ps1(1);

        //Numeriacl output through terminal
        led1 = 0;
        led2 = 0;
    }
    
    pi.stop();
    led1 = 1;
    wait(0.3);
    led1 = 0;
    wait(0.3);
    led1 = 1;
    bt.printf("d = [");
    for (int i = 0; i < 500; i++)
    {
        bt.printf("%d,  %d;\r\n", sensor1alog[i], sensor1blog[i]);
        //bt.printf("%d;\r\n", sensorlog[i]);
    }
    bt.printf("0, 0];");
    led1 = 1;
    wait(0.3);
    led1 = 0;
    wait(0.3);
    led1 = 1;
}