Scientific task box V1
Dependents: Scientific_RTOS Scientific_RTOS
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 }
Generated on Fri Jul 15 2022 02:44:51 by 1.7.2