Michael Ohayon
/
HX711
Jauge de contraintes en parallèles
HX711.cpp@0:aa9794dcf489, 2015-06-02 (annotated)
- Committer:
- Volt72
- Date:
- Tue Jun 02 15:38:54 2015 +0000
- Revision:
- 0:aa9794dcf489
- Child:
- 1:5a1ec06c8cc9
Librairie HX711; Version 1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Volt72 | 0:aa9794dcf489 | 1 | #include "HX711.h" |
Volt72 | 0:aa9794dcf489 | 2 | |
Volt72 | 0:aa9794dcf489 | 3 | HX711::HX711(PinName pin_dout, PinName pin_slk) :_pin_dout(pin_dout), _pin_slk(pin_slk) |
Volt72 | 0:aa9794dcf489 | 4 | { |
Volt72 | 0:aa9794dcf489 | 5 | _pin_slk = 1; |
Volt72 | 0:aa9794dcf489 | 6 | wait_ms(100); |
Volt72 | 0:aa9794dcf489 | 7 | _pin_slk = 0; |
Volt72 | 0:aa9794dcf489 | 8 | |
Volt72 | 0:aa9794dcf489 | 9 | averageValue(); |
Volt72 | 0:aa9794dcf489 | 10 | this->setOffset(averageValue()); |
Volt72 | 0:aa9794dcf489 | 11 | this->setScale(1); |
Volt72 | 0:aa9794dcf489 | 12 | } |
Volt72 | 0:aa9794dcf489 | 13 | |
Volt72 | 0:aa9794dcf489 | 14 | HX711::~HX711() |
Volt72 | 0:aa9794dcf489 | 15 | { |
Volt72 | 0:aa9794dcf489 | 16 | |
Volt72 | 0:aa9794dcf489 | 17 | } |
Volt72 | 0:aa9794dcf489 | 18 | |
Volt72 | 0:aa9794dcf489 | 19 | long HX711::averageValue(unsigned char times) |
Volt72 | 0:aa9794dcf489 | 20 | { |
Volt72 | 0:aa9794dcf489 | 21 | long sum = 0; |
Volt72 | 0:aa9794dcf489 | 22 | for (unsigned char i = 0; i < times; i++) |
Volt72 | 0:aa9794dcf489 | 23 | { |
Volt72 | 0:aa9794dcf489 | 24 | sum += getValue(); |
Volt72 | 0:aa9794dcf489 | 25 | } |
Volt72 | 0:aa9794dcf489 | 26 | |
Volt72 | 0:aa9794dcf489 | 27 | return sum / times; |
Volt72 | 0:aa9794dcf489 | 28 | } |
Volt72 | 0:aa9794dcf489 | 29 | |
Volt72 | 0:aa9794dcf489 | 30 | long HX711::getValue() |
Volt72 | 0:aa9794dcf489 | 31 | { |
Volt72 | 0:aa9794dcf489 | 32 | long valeur = 0; |
Volt72 | 0:aa9794dcf489 | 33 | |
Volt72 | 0:aa9794dcf489 | 34 | while (_pin_dout) |
Volt72 | 0:aa9794dcf489 | 35 | ; |
Volt72 | 0:aa9794dcf489 | 36 | |
Volt72 | 0:aa9794dcf489 | 37 | for (int i=0;i<24;i++) |
Volt72 | 0:aa9794dcf489 | 38 | { |
Volt72 | 0:aa9794dcf489 | 39 | _pin_slk = 1; |
Volt72 | 0:aa9794dcf489 | 40 | valeur=valeur<<1; |
Volt72 | 0:aa9794dcf489 | 41 | _pin_slk = 0; |
Volt72 | 0:aa9794dcf489 | 42 | if(_pin_dout) valeur++; |
Volt72 | 0:aa9794dcf489 | 43 | } |
Volt72 | 0:aa9794dcf489 | 44 | |
Volt72 | 0:aa9794dcf489 | 45 | _pin_slk = 1; |
Volt72 | 0:aa9794dcf489 | 46 | _pin_slk = 0; |
Volt72 | 0:aa9794dcf489 | 47 | |
Volt72 | 0:aa9794dcf489 | 48 | valeur=valeur^0x800000; |
Volt72 | 0:aa9794dcf489 | 49 | |
Volt72 | 0:aa9794dcf489 | 50 | return valeur; |
Volt72 | 0:aa9794dcf489 | 51 | } |
Volt72 | 0:aa9794dcf489 | 52 | |
Volt72 | 0:aa9794dcf489 | 53 | void HX711::setOffset(long offset) |
Volt72 | 0:aa9794dcf489 | 54 | { |
Volt72 | 0:aa9794dcf489 | 55 | _offset = offset; |
Volt72 | 0:aa9794dcf489 | 56 | } |
Volt72 | 0:aa9794dcf489 | 57 | |
Volt72 | 0:aa9794dcf489 | 58 | void HX711::setScale(float scale) |
Volt72 | 0:aa9794dcf489 | 59 | { |
Volt72 | 0:aa9794dcf489 | 60 | _scale = scale; |
Volt72 | 0:aa9794dcf489 | 61 | } |
Volt72 | 0:aa9794dcf489 | 62 | |
Volt72 | 0:aa9794dcf489 | 63 | float HX711::getGram() |
Volt72 | 0:aa9794dcf489 | 64 | { |
Volt72 | 0:aa9794dcf489 | 65 | long val = (averageValue() - _offset); |
Volt72 | 0:aa9794dcf489 | 66 | return (float) val / _scale; |
Volt72 | 0:aa9794dcf489 | 67 | } |