lib for realtimeMM funcs

Fork of realtimeMMLib by Graham Nicholson

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers sensor_base.h Source File

sensor_base.h

00001 #pragma once
00002 #include "mbed.h"
00003 #include "qeihw.h"
00004 #include "QEIx4.h"
00005 #include <cstdint>
00006 
00007 
00008 
00009 class sensor_base
00010 {
00011 public:
00012     sensor_base();
00013     ~sensor_base();
00014     int sensor_id;
00015     int sensor_type;
00016     char data_sample[50];
00017     virtual char * read_data();
00018     bool enabled;
00019 };
00020 
00021 
00022 class sensor_onoff : public sensor_base
00023 {
00024 public:
00025     //sensor_base();
00026     sensor_onoff();
00027     sensor_onoff(PinName);
00028     ~sensor_onoff();
00029     DigitalIn din;
00030     virtual char * read_data();
00031     char data_sample[50];
00032 };
00033 
00034 
00035 class sensor_vin : public sensor_base
00036 {
00037 public:
00038     sensor_vin();
00039     sensor_vin(PinName);
00040     ~sensor_vin();
00041     AnalogIn ain;
00042     virtual char * read_data();
00043     char data_sample[50];
00044 };
00045 
00046 class sensor_pulse : public sensor_base
00047 {
00048 public:
00049     sensor_pulse();
00050     sensor_pulse(PinName);
00051     ~sensor_pulse();
00052     void ISR1();
00053     void reset();
00054     float frequency;    
00055     float uptime;
00056     float firstpulsetime;
00057     float lastpulsetime;
00058     float elapsedtime;
00059     virtual char * read_data();
00060     char data_sample[50];
00061     InterruptIn IntIn;
00062     int pulsecount;
00063 private:        
00064     Timer t;
00065     float period;
00066 };
00067 
00068 /*
00069 class sensor_pulse : public sensor_base
00070 {
00071 public:
00072     sensor_pulse();
00073     sensor_pulse(PinName);
00074     ~sensor_pulse();
00075     AnalogIn IntIn;
00076     //void ISR1();
00077     //int pulsecount;
00078     //float uptime;
00079     //float firstpulsetime;
00080     //float lastpulsetime;
00081     virtual char * read_data();
00082     char data_sample[50];  
00083 //private:
00084     //InterruptIn IntIn;
00085 };
00086 
00087 */
00088 
00089 class sensor_qeihw : public sensor_base
00090 {
00091 public:
00092     sensor_qeihw();
00093     ~sensor_qeihw();
00094     QEIHW qei;
00095     virtual char * read_data();
00096     char data_sample[50];
00097 };
00098 
00099 class sensor_qeix4 : public sensor_base
00100 {
00101 public:
00102     sensor_qeix4();
00103     ~sensor_qeix4();
00104     QEIx4 qei;
00105     void poll();
00106     virtual char * read_data();
00107     char data_sample[50];
00108 };
00109 
00110 class sensor_max6675 //: public sensor_base
00111 {
00112     SPI spi;
00113     DigitalOut ncs;
00114         
00115 public:
00116 
00117     int sensor_id;
00118     int sensor_type;
00119     bool enabled;
00120     
00121     //sensor_max6675();
00122     //sensor_max6675(PinName _cs, PinName _so, PinName _sck, PinName _ncs);
00123     sensor_max6675(SPI _spi, PinName _ncs);
00124     ~sensor_max6675();
00125     void select();
00126     void deselect();    
00127     float read_temp();
00128     
00129     virtual char * read_data();
00130     char data_sample[50];
00131 
00132   private:
00133     //PinName _CS_pin;
00134     //PinName _SO_pin;
00135     //PinName _SCK_pin;
00136     int _units;
00137     float _error;
00138     
00139 };
00140 
00141 /*
00142 class Counter {
00143 public:
00144     Counter(PinName pin);
00145     void increment();
00146     int read(); 
00147 private:
00148     InterruptIn _interrupt;
00149     volatile int _count;
00150 };
00151 
00152 */