디시인사이드 갤러리

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

갤러리 본문 영역

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

썬컷0.6갤로그로 이동합니다. 2024.12.28 23:19:54
조회 73 추천 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 - -
7010031 근데 버서커가 전력질주해도 그림자보다 달리기속도 느린건가??? [3] D4C서부갤로그로 이동합니다. 12.29 69 0
7010030 그래도 술이 좋구나 [1] ‘파타피갤로그로 이동합니다. 12.29 31 0
7010029 붕스 망귀인 1돌 전무 해주니까 명함 땀랑대비 [8] 라만차의기사갤로그로 이동합니다. 12.29 22 0
7010028 이사람은 자기 그림실력 늘어나는거 매년자랑하네 [11] 무명소졸,갤로그로 이동합니다. 12.29 109 0
7010027 홈즈 너무해 왜 나한테만 답글 안달아줘 [1] ㅇㅇ(36.38) 12.29 18 0
7010026 몰루 여성향 팬들도 많은가 [10] NOIR갤로그로 이동합니다. 12.29 58 0
7010025 (역) 그 아편전쟁때 청나라 팔기군 지휘관이 영국 레드코트 보고 갤로그로 이동합니다. 12.29 28 0
7010024 몬파라 종장 스포) 근데 진짜 그란베리아 [3] 짭타쿠갤로그로 이동합니다. 12.29 30 0
7010023 아니 그림자 눈코입 생겼는데??? [1] 봄타이니갤로그로 이동합니다. 12.29 77 0
7010022 김정윤의 PS를 걸고 보증하는 순결한 처녀 [2] ㅇㅇㅇ(49.142) 12.29 26 0
7010021 아니 버서커가 제정신으로 돌아올 정도의 강함임??? [6] 봄타이니갤로그로 이동합니다. 12.29 100 0
7010020 미우라아즈사와나카노아즈사중누가더오래되었는가에대한토론 엉곰갤로그로 이동합니다. 12.29 13 0
7010019 슈카월드 오늘 휴방이구나... [2] 민물쿠키갤로그로 이동합니다. 12.29 45 0
7010018 이리야 빨리 도망쳐! [3] 봄타이니갤로그로 이동합니다. 12.29 56 0
7010017 5차 현실적 최강 조합은 이거밖에 없지 않나... [2] 나는ㅇㅇ갤로그로 이동합니다. 12.29 53 0
7010016 아니 무토 모니터링 커버입갤ㅋㅋㅋㅋㅋㅋ 레헤갤로그로 이동합니다. 12.29 10 0
7010015 참고로 오늘 하루동안 보잉 항공기는 3번 사고가 났음 [4] 김정윤갤로그로 이동합니다. 12.29 101 0
7010013 오들오들 판붕이의 저녁.jpg [2] 릴판갤로그로 이동합니다. 12.29 29 0
7010014 봄타이니 중계글에서 기다리는 장면 [2] rain6ow갤로그로 이동합니다. 12.29 42 0
7010012 독자에게 지랄해서 연독을 망치면 [3] ‘파타피갤로그로 이동합니다. 12.29 62 0
7010011 21세기에 죽으면 컨텐츠 못보고 발전 구경 못하는게 ㄹㅇ 미드と애니の노래갤로그로 이동합니다. 12.29 18 1
7010010 이리야 무사해라...! [1] 봄타이니갤로그로 이동합니다. 12.29 31 0
7010009 이시국씨 또 열일하는 거냐? 지름코드갤로그로 이동합니다. 12.29 24 0
7010008 국가애도기간이 국가의 죽음을 애도하는 기간이라니 그림먼저본다갤로그로 이동합니다. 12.29 32 0
7010007 그래 고기방패를 해라 [1] 봄타이니갤로그로 이동합니다. 12.29 31 0
7010006 순결홈즈 매드무비 ㅇㅇㅇ(49.142) 12.29 34 0
7010005 이태원때도 그렇고 좀 조사한 뒤에 어느정도 마무리되면 [4] 김요.갤로그로 이동합니다. 12.29 69 0
7010004 걍 봄타 반응만 기다리고 있으면 ㄱㅊㅋㅋㅋㅋ [2] 올베르갤로그로 이동합니다. 12.29 30 1
7010002 아니 씨발 사쿠라 이년 치마속에 뭘 키우는 것임??? [5] 엘레베스갤로그로 이동합니다. 12.29 70 0
7010001 파엠 분위기가 뭔가 붕스랑 비슷하네 (모리어티)갤로그로 이동합니다. 12.29 9 0
7010000 예상외로 성장한게 더 이쁜 몰루 캐릭터 [8] NOIR갤로그로 이동합니다. 12.29 48 0
7009999 아니 버서커 싸우는거 보러 갈 거냐고?? [1] 봄타이니갤로그로 이동합니다. 12.29 39 0
7009998 봄타이니이새끼 이제곧 '그거'보겠네 인포그램갤로그로 이동합니다. 12.29 26 0
7009997 부산사람만 보셈 [38] 홈즈,갤로그로 이동합니다. 12.29 90 0
7009996 아니 ㄹㅇ 생각해보셈 이와중에 롯데에서 회식하다 걸렸다?? [1] 갤로그로 이동합니다. 12.29 58 0
7009993 유열이가 좋아하는 즈사 [2] 엉곰갤로그로 이동합니다. 12.29 29 0
7009992 근데 사람이 조종하는 전열보병 앞으로 자동으로 선그어지는거 마법적으로 갤로그로 이동합니다. 12.29 28 0
7009991 킹 움짤 한장 더 쪄옴 [3] D4C서부갤로그로 이동합니다. 12.29 40 0
7009990 근데 애도 기간이 무얼하는것이지 [2] ㅇㅇ(115.143) 12.29 42 0
7009989 비각 바나나 ㅇㅇ(223.38) 12.29 19 0
7009987 숲에서 뭐 싸우나본데??? [5] 봄타이니갤로그로 이동합니다. 12.29 80 0
7009986 속보) 사자혼 신작 떴다!!!! [4] ㅇㅇ갤로그로 이동합니다. 12.29 44 0
7009985 이게 페이트 최강조합이라고 함 [3] 엘레베스갤로그로 이동합니다. 12.29 55 0
7009984 노르르상이나 좋아할 뿔녀 [2] 올고빔.갤로그로 이동합니다. 12.29 24 0
7009983 애도기간이면 회식같은거 다 취소되나 [15] 어사일럼갤로그로 이동합니다. 12.29 78 0
7009982 그래도 토오사카가 사쿠라보단 인성이 낫네 [2] 봄타이니갤로그로 이동합니다. 12.29 56 0
7009981 이게 페잍 [1] 엘레베스갤로그로 이동합니다. 12.29 23 0
7009980 몬파라 ㅅㅂ 처음에 구상했던 거 진짜 말 안되긴 했다 [8] ㅈㅅㅋㅇ갤로그로 이동합니다. 12.29 36 0
7009979 국가마도기간을 선포하겠습니다 갤로그로 이동합니다. 12.29 13 0
7009978 술마시면 부끄러워서죽을거같다....... [3] 냥초크1갤로그로 이동합니다. 12.29 32 0
뉴스 호평·혹평 교차 ‘오겜2’ 공개 하루만 넷플릭스 글로벌 1위 디시트렌드 12.29
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2