LED DAC 제어, PCF8591 DAC 출력소스
This commit is contained in:
westnife3 2025-08-27 17:34:40 +09:00
parent 01e4e0293c
commit a89fae5dbe
1 changed files with 46 additions and 0 deletions

View File

@ -0,0 +1,46 @@
import smbus
import time
# PCF8591의 I2C 주소 (일반적으로 0x48)
PCF8591_ADDRESS = 0x48
# I2C 버스 번호 (라즈베리 파이 2, 3, 4는 1, 초기 모델은 0일 수 있음)
I2C_BUS = 1
# smbus 객체 생성
bus = smbus.SMBus(I2C_BUS)
# PCF8591 DAC 제어 바이트 설정
# DAC 출력을 활성화하려면 비트 6을 1로 설정해야 합니다. (0100 0000 = 0x40)
# AIN 입력 모드 (비트 3-2)도 함께 설정될 수 있지만, DAC 출력에 직접적인 영향은 없습니다.
# 여기서는 DAC 활성화만 중요합니다.
DAC_CONTROL_BYTE = 0x40
print(f"PCF8591 DAC LED 제어 테스트 시작 (주소: 0x{PCF8591_ADDRESS:X})")
print("LED 밝기가 서서히 변합니다. Ctrl+C로 종료.")
try:
while True:
# 0부터 255까지 값을 증가시키며 LED 밝기 조절
for value in range(256):
# write_byte_data(주소, 제어_바이트, 데이터_바이트)
# 제어_바이트: DAC 활성화를 위한 설정 (0x40)
# 데이터_바이트: DAC로 출력할 0-255 사이의 값
bus.write_byte_data(PCF8591_ADDRESS, DAC_CONTROL_BYTE, value)
print(f"DAC 출력 값: {value}")
time.sleep(0.01) # 0.01초 대기 (밝기 변화 속도 조절)
time.sleep(0.5) # 잠시 멈춤
# 255부터 0까지 값을 감소시키며 LED 밝기 조절
for value in range(255, -1, -1): # 255부터 0까지 역순으로
bus.write_byte_data(PCF8591_ADDRESS, DAC_CONTROL_BYTE, value)
print(f"DAC 출력 값: {value}")
time.sleep(0.01) # 0.01초 대기
time.sleep(0.5) # 잠시 멈춤
except KeyboardInterrupt:
# 프로그램 종료 시 LED 끄기
bus.write_byte_data(PCF8591_ADDRESS, DAC_CONTROL_BYTE, 0)
print("\n프로그램 종료. LED를 끕니다.")