#!/usr/bin/env python3 """ LoadCell - Raspberry Pi Python library for HX711 load cell amplifier 하드웨어 연결: - HX711 [VCC] -> Pi 5 [Pin 1] (3.3V) - HX711 [GND] -> Pi 5 [Pin 6] (GND) - HX711 [DT] -> Pi 5 [Pin 29] (GPIO5) - HX711 [SCK] -> Pi 5 [Pin 31] (GPIO6) """ from HX711 import SimpleHX711, Rate import time # HX711 핀 설정 DT_PIN = 5 # GPIO5 -> 29번 핀 SCK_PIN = 6 # GPIO6 -> 31번 핀 # 설정 변수 CALIBRATION_FACTOR = -411.17 # 캘리브레이션 팩터 # 상태 변수 is_calibrated = False offset_value = 0 # HX711 인스턴스 hx = None def init_hx711(): """HX711 초기화""" global hx print("HX711 초기화 중...") print(f" DT 핀: GPIO{DT_PIN} (Pin 29)") print(f" SCK 핀: GPIO{SCK_PIN} (Pin 31)") try: hx = SimpleHX711(DT_PIN, SCK_PIN, 1, 0, Rate.HZ_10) print("HX711 연결 성공!") return True except Exception as e: print(f"HX711 연결 실패: {e}") print("배선 확인 필요") return False def perform_calibration(): """캘리브레이션 수행""" global is_calibrated, offset_value if is_calibrated: return print() print("-" * 50) print(">> 최초 캘리브레이션 진행") print("-" * 50) print("로드셀 위에 아무것도 올리지 마세요!") print("2초 후 영점 조정을 시작합니다...") time.sleep(2) print("영점 조정 중...") readings = [] for _ in range(10): readings.append(hx.read()) time.sleep(0.1) offset_value = sum(readings) / len(readings) print(">> 캘리브레이션 완료!") print(f"현재 오프셋 값: {offset_value:.2f}") print() is_calibrated = True def tare(): """영점 조정 함수""" global offset_value print("\n>> 영점 조정 중...") print(" 로드셀 위에 아무것도 올리지 마세요") time.sleep(1) readings = [] for _ in range(10): readings.append(hx.read()) time.sleep(0.1) offset_value = sum(readings) / len(readings) print(">> 영점 조정 완료!\n") def main(): if not init_hx711(): return perform_calibration() print("5초 후 tare() 테스트...") time.sleep(5) tare() print("테스트 완료") if __name__ == "__main__": main()