Advertisement
Guest User

Untitled

a guest
Dec 13th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. /*
  2.  * Hx711.cpp
  3.  *
  4.  *  Created on: Oct 31, 2012
  5.  *      Author: agu
  6.  */
  7.  
  8. #include "Hx711.h"
  9.  
  10. Hx711::Hx711(uint8_t pin_dout, uint8_t pin_slk) :
  11.         _pin_dout(pin_dout), _pin_slk(pin_slk)
  12. {
  13.     pinMode(_pin_slk, OUTPUT);
  14.     pinMode(_pin_dout, INPUT);
  15.  
  16.     digitalWrite(_pin_slk, HIGH);
  17.     delayMicroseconds(100);
  18.     digitalWrite(_pin_slk, LOW);
  19.  
  20.     averageValue();
  21.     this->setOffset(averageValue());
  22.     this->setScale();
  23. }
  24.  
  25. Hx711::~Hx711()
  26. {
  27.  
  28. }
  29.  
  30. long Hx711::averageValue(byte times)
  31. {
  32.     long sum = 0;
  33.     for (byte i = 0; i < times; i++)
  34.     {
  35.         sum += getValue();
  36.     }
  37.  
  38.     return sum / times;
  39. }
  40.  
  41. long Hx711::getValue()
  42. {
  43.     byte data[3];
  44.  
  45.     while (digitalRead(_pin_dout))
  46.         ;
  47.  
  48.     for (byte j = 0; j < 3; j++)
  49.     {
  50.         for (byte i = 0; i < 8; i++)
  51.         {
  52.             digitalWrite(_pin_slk, HIGH);
  53.             bitWrite(data[2 - j], 7 - i, digitalRead(_pin_dout));
  54.             digitalWrite(_pin_slk, LOW);
  55.         }
  56.     }
  57.  
  58.     digitalWrite(_pin_slk, HIGH);
  59.     digitalWrite(_pin_slk, LOW);
  60.  
  61.     return ((long) data[2] << 16) | ((long) data[1] << 8) | (long) data[0];
  62. }
  63.  
  64. void Hx711::setOffset(long offset)
  65. {
  66.     _offset = offset;
  67. }
  68.  
  69. void Hx711::setScale(float scale)
  70. {
  71.     _scale = scale;
  72. }
  73.  
  74. float Hx711::getGram()
  75. {
  76.     long val = (averageValue() - _offset);
  77.     return (float) val / _scale;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement