Libery for HX711 sensor. This is for measureing the weigth of the keg

Dependents:   Brew_Keg

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     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 }