디시인사이드 갤러리

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

갤러리 본문 영역

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

썬컷0.6갤로그로 이동합니다. 2024.12.28 23:19:54
조회 78 추천 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 - -
7009894 스포) 몬파라 2회차 선택전까지 다밀었다 [6] 짭타쿠갤로그로 이동합니다. 12.29 12 0
7009892 이게 여자죠 산업갤로그로 이동합니다. 12.29 19 0
7009891 참피가 페이트시리즈보다 오래 살아남을 수도 있지 않냐 [2] 엘레베스갤로그로 이동합니다. 12.29 24 0
7009890 꼬카인 여동생 전개머냐 ㄹㅇ 방방갤로그로 이동합니다. 12.29 22 0
7009889 하아 근데 머 비행기 사고는 좀 애도기간 할수도 있지 그래 [3] 갤로그로 이동합니다. 12.29 62 0
7009888 근데 이리야보다 프라즈마 이리야가 더 꼴림 [2] ㅇㅇ(112.185) 12.29 24 0
7009886 아니 그냥 여기 헤븐즈 필 루트에서도 세이버가 히로인인데? [8] 봄타이니갤로그로 이동합니다. 12.29 77 0
7009885 술빨고 인투더브리치 하려니까 못해먹겠네 [2] ‘파타피갤로그로 이동합니다. 12.29 31 0
7009884 봄타이니 린 계속 창녀라고 부르다가 '진짜' 만나니까 [3] ㅇㅇ(36.38) 12.29 64 0
7009883 근데 항공사고는 보통 비행기명인데 [5] 소일렌트그린갤로그로 이동합니다. 12.29 75 0
7009882 버러지야 이건 안먹니 [3] 천덕영갤로그로 이동합니다. 12.29 33 0
7009881 슬슬 할 거 해야제... [4] 뭬뤠갤로그로 이동합니다. 12.29 32 0
7009880 토로토로 12월 29일 업데이트 떳다 ㅋㅋㅋㅋㅋㅋㅋ [1] ㅈㅅㅋㅇ갤로그로 이동합니다. 12.29 20 0
7009879 판갤페도기간 지정헷습니다. [2] 버러지갤로그로 이동합니다. 12.29 40 0
7009877 애도기간이 나쁜 것은 아닌데 너무 길다고 생각함 [3] 민트시즈닝갤로그로 이동합니다. 12.29 62 0
7009876 근데 페이트에서 야겜비중이 별로 안 높은가 [7] 엘레베스갤로그로 이동합니다. 12.29 74 0
7009875 안티킨봇 글 보니 총체적 난국이더라 소일렌트그린갤로그로 이동합니다. 12.29 24 0
7009874 시로야 힘든 길을 가는구나 [2] 봄타이니갤로그로 이동합니다. 12.29 44 0
7009873 헤븐즈필 이리야 루트 잇엇으면 보는건데,,,, 갤로그로 이동합니다. 12.29 14 0
7009872 붕스 길가메쉬 공개됐노 ㅋㅋㅋㅋ [3] 죄 악(110.11) 12.29 69 0
7009871 지금 냉수샤워하는 대악마적 택틱 어떻게 생각함 [5] 뭬뤠갤로그로 이동합니다. 12.29 26 0
7009870 헤븐즈필 그래도 극장판 엔딩 노래는 다 좋단말이지 ㄹㅇ [1] 천덕영갤로그로 이동합니다. 12.29 19 0
7009869 꼬카인 여동생 씨발 전개 뭐임??? [1] SHIRAYUKI갤로그로 이동합니다. 12.29 38 0
7009868 이 짤 좀 웃기네 [4] 쌍니은갤로그로 이동합니다. 12.29 39 0
7009867 그런데 이번 비행기사고 ㅁㅅㅁㅅ하네 [7] 홈즈,갤로그로 이동합니다. 12.29 68 0
7009866 도쿄 최고의 민도로 유명한 아다치구 미나미센쥬 레전드네 [4] 재일교4갤로그로 이동합니다. 12.29 38 0
7009865 아 깜짝아 세이버인줄 알았네 [3] 봄타이니갤로그로 이동합니다. 12.29 66 0
7009864 아니 로또 30 31 32 35 36 37 이거 수동으로 5개 찍은놈 있 [1] 갤로그로 이동합니다. 12.29 44 0
7009863 "처녀가 아니에요." (발깃) [3] 엘레베스갤로그로 이동합니다. 12.29 37 0
7009862 아무도 저태이 스페샬 반응이 없어서 울었어 [1] 칠사오갤로그로 이동합니다. 12.29 22 0
7009861 헤필 2편은 개쩔었는데 3편이 기대이하였어 STGM갤로그로 이동합니다. 12.29 15 0
7009860 아니 HF이리야가 딱 해탈해서 '정도'를 걷는 이리야지... [3] 빵케이크갤로그로 이동합니다. 12.29 68 0
7009859 하.. 풍운 이리야성 함달려? ㅇㅇ(222.110) 12.29 12 0
7009858 아 부키 그린사람이 곡고나도 그렸구나 [1] 갤로그로 이동합니다. 12.29 29 0
7009857 솔직히 강철의 마음 고르면 이리야 루트 탈수있게 해야함 [3] 이레몬갤로그로 이동합니다. 12.29 46 0
7009856 스포)근데 걍 사쿠라빠로서 이리야는 어머니 그 자체임 천덕영갤로그로 이동합니다. 12.29 26 0
7009855 이해하면 무서운 짤.jpg SHIRAYUKI갤로그로 이동합니다. 12.29 39 0
7009854 스포)사쿠라는 근데 단 하나도 더 나은게 없음 [6] 엘-프사이갤로그로 이동합니다. 12.29 66 0
7009853 아니 뭔데 지금 이리야네 숲에 뭐 있음??? [4] 봄타이니갤로그로 이동합니다. 12.29 61 0
7009852 생각보다 머 많이 안사서 걍 굿즈 좀 더사기루함 [15] 지평선,갤로그로 이동합니다. 12.29 32 0
7009851 할건 해야제..... [1] ㅇㅇ:갤로그로 이동합니다. 12.29 16 0
7009850 절대 놓지 마라, 잡종!! [7] 갤로그로 이동합니다. 12.29 59 0
7009849 진심 림월드켜놓고딴거하기뇌녹네 [4] 레헤갤로그로 이동합니다. 12.29 27 0
7009848 글고보니 풍화설월 도르마무버그 아직도잇나 김샛별갤로그로 이동합니다. 12.29 12 0
7009847 살면서 어떤특정한 히로인 캐릭터에 좋아한다?같은감정을 가져본적없음 [5] 민물쿠키갤로그로 이동합니다. 12.29 34 0
7009846 근데 부키 얘 누가 그린거임? [3] 갤로그로 이동합니다. 12.29 47 0
7009845 페이트 요약.manwa 엘레베스갤로그로 이동합니다. 12.29 54 0
7009844 ㅅㅂ브거킹왔는데 9시 폐점이라고 테이끄아웃만된대 [4] 재일교4갤로그로 이동합니다. 12.29 23 0
7009843 하아….사쿠라는 비처녀잖아 Lumpenproletariat갤로그로 이동합니다. 12.29 20 0
7009842 이거 미쿠 ㄹㅇ 귀엽지 않냐 에포캣ⁿ갤로그로 이동합니다. 12.29 23 0
뉴스 스테이씨 윤, ‘스타라이트 보이즈’ 최종화까지 든든하게 채웠다 디시트렌드 12.29
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2