Main Page | Directories | File List | Globals | Examples

analogue_in.c

This is an example of how to use the AnalogInput device to read out analog values.

#include <bluesense.h>
#include <stdlib.h>
#include <stdio.h>



int main(int argc, char **argv) {
        // allocate memory for an interface table and resigster a known device interfaces
        bsDeviceInterface_registeredDeviceInterfaces_t registered = 
                bsDeviceInterface_allocInterfaceTable();
        
        // allocate memory of a device table and open a master device
        bsDeviceTable_table_t devices = 
                bsDeviceTable_allocDeviceTable();
        bsMaster_device_t master = 
                bsMaster_allocMaster(registered,devices,0);

#if 0
        // connect to the ethernet router
        bsMaster_addIPAddress(master, "1269", "admin", "admin");
#endif

        
        // try to find our device within the next 5 seconds
        bsDeviceTable_deviceInfo_t adev = 
                bsMaster_detectDevice(master, 1579, 5 * 1000 * 1000);

        bsDeviceTable_deviceInfo_t ddev = 
                bsMaster_detectDevice(master, 1594, 5 * 1000 * 1000);


        bsDeviceTable_deviceInfo_t sdev = 
                bsMaster_detectDevice(master, 1613, 5 * 1000 * 1000);


        // setup analogue input for 2.56V, 5 samples/sec and 10-bits resolution
        bsAdcInputDevice_specifics_t adcDev = 
                bsAdcInputDevice_getDeviceSpecifics(adev);
        bsAdcInputDevice_requestSetConfiguration(adcDev, 256, 10, 8);

        bsOCOutputDevice_specifics_t ocoDev = 
                bsOCOutputDevice_getDeviceSpecifics(ddev);
        bsStepperDevice_specifics_t stpDev = 
                bsStepperDevice_getDeviceSpecifics(sdev);
        
        bsStepperDevice_requestSetConfig(stpDev, 900,0,0,0,0);
        
        fflush(stdout);
                        

        // start showing analogue state
        uint16_t last;
        uint32_t prevASyncYield = 0;
        uint8_t spena = 0;
        for(last = 0;;) {
                // check if analogue state changed
                uint16_t v1 = bsAdcInputDevice_getLastSampledInput(adcDev, 0);
                uint16_t v2 = bsAdcInputDevice_getLastSampledInput(adcDev, 1);
                if (v1!=0) {    
                        if (v1!=last) {
                        printf("Input %u %u %u \n",  v1,v2,v1+v2);
                        fflush(stdout);
                          last = v1;
                        uint8_t nsp = (v1+v2)>100;
                        
                        //if (spena!=nsp) {
                                spena = nsp;
                        //      bsOCOutputDevice_requestSetOutput(ocoDev,1,spena);
                                //bsOCOutputDevice_requestSetPWMDutyCycle(ocoDev,1,v1);
                                int8_t v = v1;
                                bsStepperDevice_requestSetSpeed(stpDev, v);
                        //}
                        }
                }
                prevASyncYield = bsMaster_aSyncYield(master,2000,prevASyncYield);
        }

        // clean up previously allocated memory
        bsMaster_freeMaster(master);
        bsDeviceTable_freeDeviceTable(devices);
        bsDeviceInterface_freeInterfaceTable(registered);
        return(0);
}       


Generated on Mon Jan 21 17:51:55 2008 for BlueSense by  doxygen 1.4.4