디시인사이드 갤러리

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

갤러리 본문 영역

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

썬컷0.6갤로그로 이동합니다. 2024.12.28 23:19:54
조회 91 추천 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 - -
7020768 내일 일출시간도 7시반 이후라 보면되나 [1] 적근대갤로그로 이동합니다. 24.12.31 25 0
7020767 여캐가 더 강하다는것에의한 꼴림상승지분은 몆% 정도일까 문득 궁금해졋다. D4C서부갤로그로 이동합니다. 24.12.31 34 0
7020766 2025년이 오긴 오는구나 머제이갤로그로 이동합니다. 24.12.31 14 0
7020764 아시발 ㅋㅋ 정떡은 아닌데 이거 순수하게 웃기네 [6] 삽치갤로그로 이동합니다. 24.12.31 83 0
7020763 켄시햄 라이브 인증ㅋㅋㅋㅋㅋ 화참자갤로그로 이동합니다. 24.12.31 30 0
7020762 다들 새해 복 많이 받아 [7] 펭귀니우스갤로그로 이동합니다. 24.12.31 22 0
7020761 취직이라는 거 진짜 어쩌지 [3] alembic갤로그로 이동합니다. 24.12.31 46 0
7020760 이렇게 까지 해야지 시로가 정신을 유지한다고?? [1] 봄타이니갤로그로 이동합니다. 24.12.31 68 0
7020759 자와미 갈릭소스 둘다 좀 꺼졌으면하는데 [1] ㅇㅇㅇ(223.39) 24.12.31 45 0
7020758 39그램짜리 무선마우스 처분하고 유선으로 돌아온 [7] backlot갤로그로 이동합니다. 24.12.31 50 0
7020757 오늘의안주 [1] ㄹㅋㄹㅋ갤로그로 이동합니다. 24.12.31 21 0
7020756 꾸브라꼬 양념꾸브 개맛있다 [4] 콜드오렌지갤로그로 이동합니다. 24.12.31 29 0
7020755 얘들아 나 아연인데 급등주타기놀이할까 [2] 김요.갤로그로 이동합니다. 24.12.31 32 0
7020753 아니 이거 진짜임? 봄타이니갤로그로 이동합니다. 24.12.31 49 0
7020752 아버지께 꾸중을 들었습니다 [3] alembic갤로그로 이동합니다. 24.12.31 65 0
7020751 켄시 입갤ㅋㅋㅋㅋㅋㅋㅋㅋ 망아지갤로그로 이동합니다. 24.12.31 18 0
7020750 켄시햄 라이브 지리긴하네 화참자갤로그로 이동합니다. 24.12.31 24 0
7020749 바우 올고빔 홈즈 보고싶다 [1] 판갤러(116.34) 24.12.31 17 0
7020748 한해 마지막 딸딸이와 새해 첫 딸딸이를 함께해볼까. [2] 시온마츠리갤로그로 이동합니다. 24.12.31 26 0
7020747 아니 진짜로 시로 어떡하냐??? 봄타이니갤로그로 이동합니다. 24.12.31 57 0
7020745 페그오 짭cm 진짜개웃기네 [1] 어사일럼갤로그로 이동합니다. 24.12.31 43 0
7020744 에퍼처 사이언스가 여기서 나오는거구나 [3] 중정갤로그로 이동합니다. 24.12.31 36 0
7020743 판갤 첫글 내가 가져갈것 ㄷ [6] 일레이나갤로그로 이동합니다. 24.12.31 38 0
7020742 와 또 치매가 심해졌네 봄타이니갤로그로 이동합니다. 24.12.31 54 0
7020741 새해에 판갤러들도 알아두면 좋을 참/들기름 올바른 보관법 [13] 홈즈,갤로그로 이동합니다. 24.12.31 63 0
7020740 요새 내 쇼츠 돌고래유괴단에 오염됭 [1] 김해인갤로그로 이동합니다. 24.12.31 25 0
7020739 스포)카리야를 바라보는 키레의 심정이 이러했으랴 [2] ㆁㆁ갤로그로 이동합니다. 24.12.31 40 0
7020738 인간ㄷ 새해 복 많이 받는ㄷ [10] α센타우리갤로그로 이동합니다. 24.12.31 36 0
7020737 판갤방언으로 쓸데없이 자존감 치켜새워주고 비행기 태우는거 뭐라했지 [6] 와구와구갤로그로 이동합니다. 24.12.31 72 0
7020736 한국의 정신적수도 인천팸만 봐 [1] 미야악갤로그로 이동합니다. 24.12.31 26 0
7020735 다들 새해복 많이 받아라 [2] Saturn갤로그로 이동합니다. 24.12.31 22 0
7020734 모두 내년엔 좋은 한 해 되십쇼 [2] 든든허스터갤로그로 이동합니다. 24.12.31 20 0
7020733 나구사콘 이거 뭔가 쓰기 좋은게 다 고무장갑 반룡에만 몰려있어 갤로그로 이동합니다. 24.12.31 22 0
7020731 귀여운 콘 쓰지 마라 ㅇㅇ 따먹고싶어지니깐 [2] 을현1.1갤로그로 이동합니다. 24.12.31 26 0
7020730 얘들아 그래도 이리야는 구했어 [2] 봄타이니갤로그로 이동합니다. 24.12.31 70 1
7020729 ㄴ그치만 반룡!!!!! 너 팔이!!!!! 그래서니가누군데갤로그로 이동합니다. 24.12.31 18 0
7020728 "그것은, 여초1딩이라기엔 너무 거대했다." ㅇㅇ(106.102) 24.12.31 28 0
7020727 1. 비류쏘 젖탱이를 깐다 [4] 모하비배달부갤로그로 이동합니다. 24.12.31 40 0
7020726 닉언하고 댓글다니까 쳐주는구나... 고맙다.... 자와미갤로그로 이동합니다. 24.12.31 37 0
7020725 왜 대통령실에서 체포영장이 불법이라고 하나 했더니 [1] 재일교4갤로그로 이동합니다. 24.12.31 66 0
7020724 와 키레 얘 뭐 바퀴벌레임???? [1] 봄타이니갤로그로 이동합니다. 24.12.31 64 0
7020723 최근 10년간 투자 레전드는 코인 제외하고 [4] 홈즈,갤로그로 이동합니다. 24.12.31 54 0
7020722 우우 판부이들 새해엔 행복해라 [7] 김해인갤로그로 이동합니다. 24.12.31 23 0
7020720 신년맞이 사다리가 그렇게 돌아갔는데 한개도 당첨이 안된 [3] 와구와구갤로그로 이동합니다. 24.12.31 43 0
7020717 아니 노벨피아 구독 끊었는데 경성헌터 뭐임 [5] 속죄황갤로그로 이동합니다. 24.12.31 76 0
7020716 엥???????????????????? [2] 봄타이니갤로그로 이동합니다. 24.12.31 97 0
7020715 40대 언저리 유튜버가 ai그림 적극 사용하는거 쉽지않음 [4] 천덕영갤로그로 이동합니다. 24.12.31 63 0
7020713 명백한 홈처녀 재일교4갤로그로 이동합니다. 24.12.31 26 0
7020714 벌써 25년도가 코앞이네 ㅇㅇ갤로그로 이동합니다. 24.12.31 19 0
7020712 ㄴ 그치만, 샹크스. 팔이!!! 가오렌쟈갤로그로 이동합니다. 24.12.31 14 0
뉴스 홍진영, 제주항공 참사로 지인 잃어…“며칠 전에도 봤는데” 디시트렌드 01.01
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2