ASensor
 All Classes Functions Pages
VoltmeterSensor.h
1 #pragma once
2 /*
3  ASensor - Sensor library. Can be used standalone or in conjunction with AWind library
4  Copyright (C)2015 Andrei Degtiarev. All right reserved
5 
6  You can always find the latest version of the library at
7  https://github.com/AndreiDegtiarev/ASensor
8 
9  This library is free software; you can redistribute it and/or
10  modify it under the terms of the MIT license.
11  Please see the included documents for further information.
12 */
13 #include "ISensor.h"
14 #include "TimeSerieBuffer.h"
15 
17 class VoltmeterSensor : ISensor
18 {
19  int _port;
20  TimeSerieBuffer *_dataBuffer;
21  int _time_step_mus;
22 public:
24 
29  VoltmeterSensor(int port,int reserved_buffer_size,int actual_size)
30  {
31  _port=port;
32  _dataBuffer=new TimeSerieBuffer(1,1023/5.0,reserved_buffer_size,actual_size);
33  pinMode(port,INPUT);
34  _time_step_mus=100;
35  }
37  TimeSerieBuffer *Buffer()
38  {
39  return _dataBuffer;
40  }
42  virtual const __FlashStringHelper* Name()
43  {
44  return F("Voltmeter");
45  }
47  virtual float LowMeasurementLimit()
48  {
49  return -50;
50  }
52  virtual float HighMeasurementLimit()
53  {
54  return 50;
55  }
57  virtual int Precission()
58  {
59  return 1;
60  }
62  void SetTimeStep(int time_step_us)
63  {
64  _time_step_mus=time_step_us;
65  }
67  float TimeStep()
68  {
69  return _time_step_mus;
70  }
72  float TimeLength()
73  {
74  return (_time_step_mus*_dataBuffer->Size())/1e6;
75  }
77 
81  virtual bool Measure(float &data)
82  {
83  data=analogRead(_port);
84  return true;
85  }
88  {
89  int size=_dataBuffer->Size();
90  _dataBuffer->SetTimeStep(_time_step_mus/1.0e6);
91  int * data_y=_dataBuffer->Y();
92  for(int i=0;i<size;i++)
93  {
94  data_y[i]=analogRead(_port);
95  delayMicroseconds(_time_step_mus);
96  }
97  }
98 
99 };
virtual bool Measure(float &data)
Performs measurements.
Definition: VoltmeterSensor.h:81
Voltmeter sensor. No any external libraries are neccesary. Allows measurements not only single value ...
Definition: VoltmeterSensor.h:17
virtual float LowMeasurementLimit()
Return lowest possible measurement limit. If value outside of this limit, measurements treated as err...
Definition: VoltmeterSensor.h:47
virtual const __FlashStringHelper * Name()
Returns internal sensors name. Usefull for debugging.
Definition: VoltmeterSensor.h:42
float TimeLength()
Returns time serie length [seconds].
Definition: VoltmeterSensor.h:72
virtual int Precission()
Return how many decimal places make sence for the sensor.
Definition: VoltmeterSensor.h:57
void MeasureBuffer()
Performs measurements of time serie.
Definition: VoltmeterSensor.h:87
virtual float HighMeasurementLimit()
Return highest possible measurement limit. If value outside of this limit, measurements treated as er...
Definition: VoltmeterSensor.h:52
void SetTimeStep(int time_step_us)
Sets sample time between measurements [microseconds].
Definition: VoltmeterSensor.h:62
float TimeStep()
Returns time step [microseconds].
Definition: VoltmeterSensor.h:67
TimeSerieBuffer * Buffer()
return buffer contains measured data
Definition: VoltmeterSensor.h:37
VoltmeterSensor(int port, int reserved_buffer_size, int actual_size)
Constructor.
Definition: VoltmeterSensor.h:29