프롬프트
file: ai-9-3-BH1750Sensor-클래스-만들기.md
프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.(여기에 'ai-9-1-센서-클래스-템플릿.md'의 내용을 붙여 넣으세요)
components:
- sensor_calss:
센서_모델: BH1750
클래스_이름: BH1750Sensor
pin_type: i2c_bus
key_1: Brightness, 정수
라이브러리: |
import bh1750fvi 하지 말고 직접 코드 만들어 줘.
def main():
import pinno as P
from parse import Parse
i2c = I2C(0, scl=Pin(P.SCL), sda=Pin(P.SDA))
sensor = BH1750Sensor(i2c_bus=i2c)
while True:
data = sensor.read()
print(data)
p = Parse(data)
print(f'name: {p.name}, {p.key}: {p.value}')
time.sleep_ms(5000)
if __name__ == '__main__':
main()
AI가 만든 코드
프로그램: \lib\bh1750sensor.py
from machine import I2C, Pin
import time
class BH1750Sensor:
"""
:param i2c_bus: I2C 버스를 사용하여 BH1750 센서를 초기화
:param ser: 센서의 고유 식별자 (옵션)
"""
def __init__(self, i2c_bus, ser=None) -> None:
self.pin_or_bus = i2c_bus
self.sensor_instance = i2c_bus # i2c_bus 인스턴스 사용
self.address = 0x23 # BH1750 기본 주소
self._model: str = "BH1750"
self._model_ser: str = f"{self._model}_{ser}" if ser else self._model
self._sensor_count: int = 1 # BH1750은 하나의 센서로 동작
self._names: list[str] = []
self.name_first = True
self._key: list[str] = ["Brightness"]
self._value: list[any] = [None]
self._dict = {}
try:
# 센서 초기화: 연속 고해상도 모드
self.sensor_instance.writeto(self.address, b'\x10')
time.sleep_ms(180)
except OSError as e:
print(f"오류: 장치 연결 실패 {e}")
self._value = [None]
def make_data(self):
"""
센서 데이터를 읽어와서 _value에 저장
"""
try:
# BH1750 데이터 읽기
data = self.sensor_instance.readfrom(self.address, 2)
brightness = (data[0] << 8 | data[1]) / 1.2 # 조도 값 계산 (1.2로 나누기)
self._value[0] = round(brightness) # 조도 값은 소수점 0자리로 처리
except OSError as e:
print(f"오류 발생: {e}")
self._value = [None]
def make_dict(self):
"""
_value 리스트의 데이터를 _dict로 변환
"""
sensor_data = {self._key[0]: self._value[0]}
self._dict[self._model_ser] = sensor_data
def read(self):
"""
센서 데이터를 읽고, 딕셔너리 형태로 반환
"""
self.make_data() # 센서 데이터를 먼저 읽음
self.make_dict() # 데이터를 딕셔너리로 구성
return self._dict
def main():
import pinno as P
from parse import Parse
i2c = I2C(0, scl=Pin(P.SCL), sda=Pin(P.SDA))
sensor = BH1750Sensor(i2c_bus=i2c)
while True:
data = sensor.read()
print(data)
p = Parse(data)
print(f'name: {p.name}, {p.key}: {p.value}')
time.sleep_ms(5000)
if __name__ == '__main__':
main()