디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

이제 아두이노 키트만 사면 된다앱에서 작성

썬컷0.6갤로그로 이동합니다. 2024.12.28 23:19:54
조회 89 추천 0 댓글 4

#include <Arduino.h>

//====================
// 하드웨어 설정
//====================
// 핀 설정
const int LIGHT_SENSOR_PIN = 34;    // 조도 센서가 연결된 핀
const int RELAY_PIN = 26;           // 릴레이 제어 핀

//====================
// 조도 센서 설정
//====================
// 조도 임계값 (환경에 따라 조정 필요)
const long LIGHT_THRESHOLD_ON = 1900;   // 이 값보다 어두우면 켜짐
const long LIGHT_THRESHOLD_OFF = 2100;  // 이 값보다 밝으면 꺼짐

// 샘플링 설정
const int SAMPLES = 5;                  // 평균을 위한 샘플 수
const unsigned long INTERVAL_MS = 1000;  // 조도 측정 간격 (밀리초)

//====================
// 디버깅 설정
//====================
const unsigned long PRINT_INTERVAL = 5000;  // 시리얼 출력 간격 (밀리초)
const long SENSOR_MIN_VALUE = 0;           // 센서 최소 유효값
const long SENSOR_MAX_VALUE = 4095;        // 센서 최대 유효값

//====================
// 전역 변수
//====================
// 조도값 저장 배열 (long 타입으로 변경)
long lightValues[SAMPLES];               
int currentIndex = 0;                   

// 타이밍 관련 변수
unsigned long previousMillis = 0;         // 이전 조도 측정 시간
unsigned long lastPrintTime = 0;          // 마지막 시리얼 출력 시간

// 상태 추적 변수
int previousRelayState = LOW;             // 이전 릴레이 상태

//====================
// 함수 정의
//====================
// 평균 조도값 계산 함수
long getAverageLightLevel() {
  long sum = 0;
  for (int i = 0; i < SAMPLES; i++) {
    sum += lightValues[i];
  }
  return sum / SAMPLES;
}

// 센서값 유효성 검사 함수
bool isValidSensorReading(long value) {
  return (value >= SENSOR_MIN_VALUE && value <= SENSOR_MAX_VALUE);
}

void setup() {
  // 시리얼 통신 초기화
  Serial.begin(115200);
  Serial.println("System starting...");

  // 핀 모드 설정
  pinMode(LIGHT_SENSOR_PIN, INPUT);
  pinMode(RELAY_PIN, OUTPUT);

  // 조도 값 배열 초기화
  for (int i = 0; i < SAMPLES; i++) {
    lightValues[i] = 0;
  }

  // 릴레이 초기 상태 설정 (안전을 위해 꺼진 상태로 시작)
  digitalWrite(RELAY_PIN, LOW);
  Serial.println("Initialization complete");
}

void loop() {
  unsigned long currentMillis = millis();

  // 측정 간격 확인
  if (currentMillis - previousMillis >= INTERVAL_MS) {
    previousMillis = currentMillis;

    // 조도 센서 값 읽기
    long lightLevel = analogRead(LIGHT_SENSOR_PIN);

    // 센서 값 유효성 검사
    if (!isValidSensorReading(lightLevel)) {
      Serial.println("Error: Invalid sensor reading detected");
      return;
    }

    // 새로운 값 저장
    lightValues[currentIndex] = lightLevel;
    currentIndex = (currentIndex + 1) % SAMPLES;

    // 평균 조도값 계산
    long averageLight = getAverageLightLevel();

    // 주기적인 상태 출력
    if (currentMillis - lastPrintTime >= PRINT_INTERVAL) {
      lastPrintTime = currentMillis;
      Serial.print("Current Light Level: ");
      Serial.print(lightLevel);
      Serial.print(" | Average Light Level: ");
      Serial.print(averageLight);
      Serial.print(" | Relay State: ");
      Serial.println(previousRelayState == HIGH ? "ON" : "OFF");
    }

    // 릴레이 상태 결정 (히스테리시스 적용)
    int relayState;
    if (averageLight < LIGHT_THRESHOLD_ON) {
      relayState = HIGH;  // 어두우면 켜기
    } else if (averageLight > LIGHT_THRESHOLD_OFF) {
      relayState = LOW;   // 밝으면 끄기
    } else {
      relayState = previousRelayState;  // 중간값은 현재 상태 유지
    }

    // 상태 변경 필요시에만 릴레이 제어
    if (relayState != previousRelayState) {
      digitalWrite(RELAY_PIN, relayState);
      previousRelayState = relayState;
     
      // 상태 변경 로그
      Serial.print("Light turned ");
      Serial.println(relayState == HIGH ? "ON" : "OFF");
      Serial.print("Light level at change: ");
      Serial.println(averageLight);
    }
  }
}





