부품설명

자주 사용하는 부품들의 사용법에 대하여 알아봅니다.

리셋 버튼 모듈

2014-10-01 11:50:24

개요

리셋 버튼 모듈은 푸시버튼을 쉽게 연결할 수 있는 모듈이라고 생각하시면 됩니다.
그냥 푸시버튼을 연결하면 되지 않나라는 생각을 하실 수도 있습니다.
하지만 저항이 없이 연결이 가능하고 브레드 보드가 필요하지 않기 때문에 
완성도 있는 작품이 만들 경우 간단하게 연결하실 수 있습니다.
 


보드와 이 모듈만 있으면 라디오 송수신기 등을 사용해서 먼 거리에서도 간단하게 버튼하나로 어떤 센서를 제어 할 수도 있습니다.

 

 


본 문에서는 버튼을 누를 때 색이 RGB LED 색이 변하는 것을 멈추도록 하겠습니다.
원하는 색이 있을 때 버튼을 누르면 
버튼을 누르고 있는 동안 그 색을 계속 유지 하실 수 있습니다.

 

 

 

 

 

 

 

 

부품목록

NO 부품명 수량 상세설명
1 오렌지 보드 1  
2 브레드 보드 1  
3 RGB LED 1  
4 330 ohm 저항 3  
5 리셋 버튼 모듈 1  
6 점퍼 케이블 9 KY-004를 사용했습니다.

 

부품명 오렌지 보드 브레드 보드 RGB LED 330 ohm 저항 점퍼 케이블
사진 x1 x1 x1 x3 x9

 

 

부품명 리셋 버튼 모듈
사진 x1

 

 

하드웨어 Making

회로도

브레드 보드 레이아웃

 

소프트웨어 Coding

다음 스케치를 아두이노에 업로드 하세요.
 

/* 리셋 버튼 모듈 사용하기 
   본 스케치는 여러 커뮤니티를 참고하여 kocoafab에서 작성하였습니다.
   누구나 무료로 사용하실 수 있습니다.
*/

int redPin = 11;           //RGB red
int greenPin = 10;         //RGB green
int bluePin = 9;           //RGB blue
int buttonPin = 4;         //리셋 버튼 모듈
int val;                   //읽어온 버튼의 디지털 값 저장 변수

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
  int i;    //밑의 for 반복문 횟수 조절, 특정 color 값을 전달 하기 위해 선언

 //i가 0~767이 될 때 까지 { }안의 내용을 반복 
 for (i = 0; i < 768; i++)     
  {
     val = digitalRead(buttonPin);     //버튼 값 읽어옴
     while(val==LOW) {                 //버튼이 눌린 동안
        showColor(i);                  //지금 색을 유지
        val = digitalRead(buttonPin);  //다시 버튼 값 읽어옴
        
        if ( val == HIGH)              //버튼이 눌리지 않았다면
          break;                       //while구문 빠져나옴
     }
  
     showColor(i);                     //눌리지 않을 경우 계속 색이 변함
     delay(30);      
  }
}

// color를 결정하는 함수, color(= i) 값을 전달 받음
void showColor(int color)
{
  int redRate;                     //RED_PIN에 출력시킬 값 저장하기 위한 변수
  int greenRate;                   //GREEN_PIN에 출력시킬 값 저장하기 위한 변수
  int blueRate;                    //BLUE_PIN에 출력시킬 값 저장하기 위한 변수

  if (color <= 255)                //빨강 -> 초록
  {
    redRate = 255 - color;         //빨강을 점점 줄임
    greenRate = color;             //초록을 점점 높임
    blueRate = 0;                  //파랑은 없음
  }
  else if (color <= 511)                 //초록 -> 파랑
  {
    redRate = 0;                         //빨강은 없음                   
    greenRate = 255 - (color - 256);     // 초록을 점점 줄임
    blueRate = (color - 256);            //파랑을 점점 높임
  }
  else                                   //파랑 ->  빨강
  {
    redRate = (color - 512);             //빨강을 점점 높임
    greenRate = 0;                       //초록은 없음                
    blueRate = 255 - (color - 512);      //파랑을 점점 줄임
  }

  analogWrite(redPin, redRate);         //RED_PIN으로 redRate만큼 아날로그 값 출력
  analogWrite(greenPin, greenRate);     //GREEN_PIN으로 greenRate만큼 아날로그 값 출력
  analogWrite(bluePin, blueRate);       //BLUE_PIN으로 blueRate만큼 아날로그 값 출력
}

소프트웨어 및 하드웨어 설명

1. 스케치 설명


showColor함수를 사용하면 다양한 색으로 RGB LED의 색을 변형 시킬 수 있습니다.
이 함수에 대한 설명은 다음 링크를 참고하세요.
본 스케치를 업로드하면 계속 빠르게 색깔이 변하는 도중에 원하는 색이 나왔을 때 계속 보고 싶다면 버튼을 누르면 됩니다.
버튼을 누르는 동안은 일정 색을 유지하고 다시 떼는 순간 색깔이 다시 변하기 시작합니다.

 

for (i = 0; i < 768; i++)     
  {
     val = digitalRead(buttonPin);     //버튼 값 읽어옴
     while(val==LOW) {                 //버튼이 눌린 동안
        showColor(i);                  //지금 색을 유지
        val = digitalRead(buttonPin);  //다시 버튼 값 읽어옴
        
        if ( val == HIGH)              //버튼이 눌리지 않았다면
          break;                       //while구문 빠져나옴
     }
  
     showColor(i);                     //눌리지 않을 경우 계속 색이 변함
     delay(30);      
  }

for 반복문을 통해 showColor함수를 반복적으로 호출함으로써 색이 계속 변합니다.
그 중간에 버튼의 디지털 값을 읽어와서 눌렸을 경우를 구분합니다.
눌렸을 경우, while문을 통해 눌린 동안 같은 색을 유지 하도록 합니다.
while문이 계속 도는 경우에도 다시 한번 버튼의 디지털 값을 확인해서 버튼을 누르다 뗀 경우
같은 색을 유지하는 것을 멈춥니다.
 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

리셋 버튼 모듈, 아두이노, 오렌지보드