Tachometer library
Dependents: ES202_FinalProject_workingExample DREAMTEAM
Fork of Tach by
Tach.cpp@1:b17c9f1d9d5c, 2018-04-18 (annotated)
- Committer:
- lddevrie
- Date:
- Wed Apr 18 17:11:54 2018 +0000
- Revision:
- 1:b17c9f1d9d5c
- Parent:
- 0:c165325c9e3f
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jdonnal | 0:c165325c9e3f | 1 | #include "Tach.h" |
jdonnal | 0:c165325c9e3f | 2 | |
jdonnal | 0:c165325c9e3f | 3 | //64 counts per rev |
jdonnal | 0:c165325c9e3f | 4 | |
jdonnal | 0:c165325c9e3f | 5 | Tach::Tach(PinName input, |
jdonnal | 0:c165325c9e3f | 6 | int pulsesPerRev): input_(input){ |
jdonnal | 0:c165325c9e3f | 7 | speed_ = 0.0; |
jdonnal | 0:c165325c9e3f | 8 | pulsesPerRev_ = pulsesPerRev; |
jdonnal | 0:c165325c9e3f | 9 | input_.mode(PullUp); |
jdonnal | 0:c165325c9e3f | 10 | input_.rise(this, &Tach::update); |
jdonnal | 0:c165325c9e3f | 11 | //input_.fall(this, &Tach::update); |
jdonnal | 0:c165325c9e3f | 12 | timer_.start(); |
jdonnal | 0:c165325c9e3f | 13 | for(int i=0;i<NSAMP;i++){ |
jdonnal | 0:c165325c9e3f | 14 | speedBuffer_[i]=0.0; |
jdonnal | 0:c165325c9e3f | 15 | } |
jdonnal | 0:c165325c9e3f | 16 | } |
jdonnal | 0:c165325c9e3f | 17 | int Tach::getCount(void){ |
jdonnal | 0:c165325c9e3f | 18 | return count_; |
jdonnal | 0:c165325c9e3f | 19 | } |
jdonnal | 0:c165325c9e3f | 20 | float Tach::getSpeed(void) { |
jdonnal | 0:c165325c9e3f | 21 | |
jdonnal | 0:c165325c9e3f | 22 | float acc=0; |
jdonnal | 0:c165325c9e3f | 23 | for(int i=0;i<NSAMP;i++){ |
jdonnal | 0:c165325c9e3f | 24 | acc+=speedBuffer_[i]; |
jdonnal | 0:c165325c9e3f | 25 | } |
jdonnal | 0:c165325c9e3f | 26 | return acc/NSAMP; |
jdonnal | 0:c165325c9e3f | 27 | |
jdonnal | 0:c165325c9e3f | 28 | } |
jdonnal | 0:c165325c9e3f | 29 | |
jdonnal | 0:c165325c9e3f | 30 | void Tach::update(void) { |
jdonnal | 0:c165325c9e3f | 31 | float speed; |
jdonnal | 0:c165325c9e3f | 32 | static int i=0; |
jdonnal | 0:c165325c9e3f | 33 | count_++; |
lddevrie | 1:b17c9f1d9d5c | 34 | speed = 1.0/(timer_.read()*pulsesPerRev_); // in Hz, i.e. rev/s |
jdonnal | 0:c165325c9e3f | 35 | speedBuffer_[i%NSAMP]=speed; |
jdonnal | 0:c165325c9e3f | 36 | i++; |
jdonnal | 0:c165325c9e3f | 37 | timer_.reset(); |
jdonnal | 0:c165325c9e3f | 38 | } |