아두이노 scale 함수 - adu-ino scale hamsu

#include "HX711.h" //HX711로드셀 엠프 관련함수 호출

#define calibration_factor -7050.0 // 로드셀 스케일 값 선언

#define DOUT  3 //엠프 데이터 아웃 핀 넘버 선언

#define CLK  2  //엠프 클락 핀 넘버

HX711 scale(DOUT, CLK); //엠프 핀 선언

void setup() {

  Serial.begin(9600);  // 시리얼 통신 개방

  Serial.println("HX711 scale TEST");  

  scale.set_scale(calibration_factor);  //스케일 지정

  scale.tare();  //스케일 설정

  Serial.println("Readings:");

}

void loop() {

  Serial.print("Reading: ");

  Serial.print(scale.get_units(), 1);  //무제 출력

  Serial.print(" lbs"); //단위

  Serial.println();

}

이대로 코드 입력해서 값이 나오긴합니다 근데 kg으로 환산을 하려하는데 어떻게 해야하나요

로드셀은 20kg짜리 입니다.

내용

#include "HX711.h" //HX711로드셀 엠프 관련함수 호출

#define calibration_factor -7050.0 // 로드셀 스케일 값 선언

#define DOUT  3 //엠프 데이터 아웃 핀 넘버 선언

#define CLK  2  //엠프 클락 핀 넘버 

HX711 scale(CLK, DOUT); //엠프 핀 선언 

int piezo = 7;

int note = 1000;

void setup() {

  Serial.begin(9600);  // 시리얼 통신 개방

  Serial.println("HX711 scale TEST");  

  pinMode(piezo, OUTPUT);

  scale.set_scale(calibration_factor);  //스케일 지정 

  scale.tare();  //스케일 설정

  Serial.println("Readings:");

}

 void loop()

 {

  Serial.print("Reading: ");

  Serial.print(scale.get_units(), 1);  //무제 출력 

  Serial.print(" lbs"); //단위

  Serial.println(); 

  int value=digitalRead(3);

  if(value>10){tone(7, 1000);

  }

 }

무게센서가 인식한 값에서 설정값 이상일때 부저가 울리게 하려고하는데 어떻게 해야하는지 모르겠습니다.

Description Re-maps a number from one range to another. That is, a value of fromLow would get mapped to toLow, a value of fromHigh to toHigh, values in-between to values in-between, etc. Does not constrain values to within the range, because out-of-range v

www.arduino.cc

위에서 정의한 매개 변수대로라면 map(in\_val, in\_min, in\_max, out\_min, out\_max) 라고 사용하면 되겠군요.

 

단, 정수형 연산만 가능하기 때문에 정밀한 스케일링 값을 원한다면 직접 함수를 제작하여 사용해야 한다네요.

(결국 실수형 연산은 직접 제작을 해야하는 소리 입니다)

굳이 스케일링 하려는 이유

밑도 끝도 없이 갑자기 스케일링 함수를 사용하려는 이유는 가독성과 사용의 편리함에 있습니다.

(그냥 내가 알아보기 쉽게 하려고..)

앞서 PWM 신호를 받아 노이즈를 제거한 평균 신호값을 받았습니다.

각 채널의 PWM 신호값은 988, 1783 이런식으로 들어오는데, 이 신호를 보고 "아하, CH1의 신호값이 1283이니 이는 -32.6%의 값이구나!"라고 단번에 인식할 수 있다면 스케일링 함수를 사용하지 않아도 됩니다.

아두이노 코딩 질문입니다 너무 급해요 ㅠㅠ

페이지 정보

작성자 전민결 작성일19-08-12 19:08 조회15,328회 댓글3건

  • 이전글
  • 다음글
  • 목록

본문

[↑]

#include "HX711.h" //HX711로드셀 엠프 관련함수 호출
#define calibration_factor -7050.0 // 로드셀 스케일 값 선언
#define DOUT  3 //엠프 데이터 아웃 핀 넘버 선언
#define CLK  2  //엠프 클락 핀 넘버
HX711 scale(DOUT, CLK); //엠프 핀 선언

#include <Servo.h>


int servoPin1 = 9;
int servoPin2 = 11;

Servo servo1;
Servo servo2;

 


int angle = 0;

void setup()
{
  servo1.attach(servoPin1);
  servo2.attach(servoPin2);
  Serial.begin(9600);  // 시리얼 통신 개방
  Serial.println("HX711 scale TEST"); 
  scale.set_scale(calibration_factor);  //스케일 지정
  scale.tare();  //스케일 설정
  Serial.println("Readings:");
 
}


void loop()
{
  int val = analogRead(scale.read);
  int scale = map(val,0,1023,0,180);
  for(scale*0.453592 = 1.5; angle < 180; angle++)
  {
    servo1.write(angle);
    delay(15);
    servo2.write(angle);
    delay(15);
  }
  for(scale*0.453592 = 0; angle < 0; angle--)
  {
    servo1.write(angle);
    delay(15);
    servo2.write(angle);
    delay(15);
  }
}
무게센서가 값을 받으면 서보모터가 180도로 움직였다가 값이 0이 되면 서보모터가 다시 제자리로 오는 코딩을 하고 싶습니다. 이 코딩이 맞는건지도 잘 모르겠고 무게센서 값을 서보모터로 옮기는 것에 대해서 어려움을 겪고 있습니다. 제발 도와주세요 ㅠㅠ 

  • BASIC4MCU 작성글 SNS에 공유하기

댓글 : 3

조회수 : 15,328

master님의 댓글master 작성일 19-08-12 21:18

HX711을 사용하는데 어째서 아나로그 입력을 받을까요?
HX711.h 라이브러리 설치하고나면
아두이노/예제/HX711 예제가 자동으로 함께 설치됩니다.
HX711 예제를 먼저 공부하세요

  • 답변
master님의 댓글master 작성일 19-08-12 21:22

//kin.naver.com/qna/detail.nhn?d1id=11&dirId=1118&docId=316253129&qb=SFg3MTEuaA==&enc=utf8§ion=kin.qna&rank=2&search_sort=0&spq=0
예를들면 이 질문글에서는
scale.get_units() 이 함수로 값을 읽고 있습니다.
 int scale = scale.get_units(); //  int val = analogRead(scale.read);  int scale = map(val,0,1023,0,180);
2라인대신 이렇게 작성하면 되겠죠

  • 답변
master님의 댓글master 작성일 19-08-12 21:26

라이브러리는 여러사람이 만들기도 하므로 조금씩 다르기도 합니다.
반드시 설치된 라이브러리에 따라오는 예제로 공부하셔야합니다.
//github.com/bogde/HX711/commit/83c9f5172694d1a0fb483bd407cf45eb8d163613
이 라이브러리 예제는 long reading = scale.read(); 함수가 다릅니다.
초기화 함수도 다르군요
//www.arduinolibraries.info/libraries/hx711-arduino-library
라이브러리 선택에 문제가 생긴다면
아두이노 사이트의 라이브러리를 설치하셔도 됩니다.

  • 답변

댓글쓰기

비밀글사용내용

  • 이전글
  • 다음글
  • 목록

Toplist

최신 우편물

태그