홈 > 자료실 > 통계자료

통계자료

당산서중_코딩실습
✍️ 관리자 📅 2024.11.06 00:27 👁 7
#include

#define LED_PIN     6    // NeoPixel LED 핀 (아두이노 핀 번호)
#define NUM_PIXELS  8    // NeoPixel LED 수 (8개)
#define SENSOR_PIN  A0   // 토양 수분 센서 핀 (아날로그 핀)

Adafruit_NeoPixel strip(NUM_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();  // NeoPixel 초기화
  strip.show();   // LED 초기 상태 (꺼짐)
  pinMode(SENSOR_PIN, INPUT);  // 수분 센서 핀 설정
  Serial.begin(9600);  // 시리얼 통신 시작
}

void loop() {
  int sensorValue = analogRead(SENSOR_PIN);  // 센서 값 읽기 (0 ~ 1023)

  // 시리얼 모니터에 센서 값 출력
  Serial.print("Soil Moisture Value: ");
  Serial.println(sensorValue);

  // 센서 값을 0 ~ 1023 범위에서 0 ~ 255 범위로 변환
  int ledBrightness = map(sensorValue, 0, 1023, 0, 255);

  // LED 개수에 맞게 켜지거나 꺼지는 LED 수 계산
  int ledsOn = map(ledBrightness, 0, 255, 0, NUM_PIXELS);

  // LED 상태 업데이트
  for (int i = 0; i < NUM_PIXELS; i++) {
    if (sensorValue > 700) {  // 수분 부족 (센서 값이 300 미만)
      // 수분이 부족하면 모든 LED가 분홍색(Pink)
      strip.setPixelColor(i, strip.Color(255, 0, 255));  // 분홍색
    } else if (sensorValue >= 400 && sensorValue <= 700) {  // 수분 값에 따라 청색 점차적으로 켜짐
      // 수분이 적당하면 LED가 청색으로 점진적으로 켜짐
      int blueLevel = map(sensorValue, 400, 700, 0, 255);
      if (i < ledsOn) {
        strip.setPixelColor(i, strip.Color(0, 0, blueLevel));  // 청색
      } else {
        strip.setPixelColor(i, strip.Color(0, 0, 0));  // 꺼짐
      }
    } else {  // 수분 값이 적정 이상일 경우
      // 수분이 충분하면 모든 LED가 꺼짐
      strip.setPixelColor(i, strip.Color(0, 0, 0));  // 꺼짐
    }
  }

  strip.show();  // LED 상태 갱신

  delay(500);  // 0.5초 대기 (센서 값이 변화할 때마다 천천히 업데이트)
}
▲ 다음글 숲과삶
▼ 이전글 ChatGPT 코딩실습 (영림중)

🔒 비밀번호 확인

글 작성 시 입력한 비밀번호를 입력하세요.

비밀번호가 일치하지 않습니다.
NSB (Nature Soil Balance) 치유농업센터
 
주소: (구.사무실) 서울시 강남구 역삼동 823-11 유양빌딩 5층 / (사무실 이전) 춘천시 남산면 갯골길 110-20 연구동 1층
   / (우편물사서함) 서울시 용산구 용산우체국 사서함 제3호  
대표전화: 02-307-8000 / 기술거래사: 010-4283-0000 / 전자팩스: 0505-562-4949 / 일반팩스: 02-562-4949
이메일: remy@nsb.kr
 
COPYRIGHT CI 2002-2026 NSB Korea Valuation Group. ALL RIGHTS RESERVED