반응형

이번 내용은 사실 LineTracer과는 조금 무관하나, Arduino의 부품중 하나이므로 소스코드와

 

지난번 fading를 연계하여 작성해 볼려 한다.

 

본 소스코딩은 millis()함수를 사용하지 않은 소스코딩이다.

 

 

 

 

int led = 11; // 아날로그를 위한 led핀
int button = 2; // 버튼은 0~13pin 아무거나 사용가능
int fadestate = 0; // fading을 위한 임의 변수
int fadevalue = 0; // fading이 되는 실질적 변수

void setup()
{
         pinMode(led,OUTPUT);
         pinMode(button,INPUT); // 버튼은 클릭하는것이니 INPUT이다.
 }
    
void loop()
{
  
       if(digitalRead(button) == 1 //1이라 하는것은 즉, 버튼이 눌러졌을때를 의미
       {
         if(fadestate < 51)                // 51 * 5 = 255임을 기억하자
         {
           analogWrite(led,fadevalue); // fading 시작
           fadevalue = fadevalue + 5; //0부터 시작하면 fadevalue가 5만큼 증가
           delay(30);
           fadestate ++;                  //버튼이 눌러졌을때 fadestate는 계속 증가한다
         }
 
         else if( fadestate >= 51 && fadestate <= 101 )
         // 51 *(- 5) = -255 즉 fadevalue가 255에서 0으로 갈수있도록 만들어둔 것.
         {
           fadevalue = fadevalue - 5;     // fadevalue가 255에서부터 5만큼 감소한다.
           analogWrite(led,fadevalue);
           delay(30);
           fadestate ++;                         //fadestate는 계속 증가한다.
         }
   
         else              //fadestate는 결국 버튼이 계속눌러져있다면 102를 향해 갈것이다.
 //102가되면 else구문을 만나기에 fadestate는 자동으로 0이되고 다시 if문부터 시작하게 된다.
         {
         fadestate = 0;
         }
       }
   
      else if(digitalRead(button) == 0)     // 버튼이 눌러져있지 않을때는 0이다.
      {
        fadestate = 0;                          // 초기화
        fadevalue = 0;                         // 초기화
        analogWrite(led,fadevalue);     // fadevalue값을 넣음으로써 초기화
      }
    
}

 

 

 

 

다소 생뚱맞고, 이해하기 힘들수도 있다고 생각한다. 하지만 알고보면 간단한 소스코드이다.

 

필자는 그런데 버튼을 아직까지 왜 쓰는지는 잘 모르겠다.

 

항상 loop문을통해 기계를움직이는데 버튼을 누르고 떼고 할 시간이있을까 한다..

 

 행여나 알람 로봇을 만든다면 쓸필요는 있을 것같긴하다.

반응형

'Applied > Arduino' 카테고리의 다른 글

ServoMotor  (0) 2014.02.15
Piezo  (0) 2014.01.15
LED fading  (0) 2014.01.15
LED Blink ( on / off )  (0) 2014.01.15
** Arduino 필독 **  (0) 2014.01.15