디시인사이드 갤러리

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

갤러리 본문 영역

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

썬컷0.6갤로그로 이동합니다. 2024.12.28 23:19:54
조회 92 추천 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 - -
7020971 인싸들 뭐 타종하는데도 눈치보고있는거아니냐 [1] 재미교쓰리갤로그로 이동합니다. 24.12.31 47 0
7020970 25년도 걍 이번년도 비스무리하게 흘러가길 지평선,갤로그로 이동합니다. 24.12.31 13 0
7020969 페그오 나만의 그랜드서번트 선정은 뭐고 ㅋㅋㅋㅋ 어사일럼갤로그로 이동합니다. 24.12.31 38 0
7020968 그랜드서번트화ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 망아지갤로그로 이동합니다. 24.12.31 23 0
7020966 주장4 봄 확정 뇽룡이갤로그로 이동합니다. 24.12.31 15 0
7020965 아니 새해충 울궈먹으려고 할인 존나해주는데 갤로그로 이동합니다. 24.12.31 24 0
7020964 다들 새해 복 많이 받아 [4] Karen갤로그로 이동합니다. 24.12.31 27 1
7020963 올해는 ㄹㅇ 창팝의해엿군 ㅇㅇ(218.144) 24.12.31 19 0
7020962 소전2 생각해보니 길드전 쎈애들 데리고 할필요없네 [2] 래머갤로그로 이동합니다. 24.12.31 33 0
7020961 아 근데 문명 왤케 답답하냐 다들안녕(판스퍼거)갤로그로 이동합니다. 24.12.31 15 0
7020960 뭐냐.. 붕스도 스킨 나오냐? [3] 홈즈,갤로그로 이동합니다. 24.12.31 32 0
7020958 2025년 목표= 로또 1등 당첨되기 외않됌갤로그로 이동합니다. 24.12.31 12 0
7020955 우우 이제 빼도박도못하도 삼십중반이야 [9] 김해늑시갤로그로 이동합니다. 24.12.31 53 0
7020954 포박이들만 봐 [1] 디클군갤로그로 이동합니다. 24.12.31 21 0
7020953 근데 미장 양도세언제까지 내야함? [2] 일레이나갤로그로 이동합니다. 24.12.31 32 0
7020952 (스포/봄타이니보지마) 근데 봄타중계 그게진짜기대되네..... 시공추갤로그로 이동합니다. 24.12.31 27 0
7020951 슴세심다 고햐쿠엔[수험생]갤로그로 이동합니다. 24.12.31 14 0
7020950 신년캐 리처드네 어사일럼갤로그로 이동합니다. 24.12.31 22 0
7020949 와 그럼 조켄 안 죽었으면 조켄이 인류 정복 했겠네??? 봄타이니갤로그로 이동합니다. 24.12.31 43 0
7020948 신년서번트 리처드 키타 뇽룡이갤로그로 이동합니다. 24.12.31 17 0
7020947 매일 1퍼씩 먹기 2일차 성공 [4] 김요.갤로그로 이동합니다. 24.12.31 30 0
7020944 복주머니 픽업 뇽룡이갤로그로 이동합니다. 24.12.31 14 0
7020943 판붕이... 집구석에서 치지직으로 제야의종 대기중... 판갤러(116.40) 24.12.31 17 0
7020942 하지메 혼자서 걍 춤선이 다르긴 하네 삐리릭빠바박갤로그로 이동합니다. 24.12.31 20 0
7020941 제기랄. 15분남앗나. 나이먹기싫다. [7] 김첨G갤로그로 이동합니다. 24.12.31 63 0
7020940 복주머니 2회가능 [1] 뇽룡이갤로그로 이동합니다. 24.12.31 22 0
7020939 그냥 3차부터 이미 어그러졌었구나 [1] 봄타이니갤로그로 이동합니다. 24.12.31 42 0
7020938 소전2 서클 19퍼에서 10퍼로 올랐네 [4] 래머갤로그로 이동합니다. 24.12.31 25 0
7020937 예전에 코로나 미국 물류대란이 ㅁㅅㅁㅅ함 [2] 홈즈,갤로그로 이동합니다. 24.12.31 34 0
7020936 피티 등록하려 햇는데 '새해충' 같아서 힘드네.... [6] 칩고리갤로그로 이동합니다. 24.12.31 65 0
7020935 분수 있냐 마블 거시기 이 겜 재밌네 ㅇㅇ [2] 을현1.1갤로그로 이동합니다. 24.12.31 19 0
7020934 코인 < 2025년에는 절대 손대지 않기로 각오함 [1] 비밀통로갤로그로 이동합니다. 24.12.31 27 0
7020933 오늘 암생각없이 발을 봤는데 퉁퉁부어있네 [2] 김해늑시갤로그로 이동합니다. 24.12.31 28 0
7020932 카노우 왔다 뇽룡이갤로그로 이동합니다. 24.12.31 13 0
7020931 25년은 걍 행복 했으면 좋겠음. [6] ㅋㅁㄱ갤로그로 이동합니다. 24.12.31 25 0
7020930 퓌캬륀 근데 아빠가 퓌캬륀한테 하는 폭언의 내용이 어떤게 잇음? [5] 적근대갤로그로 이동합니다. 24.12.31 54 0
7020929 페그오 진짜 하고싶은거 다하네 ㅋㅋㅋㅋ [2] 어사일럼갤로그로 이동합니다. 24.12.31 62 0
7020928 저 요즘 느끼는게 평소에 자기가 운동을 좆도 안했는데 [5] 갤로그로 이동합니다. 24.12.31 44 0
7020927 이제 안주 진짜 하나도 없네 [2] 망아지갤로그로 이동합니다. 24.12.31 22 0
7020926 와 시발 카레짱개쳐내 [3] 누나♡갤로그로 이동합니다. 24.12.31 27 0
7020925 당일해고 하니까 그 미국 iT기업 썰들 떠오름 [2] 홈즈,갤로그로 이동합니다. 24.12.31 54 0
7020924 하아 술을 안마시니깐 상당히 빡세다 씨발 [2] YAMATO갤로그로 이동합니다. 24.12.31 21 0
7020923 아니 ㄹㅇ 근데 그림자가 ㄹㅇ 번쩍번쩍함 솣쟝갤로그로 이동합니다. 24.12.31 19 0
7020921 호주 월세 비싸지않나? 아파트를 살수잇다고? [1] ㅇㅇ(106.101) 24.12.31 26 0
7020919 2025년에는 억의 사나이가 되고 싶군... [1] 비밀통로갤로그로 이동합니다. 24.12.31 27 0
7020917 뭔가 새해라고 하니 중국 군벌이 되어 개발딸하는 대역이 땡기는군 ㅇㅇ,(58.29) 24.12.31 26 0
7020916 근데 대통령 없어서 새해신년사 이런거 디 대행이하나 [2] 일레이나갤로그로 이동합니다. 24.12.31 24 0
7020915 호주는 최저시급2만원이나되구나 [9] 푸슈갤로그로 이동합니다. 24.12.31 54 0
7020914 아니 배화교 이 미친새끼들!!!!!!!!!!! [5] 봄타이니갤로그로 이동합니다. 24.12.31 85 0
7020912 머리아파 STGM갤로그로 이동합니다. 24.12.31 10 0
뉴스 뮤지컬배우 겸 가수 김준수(XIA) 팬클럽 코코넛, 네이버 해피핀 팬기부 릴레이 디시트렌드 01.01
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2