디시인사이드 갤러리

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

갤러리 본문 영역

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

썬컷0.6갤로그로 이동합니다. 2024.12.28 23:19:54
조회 77 추천 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 - -
7010084 미국에서 온 흑인 S랭크 헌터인 빅 아담 존슨한테 ntr 당하는 야설 [1] ㅇㅇ,(58.29) 12.29 42 1
7010083 아니 이 검은 그림자는 대체 정체가 뭔데 조켄이 조종하는거임??? [3] 봄타이니갤로그로 이동합니다. 12.29 78 0
7010082 근근근근 이놈은 그래서 왜 작가계정으로 댓글을 다냐 [8] ‘파타피갤로그로 이동합니다. 12.29 90 0
7010081 쏘쏘 혹가이도 먼가 크게 이슈되진 않네 [3] ㅇㅇ(58.233) 12.29 77 0
7010080 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [3] 올베르갤로그로 이동합니다. 12.29 68 4
7010078 봄타이니가 정말정말보고싶었던 그 전개 [2] ㅈㅅㅋㅇ갤로그로 이동합니다. 12.29 63 0
7010077 버서커도 죽으면 저렇게 뺏기는거임??? [1] 봄타이니갤로그로 이동합니다. 12.29 69 0
7010076 케이네스 라이더 조합 보고 싶음 ㅇㅇ:갤로그로 이동합니다. 12.29 13 0
7010075 시로우의 마력으로는 닿지 않았던 곳까지 ㆁㆁ갤로그로 이동합니다. 12.29 19 0
7010074 와 저거 공항 카톡 남긴거 왤캐 슬프지 지평선,갤로그로 이동합니다. 12.29 49 0
7010073 아니 내 세이버가 왜 저런 모습으러 저기 있는건데... [7] 봄타이니갤로그로 이동합니다. 12.29 122 0
7010072 대충 저녁이란 제목 [2] 재일교4갤로그로 이동합니다. 12.29 21 0
7010071 Veo2 사용후기 떴네 [2] TS망상갤로그로 이동합니다. 12.29 34 0
7010070 가만 생각해보니 밀팩 특전때문에 일본 갈 이유는 없겠다 [8] backlot갤로그로 이동합니다. 12.29 41 0
7010069 흑인에게 간 여자는 돌아오지 않는다 [2] ㆁㆁ갤로그로 이동합니다. 12.29 45 0
7010068 아니 씨발 세이버!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [18] 봄타이니갤로그로 이동합니다. 12.29 642 12
7010067 Zaza Chinggidel [20] α센타우리갤로그로 이동합니다. 12.29 60 0
7010066 스포)토해드렷습니다 ^^ [2] 냉법비법화법갤로그로 이동합니다. 12.29 56 2
7010065 킷 타ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [2] 유열이갤로그로 이동합니다. 12.29 40 0
7010063 그러네 별 생각 없었는데 연말연초 내수는 완전 빠이빠이군 김정윤갤로그로 이동합니다. 12.29 50 0
7010062 근데 유럽 나락가는거보면 확실히 인간은 빡세게 굴려야 국가가 발전하는거같 ㅇㅇ(59.26) 12.29 44 0
7010061 짤 변천사 [2] ‘파타피갤로그로 이동합니다. 12.29 53 0
7010060 ???????????????????????????????????????? [25] 봄타이니갤로그로 이동합니다. 12.29 582 15
7010059 재밌어요 라는 댓글 보면 왠지 긁힘 [9] 구르미엄마갤로그로 이동합니다. 12.29 48 0
7010058 근데 또 애도기간 안 하면 음울한 분위기 이어지니 소일렌트그린갤로그로 이동합니다. 12.29 30 0
7010057 국가애도기간으로 치고 싶은 드립이 많이 떠오르는데 [11] NOIR갤로그로 이동합니다. 12.29 81 0
7010056 안주가 없군 [2] 망아지갤로그로 이동합니다. 12.29 16 0
7010055 아니 후려쳤으나- 이거 뭔데 [1] 봄타이니갤로그로 이동합니다. 12.29 50 0
7010054 와몸매짤 ㄹㅋㄹㅋ갤로그로 이동합니다. 12.29 19 0
7010051 지센 연애썰 날조선동 - 등본 주작 ㅇㅇ(175.223) 12.29 23 0
7010050 뭔대 성배로 얻으려 했던게 뭔데 [5] 봄타이니갤로그로 이동합니다. 12.29 73 0
7010048 스나가스포가되는놈들이부럽다 나는ㅇㅇ갤로그로 이동합니다. 12.29 20 0
7010047 님들아 저 지금 ㅅ 이랑 ㅛ 안누르기 챌린지중임 [9] ㅇㅇ(36.38) 12.29 36 0
7010045 라인배틀 처음 본 이세계군대 반응 <- 이거 좀 맛있을거같음 [3] 갤로그로 이동합니다. 12.29 43 0
7010044 신원확인 다 끝나서 179명 사망처리 됐네 [11] 홈즈,갤로그로 이동합니다. 12.29 141 0
7010043 근데 이걸로 진짜 연말연초 장사 사형선고 당했네 [4] 무명소졸,갤로그로 이동합니다. 12.29 91 0
7010042 근데 성배로 불로불사 얻어봤자 고통 뿐인 삶 아닌가 [3] 봄타이니갤로그로 이동합니다. 12.29 68 0
7010041 난 이런거 좀 과장이 무조건 섞였다고 생각함 [5] 갤로그로 이동합니다. 12.29 86 0
7010040 애도기간이라는거 연차까지 금지였냐고 [8] 쀼장갤로그로 이동합니다. 12.29 93 0
7010039 서구권 성 <- 1회용이었단게 젤 재밌는듯 [6] ㅇㅇ갤로그로 이동합니다. 12.29 60 0
7010038 뭔가를 격렬하게 좋아하고 싶다 [4] 우주멍멍이갤로그로 이동합니다. 12.29 26 0
7010037 근데 진짜 할배 뭔 깡으로 버서커한테 덤비는거냐? [5] 봄타이니갤로그로 이동합니다. 12.29 81 0
7010036 약간 쥐새끼처럼 생긴 영애...jpg [1] 수류탄이야갤로그로 이동합니다. 12.29 47 0
7010035 사실 나도 페이트 안햇는데 중계 보는중임 [6] 미야악갤로그로 이동합니다. 12.29 51 0
7010034 성배가 주인을 고른다는 얘기인가 [3] 봄타이니갤로그로 이동합니다. 12.29 62 0
7010033 머리가 멍하네 망아지갤로그로 이동합니다. 12.29 10 0
7010032 님드라 저 락스타하고십음 [4] 라니리갤로그로 이동합니다. 12.29 22 0
7010031 근데 버서커가 전력질주해도 그림자보다 달리기속도 느린건가??? [3] D4C서부갤로그로 이동합니다. 12.29 69 0
7010030 그래도 술이 좋구나 [1] ‘파타피갤로그로 이동합니다. 12.29 31 0
7010029 붕스 망귀인 1돌 전무 해주니까 명함 땀랑대비 [8] 라만차의기사갤로그로 이동합니다. 12.29 22 0
뉴스 문가비 "정우성에 결혼 요구한 적 없어…아이는 실수 아닌 선물" 디시트렌드 12.29
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2