![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
De sensorcontroller van het TLS2 project.
main.cpp@0:eea3cc9d2701, 2016-11-08 (annotated)
- Committer:
- RichardHoekstra
- Date:
- Tue Nov 08 18:49:33 2016 +0000
- Revision:
- 0:eea3cc9d2701
- Child:
- 1:c9fae063e6f3
First update;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RichardHoekstra | 0:eea3cc9d2701 | 1 | #include "mbed.h" |
RichardHoekstra | 0:eea3cc9d2701 | 2 | |
RichardHoekstra | 0:eea3cc9d2701 | 3 | |
RichardHoekstra | 0:eea3cc9d2701 | 4 | /* De sensor controller heeft de volgende taken |
RichardHoekstra | 0:eea3cc9d2701 | 5 | 1. Sensoren uitlezen |
RichardHoekstra | 0:eea3cc9d2701 | 6 | 1. De frequentie moet per sensor aanpasbaar zijn. |
RichardHoekstra | 0:eea3cc9d2701 | 7 | 2. Reageren op I2C data requests |
RichardHoekstra | 0:eea3cc9d2701 | 8 | 3. Indien mogelijk meerdere samples nemen van de hoogste prioriteit sensor |
RichardHoekstra | 0:eea3cc9d2701 | 9 | |
RichardHoekstra | 0:eea3cc9d2701 | 10 | De volgende 'dingen' moeten kunnen worden ingesteld |
RichardHoekstra | 0:eea3cc9d2701 | 11 | 1. 'Hoofd'sensor |
RichardHoekstra | 0:eea3cc9d2701 | 12 | 2. Sample rate _per_ sensor |
RichardHoekstra | 0:eea3cc9d2701 | 13 | 3. Moving Average van 'Hoofd'sensor |
RichardHoekstra | 0:eea3cc9d2701 | 14 | */ |
RichardHoekstra | 0:eea3cc9d2701 | 15 | |
RichardHoekstra | 0:eea3cc9d2701 | 16 | void i2c_request(){ |
RichardHoekstra | 0:eea3cc9d2701 | 17 | //To be written |
RichardHoekstra | 0:eea3cc9d2701 | 18 | } |
RichardHoekstra | 0:eea3cc9d2701 | 19 | |
RichardHoekstra | 0:eea3cc9d2701 | 20 | |
RichardHoekstra | 0:eea3cc9d2701 | 21 | float sensorVal[3] = {0}; |
RichardHoekstra | 0:eea3cc9d2701 | 22 | //Index 0: druksensor waarde |
RichardHoekstra | 0:eea3cc9d2701 | 23 | //Index 1: flowsensor waarde |
RichardHoekstra | 0:eea3cc9d2701 | 24 | //Index 2: temperatuursenor waarde |
RichardHoekstra | 0:eea3cc9d2701 | 25 | #define druksensor 0 |
RichardHoekstra | 0:eea3cc9d2701 | 26 | #define flowsensor 1 |
RichardHoekstra | 0:eea3cc9d2701 | 27 | #define tempsensor 2 |
RichardHoekstra | 0:eea3cc9d2701 | 28 | |
RichardHoekstra | 0:eea3cc9d2701 | 29 | int main() { |
RichardHoekstra | 0:eea3cc9d2701 | 30 | //Pins |
RichardHoekstra | 0:eea3cc9d2701 | 31 | AnalogIn drukSensor(A0); |
RichardHoekstra | 0:eea3cc9d2701 | 32 | AnalogIn flowSensor(A1); |
RichardHoekstra | 0:eea3cc9d2701 | 33 | AnalogIn tempSensor(A2); |
RichardHoekstra | 0:eea3cc9d2701 | 34 | |
RichardHoekstra | 0:eea3cc9d2701 | 35 | //Sample time |
RichardHoekstra | 0:eea3cc9d2701 | 36 | int tick_ms_druksensor = 10, //100 Hz |
RichardHoekstra | 0:eea3cc9d2701 | 37 | tick_ms_flowsensor = 10, //100 Hz |
RichardHoekstra | 0:eea3cc9d2701 | 38 | tick_ms_tempsensor = 1000; //1 Hz |
RichardHoekstra | 0:eea3cc9d2701 | 39 | |
RichardHoekstra | 0:eea3cc9d2701 | 40 | //mbed ondersteund onneindig veel timers |
RichardHoekstra | 0:eea3cc9d2701 | 41 | Timer t_druk, |
RichardHoekstra | 0:eea3cc9d2701 | 42 | t_flow, |
RichardHoekstra | 0:eea3cc9d2701 | 43 | t_temp; |
RichardHoekstra | 0:eea3cc9d2701 | 44 | |
RichardHoekstra | 0:eea3cc9d2701 | 45 | t_druk.start(); |
RichardHoekstra | 0:eea3cc9d2701 | 46 | t_flow.start(); |
RichardHoekstra | 0:eea3cc9d2701 | 47 | t_temp.start(); |
RichardHoekstra | 0:eea3cc9d2701 | 48 | while(1) { |
RichardHoekstra | 0:eea3cc9d2701 | 49 | if(t_druk.read_ms() >= tick_ms_druksensor){ |
RichardHoekstra | 0:eea3cc9d2701 | 50 | //Lees de druksensor uit |
RichardHoekstra | 0:eea3cc9d2701 | 51 | sensorVal[druksensor] = drukSensor.read(); |
RichardHoekstra | 0:eea3cc9d2701 | 52 | t_druk.reset(); |
RichardHoekstra | 0:eea3cc9d2701 | 53 | } |
RichardHoekstra | 0:eea3cc9d2701 | 54 | if(t_flow.read_ms() >= tick_ms_flowsensor){ |
RichardHoekstra | 0:eea3cc9d2701 | 55 | //Lees de flowsensor uit |
RichardHoekstra | 0:eea3cc9d2701 | 56 | sensorVal[flowsensor] = flowSensor.read(); |
RichardHoekstra | 0:eea3cc9d2701 | 57 | t_flow.reset(); |
RichardHoekstra | 0:eea3cc9d2701 | 58 | } |
RichardHoekstra | 0:eea3cc9d2701 | 59 | if(t_temp.read_ms() >= tick_ms_tempsensor){ |
RichardHoekstra | 0:eea3cc9d2701 | 60 | //Lees de temperatuursensor uit |
RichardHoekstra | 0:eea3cc9d2701 | 61 | sensorVal[tempsensor] = tempSensor.read(); |
RichardHoekstra | 0:eea3cc9d2701 | 62 | t_temp.reset(); |
RichardHoekstra | 0:eea3cc9d2701 | 63 | } |
RichardHoekstra | 0:eea3cc9d2701 | 64 | } |
RichardHoekstra | 0:eea3cc9d2701 | 65 | } |