feat: 무게 및 부피 측정 기능 구현
- get_weight(): 무게(g), 부피(ml) 반환 - 밀도 기반 부피 계산 (기본값: 물 1.0 g/ml)
This commit is contained in:
@@ -18,6 +18,8 @@ SCK_PIN = 6 # GPIO6 -> 31번 핀
|
|||||||
|
|
||||||
# 설정 변수
|
# 설정 변수
|
||||||
CALIBRATION_FACTOR = -411.17 # 캘리브레이션 팩터
|
CALIBRATION_FACTOR = -411.17 # 캘리브레이션 팩터
|
||||||
|
measure_delay = 0.1 # 측정 간격 (초)
|
||||||
|
density = 1.0 # 기본값: 물 (1.0 g/ml)
|
||||||
|
|
||||||
# 상태 변수
|
# 상태 변수
|
||||||
is_calibrated = False
|
is_calibrated = False
|
||||||
@@ -61,6 +63,8 @@ def perform_calibration():
|
|||||||
|
|
||||||
print("영점 조정 중...")
|
print("영점 조정 중...")
|
||||||
|
|
||||||
|
|
||||||
|
# 10번 읽어서 평균값을 오프셋으로 사용
|
||||||
readings = []
|
readings = []
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
readings.append(hx.read())
|
readings.append(hx.read())
|
||||||
@@ -92,16 +96,35 @@ def tare():
|
|||||||
print(">> 영점 조정 완료!\n")
|
print(">> 영점 조정 완료!\n")
|
||||||
|
|
||||||
|
|
||||||
|
def get_weight():
|
||||||
|
"""무게 측정 함수"""
|
||||||
|
raw_value = hx.read()
|
||||||
|
|
||||||
|
# (RAW 값 - 오프셋) / 캘리브레이션 팩터 = 무게
|
||||||
|
weight_g = (raw_value - offset_value) / CALIBRATION_FACTOR
|
||||||
|
weight_g = max(0, weight_g) # 음수 값 방지
|
||||||
|
|
||||||
|
# 밀도 적용 (부피 계산)
|
||||||
|
volume_ml = weight_g / density
|
||||||
|
|
||||||
|
return weight_g, volume_ml
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if not init_hx711():
|
if not init_hx711():
|
||||||
return
|
return
|
||||||
|
|
||||||
perform_calibration()
|
perform_calibration()
|
||||||
|
|
||||||
print("5초 후 tare() 테스트...")
|
print("무게 측정 테스트 (10회):")
|
||||||
time.sleep(5)
|
print("-" * 50)
|
||||||
tare()
|
|
||||||
|
|
||||||
|
for i in range(10):
|
||||||
|
weight_g, volume_ml = get_weight()
|
||||||
|
print(f" [{i+1:2d}] {weight_g:.1f}g / {volume_ml:.1f}ml")
|
||||||
|
time.sleep(measure_delay)
|
||||||
|
|
||||||
|
print("-" * 50)
|
||||||
print("테스트 완료")
|
print("테스트 완료")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user