정보나눔

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

RGB문의드립니다
김현호 | 2015-11-09

구름에서 날씨코드를 직접입력해서 type대로 불빛패턴을 알고싶은데 에러가 뜨네요 도와주세요~

 

#include "Adafruit_WS2801.h"
#include "SPI.h" // Comment out this line if using Trinket or Gemma
#ifdef __AVR_ATtiny85__
#include <stdio.h>
#include <avr/power.h>
#endif

const unsigned long requestInterval = 60000;  // 요구 시간 딜레이(1 min)
uint8_t ret;
int weather=300;
int temp = 0;
uint8_t dataPin  = 2;    // Yellow wire on Adafruit Pixels
uint8_t clockPin = 3;    // Green wire on Adafruit Pixels
int lednum = 30;

 


//LED strip객체 생성. LED의 개수에 따라 앞 인자값을 변경한다
Adafruit_WS2801 strip = Adafruit_WS2801(25, dataPin, clockPin);

// Optional: leave off pin numbers to use hardware SPI
// (pinout is then specific to each board and can't be changed)
//Adafruit_WS2801 strip = Adafruit_WS2801(25);

 

void setup() { 

#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000L)
  clock_prescale_set(clock_div_1); //clock을 16Mhz로 사용
#endif

  strip.begin();
  strip.show();
  delay(10);

}

void weatherpixel(){
   float rantime = random(20,50);
   //날씨 코드가 200부터 531까지 범위 안에 있다면 type3 패턴으로 led를 제어한다.
   //비, 눈, 우박
  if(weather>199 && weather<532){  
    type3();
  }
  else ;

   //날씨 코드가 701부터 781, 또는 802부터  804까지 범위 안에 있다면 type2 패턴으로 led를 제어한다.
   //흐림
  if(weather>700 && weather <782){
    type2();
  }
  else ;
  if(weather>801 && weather<805){
    type2();
  }
  else ;
 
  //날씨 코드가 800부터 801
  //흐림
  if(weather>799 && weather<802){  
     type1();
   }
   else ;
}


void type1(){
 
  rainbow(60);
  }

void type2(){
   uint16_t i, j;
  for(j=0; j<256; j+=1) {
    for(i=0; i       int sum = i+j;
      map(sum,0,300,120,190);
     strip.setPixelColor(i, Wheel(sum),Wheel(sum),Wheel(sum));

    }
    strip.show();
    delay(10);
  }
}

void type3(){
   uint16_t i, j,q;
 for(q=0; q   for(j=0; j<256; j+=1) {
    for(i=0; i       int sum = i+j;
      map(sum,0,300,120,190);
     strip.setPixelColor(i, Wheel(sum),Wheel(sum),0);

    }
    strip.show();
    delay(10);
  }
 }
    theaterChase(strip.Color(255, 255, 0), 60); //흰색 출력
}


//모든 LED를 출력가능한 모든색으로 한번씩 보여주는 동작을 한번하는 함수

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i       strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}


//입력한 색으로 LED를 깜빡거리며 표현한다void theaterChase(uint32_t c, uint8_t wait) {
  for (int j=0; j<10; j++) {
    for (int q=0; q < 3; q++) {
      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, c);
      }
      strip.show();
    
      delay(wait);
    
      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, 0);
      }
    }
  }
}

uint32_t Color(byte r, byte g, byte b)
{
  uint32_t c;
  c = r;
  c <<= 8;
  c |= g;
  c <<= 8;
  c |= b;
  return c;
}


//255가지의 색을 나타내는 함수
uint32_t Wheel(byte WheelPos)
{
  if (WheelPos < 85) {
   return Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if (WheelPos < 170) {
   WheelPos -= 85;
   return Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

에러는

'type3' was not declared in this scope 이렇게 뜨네요

 

이전글   |    무선통신모뎀과 PIR센서 질문드립니다. 2015-11-09
다음글   |    아두이노 와이파이 쉴드를 통한 프로세싱과의 연동2 ... 2015-11-10