본문 바로가기

피지컬컴퓨팅/아두이노

푸시 버튼 활용하기(LED, 모터 제어하기-선풍기 모듈)

반응형

오늘은 푸시 버튼을 이용하여 LED와 모터를 제어하는 방법에 대해 알아보겠습니다.

 

푸시 버튼은 버튼을 누르는 동안 HIGH 값을 가지며 뗄 때 LOW 값을 갖습니다. 일반적으로 네 개의 단자(Terminal)로 구성되며 두 단자간 서로 연결되어 있습니다. 따라서 하나의 단자가 끊어지거나 고장이 나더라도 다른 단자로 충분히 동작 가능합니다. 푸시버튼을 누르면 1번, 2번, 3번, 4번이 모두 연결된 상태가 됩니다.

 

출처 :https://wikidocs.net/30758

 

 

1) 푸시 버튼으로 LED제어하기

준비물

- 아두이노 우노

- 브레드 보드

- 점퍼선

- 푸시 버튼, LED

 

회로도

LED는 200옴, 버튼은 10k옴을 연결합니다.

버튼으로 LED 제어하기

소스코드

void setup(){
	Serial.begin(9600);
    pinMode(13, OUTPUT); //led 핀
    pinMode(7, INPUT);   //버튼 핀
   }
   
  void loop(){
  	int readValue = digitalRead(7);
    Serial.println(readValue);
    
    if(readValue==HIGH){
    	digitalWrite(13, HIGH);
    }
    else{
     	digitalWrite(13, LOW);  
    }
 }

 

2) 푸시 버튼으로 DC모터제어하기(선풍기 만들기)

준비물

- 아두이노 우노

- 브레드 보드

- 점퍼선

- 푸시 버튼, DC 모터(선풍기 모듈)

선풍기 DC 모터 모듈 L9110 / 팬모듈

 

회로도

버튼으로 선풍기 모듈(DC 모터)제어하기

소스코드

먼저 선풍기 모듈을 테스트해보겠습니다.

 

- B 방향으로 회전

void setup(){    
    pinMode(9,OUTPUT);  // 9번 핀을 출력핀으로 설정함.
    pinMode(8,OUTPUT);  // 8번 핀을 출력핀으로 설정함.
}

void loop(){    
    digitalWrite(9,HIGH); // 9번 핀에 High 신호를 보내면 팬모터의 INB와 연결되어 있기 때문에 B방향으로 회전함.
    digitalWrite(8,LOW); 
}

 

- 1초 간격으로 회전방향을 바꿔서 돌도록 합니다.

void setup(){
    pinMode(9,OUTPUT);      
    pinMode(8,OUTPUT);
}


void loop(){    

    digitalWrite(9,HIGH); // 9번 핀에 High 신호를 보내면 팬모터의 INB와 연결되어 있기 때문에 B방향으로 회전함
    digitalWrite(8,LOW);
    delay(1000);  // 1초 Delay 후

    digitalWrite(9,LOW);        
    digitalWrite(8,HIGH);  // 8번 핀에 '1' 신호를 보내면 팬모터의 INA와 연결되어 있기 때문에 A방향으로 회전함      
    delay(1000);    

 }

 

 

이제 버튼으로 선풍기모듈을 제어해보겠습니다.

int state=0;

void setup(){
    pinMode(9,OUTPUT);      
    pinMode(8,OUTPUT);
    pinMode(7, INPUT);
    Serial.begin(9600);
}

void loop(){    
	if(digitalRead(7)==HIGH){
    	if(state==0){
        	state=1;
        }
        else if (state==1){
        	state=0;
        }
    }
    
    if (state==1){
        digitalWrite(9,HIGH); // 9번 핀에 High 신호를 보내면 팬모터의 INB와 연결되어 있기 때문에 B방향으로 회전함
        digitalWrite(8,LOW);
	}
    else{
        digitalWrite(9,LOW);        
        digitalWrite(8,LOW);        
	}  
 }

 

반응형