정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

레인센서+네오픽셀 도와주세요!!
박예린 | 2018-12-17

빗물 측정 센서 (MH-RD)로 네오픽셀 연출을 하려고하는데요,

On/Off 랑 아날로그 값으로 효과를 변하게 하려고 합니다

다리있는 led로는 성공했고, 레인센서 값은 잘 출력되는데 네오픽셀을 코딩하는게 어렵네요 ㅠㅠ

네오픽셀도 잘되는 거 확인했습니다 도와주세요 ㅠㅠ

 

#include <Adafruit_NeoPixel.h>


#define PIN 6
int rainPin = A0;


//네오픽셀을 사용하기 위해 객체 하나를 생성한다. 
//첫번째 인자값은 네오픽셀의 LED의 개수
//두번째 인자값은 네오픽셀이 연결된 아두이노의 핀번호
//세번째 인자값은 네오픽셀의 타입에 따라 바뀌는 flag
Adafruit_NeoPixel strip = Adafruit_NeoPixel(9, PIN, NEO_GRB + NEO_KHZ800);


void setup() {
  strip.begin(); //네오픽셀을 초기화하기 위해 모든LED를 off시킨다
  strip.show(); 
      pinMode(rainPin, INPUT);
 pinMode(PIN6, OUTPUT);
}

void loop() {
    int sensorValue = analogRead(rainPin);
  Serial.print(sensorValue);
  if(sensorValue > 800){
    Serial.println(" - It's dry");
  //아래의 순서대로 NeoPixel을 반복한다.
  colorWipe(strip.Color(0, 0, 0), 50); //빨간색 출력
  colorWipe(strip.Color(0, 0, 0), 50); //녹색 출력
  colorWipe(strip.Color(0, 0, 0), 50); //파란색 출력
  }

  else if(sensorValue < 800 && 500 <= sensorValue ) {
     Serial.println(" - It's raining");

  theaterChase(strip.Color(127, 127, 127), 50); //흰색 출력
  theaterChase(strip.Color(127,   0,   0), 50); //빨간색 출력
  theaterChase(strip.Color(  0,   0, 127), 50); //파란색 출력
  }

  else {
    Serial.println(" - It's wet");
  //화려하게 다양한 색 출력
  rainbow(20);
  rainbowCycle(20);
  theaterChaseRainbow(50);
}

}

 

여기서  pinMode(PIN6, OUTPUT); 를 쓰는 게 맞나요? 그리고 digitalWrite 대신   colorWipe 쓰는 걸로 알았는데 colorWipe is not declared in this scope라고 뜹니다......

프로필사진

수박쨈 2018-12-18 14:00:14

PIN6이 무엇을 의미하는것인지 알 수 없습니다.

 

PIN6은 내부에서 정의된 값이 아니기 때문에 코드상에서 실행할 경우 에러를 발생시킵니다.

 

PIN6이 무엇인지 먼저 정의해 주어야 합니다.

 

int PIN6 = 6; 이런 방법으로 정의해주시면 됩니다.

 

colorWipe()함수는 Neopixel라이브러리 내에서 정의된 함수가 아니기 때문에 에러가 발생합니다.

 

colorWipe()를 쓰시려면 아두이노 코드 내에서 이 함수를 정의해야 하는데 위 코드에서는 그 부분이 빠져있습니다.

 

colorWipe의 경우 neopixel라이브러리의 예제 중 strandtest에보시면 이 함수가 정의된 부분이 있으니 그 부분을 가져다 쓰시면 에러발생은 해결될겁니다.

 

 

 

 

이전글   |    mpu6050 calibration(영점조정)! 2018-12-17
다음글   |    아두이노 포트인식문제(장치관리자ok, IDE 됬다 안됬다) ... 2018-12-17