조도감지센서가 어떻게 동작하는지에 대해 단 하나도 이해 못했지만

근이아이님의 코딩이 실제로 어떻게 구현되는지가 궁금해졌음

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 계엄 때문에 가장 큰 타격 입은 것 같은 스타는? 운영자 24/12/30 - -
공지 제주항공 여객기 사고 관련 운영자 24/12/31 - -
7020212 시레- 봄타이니갤로그로 이동합니다. 24.12.31 42 0
7020211 언더테일 이새끼들 머냐?????? 미쳤냐 [5] 삽치갤로그로 이동합니다. 24.12.31 60 0
7020210 아니 붐사태 노래 나와서 뭔가했더니 그냥 튼거였냐 황천볶음밥갤로그로 이동합니다. 24.12.31 17 0
7020209 사랑의열매ㅇㅈㄹㅋㅋㅋㅋㅋㅋㅋㅋㅋ 레헤갤로그로 이동합니다. 24.12.31 37 0
7020208 킥도 다시보기 남았던가 [4] 어사일럼갤로그로 이동합니다. 24.12.31 55 0
7020207 근데 진짜 한달에 한번씩 신라면 먹으니까 개맛있음 갤로그로 이동합니다. 24.12.31 23 0
7020206 ... 키레 걍 죽겟는데 이제 [2] 봄타이니갤로그로 이동합니다. 24.12.31 59 0
7020205 대가리에뭐이상한걸끼고왔노ㅋㅋㅋㅋ [1] 레헤갤로그로 이동합니다. 24.12.31 33 0
7020204 머리에 사랑의열매는 뭐야 쀼장갤로그로 이동합니다. 24.12.31 15 0
7020203 진짜 내일부터 진심 인생 산다 현룡갤로그로 이동합니다. 24.12.31 13 0
7020202 얘넨 또 뭘중계하는거야 [2] 위씽갤로그로 이동합니다. 24.12.31 52 0
7020201 넘의 나라 연말 행사도 인터넷으로 볼수 있고 세상 좋아졌다 황천볶음밥갤로그로 이동합니다. 24.12.31 28 0
7020200 시이나링고오냐??????? 레헤갤로그로 이동합니다. 24.12.31 24 0
7020199 올해 독서 결산 재탕 [12] ‘파타피갤로그로 이동합니다. 24.12.31 98 0
7020198 5억년만에 취할 때까지 마셨네 [3] ㅇㅇ.갤로그로 이동합니다. 24.12.31 30 0
7020197 바운디 진짜 순수 실력은 Goat구나 화참자갤로그로 이동합니다. 24.12.31 35 0
7020196 결과 31분까지 [14] 홈즈,갤로그로 이동합니다. 24.12.31 125 0
7020195 바운디햄 한곡만 더해줘 망아지갤로그로 이동합니다. 24.12.31 19 0
7020194 잠만! 여기 그 폐허잖냐 [1] 봄타이니갤로그로 이동합니다. 24.12.31 44 0
7020193 사다리 결과 30분까지 [2] 수줍.갤로그로 이동합니다. 24.12.31 169 2
7020192 아니 머여 유딱 신11싱 졸라세네 [3] MANGO갤로그로 이동합니다. 24.12.31 27 0
7020191 아니바운디햄진심걍미쳤다말이안됨 레헤갤로그로 이동합니다. 24.12.31 19 0
7020190 바운디 진짜 친근하게 생겼네 [4] 화참자갤로그로 이동합니다. 24.12.31 48 0
7020189 권도형 미국 인도 완료 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [8] 노벨쨩갤로그로 이동합니다. 24.12.31 82 1
7020188 그루브시요오제ㅋㅋㅋㅋㅋㅋ 레헤갤로그로 이동합니다. 24.12.31 23 0
7020186 뒷자리올라가는새끼들 존나불쌍하네 ㅋㅋ [3] 멍애(외교관)갤로그로 이동합니다. 24.12.31 45 0
7020185 아니 키레 이새끼 똥폼 다 잡아두고 개쳐발렸네 [3] 봄타이니갤로그로 이동합니다. 24.12.31 73 0
7020184 바운디햄진심노래주머니말안대네 [2] 레헤갤로그로 이동합니다. 24.12.31 38 0
7020183 시부키 표정 콘 이거 개웃기네 을현1.1갤로그로 이동합니다. 24.12.31 36 0
7020182 원래 가려던 라멘집 만석이라 팍식음 [4] 재일교4갤로그로 이동합니다. 24.12.31 37 0
7020181 유튜브 일부러 그러는간지 모르겠는데 모하비배달부갤로그로 이동합니다. 24.12.31 24 0
7020180 아 근데 미국 동물보호로 캣맘 잡는다는거 기가막히더라 [3] 갤로그로 이동합니다. 24.12.31 70 1
7020179 오늘얻은마리짤 [5] 푸슈갤로그로 이동합니다. 24.12.31 58 0
7020178 보쿠노미라이가~~~~~ 레헤갤로그로 이동합니다. 24.12.31 18 0
7020177 새해결산 올해 가장 숨막혓던 게시글 [8] 방방갤로그로 이동합니다. 24.12.31 79 3
7020176 바운디입갤ㅋㅋㅋㅋㅋ 레헤갤로그로 이동합니다. 24.12.31 16 0
7020175 25년에도 20대면 개추 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ [2] 수줍.갤로그로 이동합니다. 24.12.31 36 1
7020174 나중에 저도 라오루 중계나 달려볼까용 LonePi갤로그로 이동합니다. 24.12.31 21 0
7020172 재추첨 25분까지 [37] 홈즈,갤로그로 이동합니다. 24.12.31 112 0
7020171 바운디 입갤ㄲㅋㅋ [1] 화참자갤로그로 이동합니다. 24.12.31 15 0
7020170 아니... 이거 세이버보다 강해보이는데??? [1] 봄타이니갤로그로 이동합니다. 24.12.31 52 0
7020169 하루한번 감사의 코토네ss작. 재미교쓰리갤로그로 이동합니다. 24.12.31 22 0
7020168 대체기린은 머하는새끼들이길래 게이비율이 94%임 [2] 김샛별갤로그로 이동합니다. 24.12.31 41 0
7020167 살면서 터키 한번은 가보고싶음... 디저트 맛있어보임 [4] 다들안녕(판스퍼거)갤로그로 이동합니다. 24.12.31 30 1
7020166 봄타이니 중계 개 맛돌이네 ㅋㅋ 가오렌쟈갤로그로 이동합니다. 24.12.31 29 0
7020165 몸아파서 서러운데으 _새사람갤로그로 이동합니다. 24.12.31 17 0
7020164 하 사쿠라이 씨발 쓰레기년 [1] 봄타이니갤로그로 이동합니다. 24.12.31 56 0
7020163 결과 25분까지 [23] 홈즈,갤로그로 이동합니다. 24.12.31 119 0
7020162 이직 준비 해야하는데 개귀찮네 [2] 펭귀니우스갤로그로 이동합니다. 24.12.31 22 0
7020161 악수할때마다수명가져가는흡성대법ㅇㅈㄹㅋㅋㅋㅋ [3] 레헤갤로그로 이동합니다. 24.12.31 58 0
뉴스 JK 김동욱 “글 안 썼다고 추모 않는 것 아냐” SNS 갑론을박 속 소신 디시트렌드 14:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2