BASIC4MCU | 질문게시판 | 아두이노 무게센서와 스텝모터
페이지 정보
작성자 dnener 작성일2021-08-02 21:48 조회7,300회 댓글3건본문
로드셀 무게센서를 사용하여 무게센서에 0.5kg 인가되었을때
스탭모터가 돌아가게끔 하고싶습니다.
그러나 이렇게 코딩을하면 오류가떠서 어떻게 해야할지 잘 모르겠습니다.
맨 마지막 scale 이 아니라 다른 변수가 들어가야하나요?
#include <Servo.h>
#include <HX711.h>
HX711 scale;
Servo servo;
int sw1 = 5;
int sw2 = 6;
int sw3 = 7;
float factor = 50000;
void setup() {
servo.attach(9);
pinMode(sw1,INPUT);
pinMode(sw2,INPUT);
pinMode(sw3,INPUT);
scale.begin(2,3);
scale.set_scale();
scale.tare();
}
void loop() {
servo.write(90);
if(digitalRead(sw1)==HIGH){
servo.write(90);
servo.write(180);
delay(1500);
}
else if(digitalRead(sw2)==HIGH){
servo.write(90);
servo.write(180);
delay(500);
}
else if(digitalRead(sw3)==HIGH){
servo.write(90);
servo.write(-180);
delay(1000);
}
else if(scale>0.5){
servo.write(90);
servo.write(180);
delay(500);
}
}
댓글 3
조회수 7,300master님의 댓글
master 작성일
라이브러리를 설치하면 예제가 함께 설치됩니다.
무게센서의 예제를 먼저 공부하시면 예제에서 어떤식으로 처리하는지 알 수가 있습니다.
if (scale.is_ready()) {
long reading = scale.read();
Serial.print("HX711 reading: "); Serial.println(reading);
}
HX711는 라이브러가 여러개 있고 라이브러리마다 예제가 조금씩 다를 수 있지만 위 예제를 예로들면
루프함수에서 reading 변수에 무게값을 받아와서 출력하고 있습니다.
else if(reading >0.5){ 이런식으로 처리하면 되겠죠
단, reading 을 선언 할 때에 정수형으로 선언했는데 라이브러리에서 실수형으로 반환한다면 실수형으로 선언을 변경하세요
void loop() {
float reading;
if (scale.is_ready()) { reading = scale.read(); }
dnener님의 댓글
dnener 작성일
감사합니다!
혹시 무게센서를 여러개 사용하려면 HX711 모듈이 여러개 있어야하나요?
무게센서의 각각의 무게를 측정하여 사용하려고 합니다.
master님의 댓글
master
https://www.google.com/search?q=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+multi+HX711&oq=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+multi+HX711&aqs=chrome..69i57j0i333l2.6638j0j7&sourceid=chrome&ie=UTF-8
HX711 모듈은 여러개 있어야합니다.