Scientific task box V1

Dependencies:   HX711 DS1820

Dependents:   Scientific_RTOS Scientific_RTOS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers HX711.cpp Source File

HX711.cpp

00001 #include "HX711.h"
00002 
00003 HX711::HX711(PinName pin_dout, PinName pin_slk) :_pin_dout(pin_dout), _pin_slk(pin_slk)
00004 {
00005     _pin_slk = 1;
00006     wait_ms(100);
00007     _pin_slk = 0;
00008 
00009     averageValue();
00010    // this->setOffset(averageValue());
00011     this->setScale(1);
00012 }
00013 
00014 HX711::~HX711() 
00015 {
00016 
00017 }
00018 
00019 long HX711::averageValue(unsigned char times)
00020 {
00021     long sum = 0;
00022     for (unsigned char i = 0; i < times; i++)
00023     {
00024         sum += getValue();
00025     }
00026 
00027     return sum / times;
00028 }
00029 
00030 long HX711::getValue()
00031 {
00032     long valeur = 0;
00033 
00034     while (_pin_dout)
00035         ;
00036 
00037     for (int i=0;i<24;i++)
00038     { 
00039         _pin_slk = 1;
00040         valeur=valeur<<1; 
00041         _pin_slk = 0;
00042         if(_pin_dout) valeur++; 
00043     } 
00044 
00045     _pin_slk = 1;
00046     _pin_slk = 0;
00047 
00048     valeur=valeur^0x800000;
00049 
00050     return valeur;
00051 }
00052 
00053 long HX711::getSignedValue()
00054 {
00055     return (getValue()-0x7FFFFF);
00056 }
00057 
00058 void HX711::setTare(long offset)
00059 {
00060     _offset = offset;
00061 }
00062 
00063 void HX711::setScale(float scale)
00064 {
00065     _scale = scale;
00066 }
00067 
00068 int HX711::getGram()
00069 {
00070     long val = (getValue() - _offset);
00071     return (int)((val/_scale)*1000);
00072 }