아두이노 > 아두이노 HX711 - Serial

TODAY378 TOTAL182,578
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


BASIC4MCU | 아두이노 | 아두이노 | 아두이노 HX711 - Serial

페이지 정보

작성자 master 작성일2018-03-12 22:19 조회222회 댓글0건

본문

	

 

// DateTime : 2018-03-12 오후 10:21:30
// by Ok-Hyun Park
/*sample for digital weight scale of hx711,display with a HD44780 liquid crtstal monitor
*hardware design: syyyd available at   http: //syyyd.taobao.com
*library design: Weihong Guan(@aguegu)http: //aguegu.net
*library host on                       https: //github.com/aguegu/Arduino
*/
// Hx711.DIN-pin#A1
// Hx711.SCK-pin#A0
//
#define U08 unsigned char
#define U32 unsigned long
//
#define SCK A0
#define DIN A1
//
long  offset=0;
float scale=742.0;
//
U32 getValue(){
  U08 i,j,data[3];
  while(digitalRead(DIN)); // wait for Ready
  for(j=3j--;){
    for(i=8i--;){ digitalWrite(SCK,1); bitWrite(data[j],i,digitalRead(DIN)); digitalWrite(SCK,0); }
  }
  digitalWrite(SCK,1); digitalWrite(SCK,0);   // 25클럭 // Next Conversion:CH.A,Gain: 128
  //digitalWrite(SCK,1); digitalWrite(SCK,0); // 26클럭 // Next Conversion:CH.B,Gain: 32
  //digitalWrite(SCK,1); digitalWrite(SCK,0); // 27클럭 // Next Conversion:CH.B,Gain: 64
  data[2]^=0x80;
  return((U32)data[2]<<16)|((U32)data[1]<<8)|(U32)data[0];
}
//
void setOffset(){ offset=getValue(); }
void setScale(float s){ scale=s; }
//
float getGram(U08 times){
  long val,sum=0U08 i;
  for(i=0i<timesi++)sum+=getValue();
  sum/=times;
  val=sum-offset;
  return(float)val/scale;
}
//
void HX711init(){
  pinMode(DIN,INPUT);
  pinMode(SCK,OUTPUT);
  digitalWrite(SCK,1); delayMicroseconds(100); digitalWrite(SCK,0); // 60us 이상 POWER DOWN 후 Nomal Mode
  setOffset(); setOffset(); // 2번째 변환 결과로 Offset 적용
}
//
void setup(){
  Serial.begin(9600);
  HX711init();
}
//
void loop(){
  Serial.print(getGram(32),1); // 32번 읽어서 평균 // 소숫점이하 자릿수=1
  Serial.println(" g");
  delay(200);
}

 

HX711 라이브러리를 벗겨내서 만들었습니다.  

 

댓글 0

조회수 222

등록된 댓글이 없습니다.

아두이노HOME > 아두이노 > 전체 목록

게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017