Libery for HX711 sensor. This is for measureing the weigth of the keg
Embed:
(wiki syntax)
Show/hide line numbers
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 set_gain(128); 00010 } 00011 00012 HX711::~HX711() 00013 { 00014 00015 } 00016 00017 00018 void HX711::set_gain(char gain) 00019 { 00020 switch (gain) { 00021 case 128: // channel A, gain factor 128 00022 GAIN = 1; 00023 break; 00024 case 64: // channel A, gain factor 64 00025 GAIN = 3; 00026 break; 00027 case 32: // channel B, gain factor 32 00028 GAIN = 2; 00029 break; 00030 } 00031 _pin_slk = 0; 00032 read(); 00033 } 00034 00035 long HX711::read() 00036 { 00037 long value = 0; 00038 00039 while (_pin_dout) 00040 ; 00041 00042 for (int i=0;i<24;i++) 00043 { 00044 _pin_slk = 1; 00045 value=value<<1; 00046 _pin_slk = 0; 00047 if(_pin_dout) value++; 00048 } 00049 00050 _pin_slk = 1; 00051 _pin_slk = 0; 00052 00053 value=value^0x800000; 00054 00055 return value; 00056 } 00057 00058 long HX711::read_average(char times) 00059 { 00060 long sum = 0; 00061 for (char i = 0; i < times; i++) { 00062 sum += read(); 00063 } 00064 return sum / times; 00065 } 00066 00067 double HX711::get_value(char times) 00068 { 00069 return read_average(times) - OFFSET; 00070 } 00071 00072 float HX711::get_units(char times) 00073 { 00074 return get_value(times) / SCALE; 00075 } 00076 00077 void HX711::tare(char times) 00078 { 00079 double sum = read_average(times); 00080 set_offset(sum); 00081 } 00082 00083 void HX711::set_scale(float scale) 00084 { 00085 SCALE = scale; 00086 } 00087 00088 void HX711::set_offset(long offset) 00089 { 00090 OFFSET = offset; 00091 } 00092 00093 void HX711::power_down() 00094 { 00095 _pin_slk = 0; 00096 _pin_slk = 1; 00097 } 00098 00099 void HX711::power_up() 00100 { 00101 _pin_slk = 0; 00102 }
Generated on Wed Jul 20 2022 19:09:29 by
![doxygen](doxygen.png)