디시인사이드 갤러리

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

갤러리 본문 영역

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

썬컷0.6갤로그로 이동합니다. 2024.12.28 23:19:54
조회 83 추천 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 - -
7014296 레헤)시퀄브라이트 최종보스만 남기고 다왔음 [5] 재미교쓰리갤로그로 이동합니다. 12.30 26 0
7014295 애도기간 길어서 장소랑 일정 다 맞춘 약속 터질뻔한 거 꼴받긴 한데 [1] ‘파타피갤로그로 이동합니다. 12.30 56 0
7014294 1월1일 맞춰서 빡글할팟구함 래머갤로그로 이동합니다. 12.30 16 0
7014293 이태원 애도기간 두고 시마이친건 윤석열 유일업적이긴 한듯 [2] 무적칼퇴근갤로그로 이동합니다. 12.30 65 1
7014292 국가애도기간에 루체영애의 저녁 [12] 지평선,갤로그로 이동합니다. 12.30 38 0
7014290 poe2 뭔가 일하면서는 못하겠더라 [2] 까름칙갤로그로 이동합니다. 12.30 23 0
7014289 국가애도기간이라는게 참 애매해용 LonePi갤로그로 이동합니다. 12.30 37 0
7014288 ㄴ젖이 큰 미소녀로 강제로 TS당함 [1] gozaus갤로그로 이동합니다. 12.30 15 0
7014287 만갤 경화수월은 지금 생각해도 이세계헌헌이 [3] D4C서부갤로그로 이동합니다. 12.30 40 0
7014285 국가에ㄷ기간 초보팡갤러갤로그로 이동합니다. 12.30 16 0
7014283 콘서타 남용 언론보도가 넘 심해서 이주치 초과로 잘 안줌 [2] 회복의개같은노예카츠리갤로그로 이동합니다. 12.30 44 0
7014282 산타클로스 <-- 터키사람이었네 [2] ㅇㅇ갤로그로 이동합니다. 12.30 20 0
7014281 핸드크림 원통에들어있는건 어케쓰는거지 [7] seeu갤로그로 이동합니다. 12.30 34 0
7014280 혹한기에 콜라갖고 가면 ㄹㅇ 둔기되더라 무적칼퇴근갤로그로 이동합니다. 12.30 19 0
7014278 국가애도기간 대한민국 사례가 있긴 하네 가난한청년갤로그로 이동합니다. 12.30 51 0
7014277 poe 할때마다 느끼는거 [17] 투하갤로그로 이동합니다. 12.30 38 0
7014276 먼 싸벅 매장포장이 20분이나 걸리냐 ㅋ [1] 우므갤로그로 이동합니다. 12.30 19 0
7014274 저 내일 악랄하고무시무시한짓저지를거임 [6] 삐리릭빠바박갤로그로 이동합니다. 12.30 47 0
7014273 아오 썬컷 [2] 올고빔.갤로그로 이동합니다. 12.30 22 0
7014272 하아 저번병원시치 실망이네 우므갤로그로 이동합니다. 12.30 19 0
7014271 만롱도르 보다가 여기서 개터졋네 ㅋㅋㅋ [1] 언디갤로그로 이동합니다. 12.30 30 0
7014270 회사좆같아 파타퓌 [2] 김해린갤로그로 이동합니다. 12.30 29 1
7014269 오늘부터 글안쓰면 내가 진짜 아연이임 [3] 김요.갤로그로 이동합니다. 12.30 18 0
7014268 정병약 며칠 못먹다 먹으니 속 안 좋네 [3] 소일렌트그린갤로그로 이동합니다. 12.30 23 0
7014267 나 탈갤해서 더이상(하략)인데 근이고 보면서 작혼치다가 강등직전이다 [2] Embrio갤로그로 이동합니다. 12.30 38 0
7014266 poe2 나도 초반에럭키로뜬걸로 굴러갔던거깉긴해 [6] seeu갤로그로 이동합니다. 12.30 26 0
7014265 심벌즈 좀 불쌍함 [1] D4C서부갤로그로 이동합니다. 12.30 21 0
7014264 창창창 섭섭섭! 재일교4갤로그로 이동합니다. 12.30 11 0
7014263 중국인들 좀 꼴잘알이긴 한듯 ㄹㅇ [7] ㅇㅇ,(58.29) 12.30 50 0
7014262 국가애도기간=도파민비상계엄 같은 소리 그림먼저본다갤로그로 이동합니다. 12.30 27 0
7014261 제엔장~ 국가애도기간이라서 고기집을 못가겠잖냐 무명소졸,갤로그로 이동합니다. 12.30 20 0
7014260 나도 정직항 호평 받고싶다 gozaus갤로그로 이동합니다. 12.30 11 0
7014258 좌천후 초월급헌터 << 틀내가 맛있게 나네 고햐쿠엔[수험생]갤로그로 이동합니다. 12.30 18 0
7014257 핸드크림을 비건제품이냐고물어보는건머임? [5] seeu갤로그로 이동합니다. 12.30 31 0
7014256 아니 돼지련 심벌즈 하나로 짤 몇개를 복사하는거야 재미교쓰리갤로그로 이동합니다. 12.30 23 0
7014255 이건 어사일럼임 무명소졸임 [2] 투하갤로그로 이동합니다. 12.30 20 0
7014252 국가애도기간인데 야설을 써도될까? 이럼안되는거잖아 [6] 위씽갤로그로 이동합니다. 12.30 42 0
7014250 인방 애들 이제 페스나까지 하네 ㅋㅋㅋㅋㅋ [2] ㅇㅇ(119.194) 12.30 30 0
7014249 밥을 먹긴 먹어야하는데... [2] 사이쓰갤로그로 이동합니다. 12.30 17 0
7014248 3월중순까지 연차 1.5개 남았는데 어카지 무적칼퇴근갤로그로 이동합니다. 12.30 12 0
7014245 오늘 내 저녁보고가라 [2] 봄타이니갤로그로 이동합니다. 12.30 27 0
7014244 시발 시달소 그럴거라곤 생각했는데 나는ㅇㅇ갤로그로 이동합니다. 12.30 26 0
7014243 대체 국가애도기간이 뭐냐 [3] 분재갤로그로 이동합니다. 12.30 41 0
7014242 장갤 멸망해서 그 난민이 판갤에 흘러 들어오는 상상 가끔함 [5] 모하비배달부갤로그로 이동합니다. 12.30 41 0
7014241 에드가이 - 새크리파이스 한번 들어보셈 우주멍멍이갤로그로 이동합니다. 12.30 9 0
7014240 요즘에는 분위기상 중단을 팬들이 이해해줄 정도니 ㅋㅋㅋㅋ ㅇㅇ(115.41) 12.30 24 0
7014239 장챈에 누가 리뷰글 써주셨네요 ㄷ [6] 글도사갤로그로 이동합니다. 12.30 45 0
7014238 poe2 노동의가치가 너무땅에쳐박힘... [7] 인포그램갤로그로 이동합니다. 12.30 35 0
7014237 연말 놀러왓음 [6] 홈즈,갤로그로 이동합니다. 12.30 41 0
7014236 김정현과 손잡고 갤을 부셔볼까??? 회복의개같은노예카츠리갤로그로 이동합니다. 12.30 21 0
뉴스 '오징어게임2', 넷플릭스 보는 모든 나라 이틀 연속 1위 디시트렌드 12.30
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2