정보나눔

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

조이스틱-네오픽셀 질문 드립니다.
이나경 | 2015-12-08

조이스틱을 이용해서 네오픽셀 개별 컨트롤을 하고 싶은데요.

코드 열심히 찾아봤는데 안나와서 가능한건지 궁금합니다ㅜ

구조는 네오픽셀 스트립에서 8개를 잘라 원형으로 만들었습니다. 가운데에 조이스틱을 붙여서 움직이는 형태이구요.

조이스틱은   X값 - A0 / Y값 - A1 / SW - 2           

네오픽셀은 13에 연결했습니다.

 

네오픽셀 라이브러리에 있는 아래 코드를 써서

조이스틱의 버튼을 눌러 끄고 - 색변화 - 다시 끔 까지는 되었는데요.

 // Check if state changed from high to low (button press).
  if (newState == LOW && oldState == HIGH) {
    // Short delay to debounce button.
    delay(20);
    // Check if button is still low after debounce.
    newState = digitalRead(BUTTON_PIN);
    if (newState == LOW) {
      showType++;
      if (showType > 9)
        showType=0;
      startShow(showType);
    }
   

  }

 

 

  // Set the last button state to the old state.
  oldState = newState;
}

void startShow(int i) {
  switch(i){
    case 0: colorWipe(strip.Color(0, 0, 0), 50);    // Black/off
            break;
    case 1: colorWipe(strip.Color(255, 0, 0), 50);  // Red
            break;
    case 2: colorWipe(strip.Color(90, 255, 0), 50);  // Yellow
            break;
    case 3: colorWipe(strip.Color(0, 255, 0), 50);  // green
            break;
    case 4: colorWipe(strip.Color(0, 90, 255), 50);  // Cyan
            break;
    case 5: colorWipe(strip.Color(0, 0, 255), 50);  // Blue
            break;
    case 6: colorWipe(strip.Color(80, 0, 255), 50);  // Magenta
            break;
  }

------------------------------------------------------------------------------------------------------

여기에 X,Y값 변동으로 몇개의 네오픽셀LED만 끄고 키려고 하는데 개별제어가 되는건가요?

어떤 값일때 어디가 켜질껀지는 정해놓았어요.

아래 사진처럼 조이스틱을 움직였을때 반대위치의 LED가 켜지는 식입니다.

 

일반 LED로 할때는 선을 하나씩 연결해주니까 되던데 네오픽셀은 코드가 다른것같아서ㅠ  어렵네요.

감사합니다.

 

 

 

 

프로필사진

수박쨈 2015-12-08 09:04:22

Adafruit의 Neopixel을 사용하고 계신것이 맞나요?(colorWipe()함수를 사용하고 계신것을 보면 예제소스를 사용하고 계신거 같은데... 

맞다면 그 안의 예제소스를 사용하여 설명해 드리겠습니다.

 

colorWipe()함수안을 보면 strip.setPixelColor(i,c)라는 함수가 있습니다.

strip은 neopixel의 객체 이름이고 setPixelColor가 각각의 픽셀을 제어하는 함수 입니다.

setPixelColor()함수는 매개변수를 두개 가지는데

 

첫번째 매개변수(i)는 픽셀의 번호이고 두번째 매개변수(c)는 Color값입니다.

그래서 colorWipe()함수는 for문을 통해 픽셀의 번호를 0부터 픽셀의 개수만큼 증가시키면서 모든 픽셀을 제어합니다. 

 

결론은 setPixelColor(i,c)를 활용해 보시면 개별제어가 가능합니다.

이전글   |    오렌지 BLE 보드 Android library 2015-12-08
다음글   |    사운드센서로 측정되는 소리량을 5개의 LED로 제어하고싶은데 질문있습니다.... 2015-12-08