Version 3.0: Switching to newer LDC1614 which is placed on the same PCB.

Dependencies:   Bob DS1825 LDC1614 LDC1101 SDFileSystem mbed

Fork of Inductive_Sensor by Bob Giesberts

main.cpp

Committer:
bobgiesberts
Date:
2015-12-18
Revision:
2:1a203732fc95
Parent:
1:22c272515015
Child:
4:ae441c5727b9

File content as of revision 2:1a203732fc95:

#include "mbed.h"
#include "LDC1101.h"
#include "SDFileSystem.h"
#include "Bob.h"
#include <iostream>
using namespace std;

/**
* @file main.cpp
* @brief This file programs the processor for the inductive force sensor
* using the library LDC1101.h and LDC1101.cpp.
* - Red Led: processing communication with LDC1101
* - Green Led: processing SD card
*
* @author Bob Giesberts
*
* @date 2015-12-17
*/

Bob bob(PTB0, PTB1, PTC3, PTE0); // red led, green led, sd_enable, sd_present
Serial pc(USBTX, USBRX);

int main(void){
    
    /** --- Connection to LDC1101 --- */
    pc.printf("Connect to LDC1101...");
    LDC1101 ldc(PTC6, PTC7, PTC5, PTC4, 120E-12, 16E6);  // mosi, miso, sck, cs, capacitor (F), f_CLKIN (Hz)
    pc.printf("success!\r\n");
    bob.flash(2);
    wait(0.2);

    /** --- Connection to sensor --- */
    pc.printf("Connect to sensor...");
    if(ldc.get_LHR_Data() != 16777215)
    {
        pc.printf("success!\r\n");
        bob.flash_red(2);
    }else{
        pc.printf("failed!\r\n");
        bob.red();
    }

    /** --- Start measuring! --- */
    while(1)
    {
        clock_t t = clock();
        int L = ldc.get_LHR_Data();
        pc.printf("%.2f;%d\n", t/100.0, L);
        wait(0.05); // 20 Hz
    }



    
    
    
    /* let's leave this part out while calibrating the sensor

    // --- Connection to SD card --- 
    pc.printf("Connect to SD card...");
    if(bob.checkSD() == 1){
        pc.printf("success!\r\n");
    }else{
        pc.printf("failed!\r\n");
    }
     
    // Load SD File system
    SDFileSystem SD(PTD6, PTD7, PTD5, PTD4, "sd");  // mosi, miso, sclk, cs, sd_name

    // Open or create data file
    pc.printf("Opening data file...");
    mkdir("/sd/mydir", 0777);
    FILE *fp = fopen("/sd/data.txt", "w");
    if(fp != NULL) {
        pc.printf("success!\r\n");
    }else{
        pc.printf("failed!\r\n");
    }
    
    // Write current settings to data file
    fprintf(fp, "DIVIDER       :  %d\r\n", ldc.get_divider());
    fprintf(fp, "RESPONSETIME  :  %d\r\n", ldc.get_responsetime());
    fprintf(fp, "RP_MIN        :  %f\r\n", ldc.get_RPmin());
    fprintf(fp, "LHR_RCOUNT    :  %d\r\n", ldc.get_Rcount());
    fprintf(fp, "\r\n\r\n");
    fclose(fp); 



    while(1)
    {       
        clock_t t = clock();
             
        // get value from sensor
        int L = ldc.get_LHR_Data();
        
        // if the sensor is connected
        if(L != 16777215) {
            
            // settings
            pc.printf("ResponseTime: %d", ldc.get_responsetime());
            pc.printf(", Divider: %d", ldc.get_divider());
            pc.printf(", RP_MIN: %.0f", ldc.get_RPmin());
            pc.printf(", R_COUNT: %d", ldc.get_Rcount());
            pc.printf(", Q: %.2f", ldc.get_Q());
            pc.printf("\r\n");
            
            // results
            pc.printf("Time = %.2f", t/100.0);
            pc.printf(", L_DATA = %d", L);
            pc.printf(", f_sensor = %.2f MHz", ldc.get_fsensor()/1000000);
            pc.printf(", L = %.2f uH", 1000000*ldc.get_Inductance());
            pc.printf("\r\n");
            pc.printf("\r\n");
            
            
            // feedback: it's working
            bob.flash_red(1);
            
            
            // Store data on SD card
            if( bob.checkSD() == 1 ) {
                fp = fopen("/sd/data.txt", "a");
                //for(int i = 0; i < 100; i++){     Store one continuous stream of data, 30 seconds
                    fprintf(fp, "%.2f, ", t/100.0);
                    fprintf(fp, "%d\r\n", L);
                //}
                fclose(fp);
            }else{
                pc.printf("Error: SD card disconnected, please reinsert.\r\n");
                bob.green();    
            }
          
        }else{
            pc.printf("Error: Sensor disconnected, please reconnect.\r\n");
            bob.red();
        }

        
        // Telkens een periode van 10 - 30 seconden continue meten, dan een half uur pauze.
        // In die pauze alles op laagste vermogen (LDC1101 in shutdown modus, SD uit, leds uit)
        // ldc.sleep(); sd_pin = 0;
        // wait(1800); // FOR LATER: wait half an hour, 60 * 30 = 1800
        // ldc.wakeup(); sd_pin = 1;
        
    }
    */
}