본문 바로가기

Programming/Embeded

[3] 아두이노 for문을 활용해서 LED 깜빡거리도록 하기(빵판, 브레드보드 사용법)

반응형

아까는 13번핀에 직접 led를 연결해서 불을 깜빡이도록 했는데, 이번에는 빵판을 이용해본다.

 

 

빵판을 이용하기 위해서는 먼저 GND(Ground)포트에 점퍼를 하나 연결하고 마이너스극에 하나 연결해두면 된다. 이렇게 마이너스가 완성된다.

 

그리고 13번 포트에서 +가 나오고 있기 때문에, 브레드보드의 +로 연결을 하면 5볼트의 전류가 현재 흐르게 된다.

 

그리고 +극 쪽에 긴다리, -극 쪽에 짧은 다리를 연결해주면 led가 깜빡거리는 것을 확인할 수 있다.

 

그런데 아두이노의 경우는 특정 포트에서 나오는 전원만을 요구할 때가 많은데, 

 

 

그래서 이와 같이 연결을 한다.

 

위 사진에 그려놓은 화살표를 보면 브레드보드가 연결된 방향을 알 수 있다. 가로로는 연결이 되어 있지 않아 전기가 흐르지 않는데, led를 통해 연결된 상태라고 볼 수 있고, + -를 통해 전기가 통하고 있는 것이다.

 

그런데 그라운드 포트는 사용을 많이 하기 때문에, 전체를 연결할 수 있도록 아래에 꼽아준다.  

 

그리고 그라운드된 곳에 점퍼선을 하나 연결하고 다시 led와 연결된 -극 쪽에 연결을 해주면, 불이 들어오는 것을 확인할 수 있다.

 

 

 

 

 

 

아두이노 기초 (아두이노란? 아두이노 구성)

아두이노란? 아두이노란 오픈소스를 기반으로 한 표준형태의 제어보드와 제어보드를 프로그램 할 수 있는 PC프로그램이다. 하드웨어를 쉽게 제어하기 위해 만들어졌다. 아두이노 보드 종류 아

mrlazydev.tistory.com

int led1 = 13;
int led2 = 12;
int led3 = 11;
int led4 = 10;
int led5 = 9;


void setup() {
  pinMode(13, 1);
  pinMode(12, 1);
  pinMode(11, 1);
  pinMode(10, 1);
  pinMode(9, 1);
}

void loop() {
  digitalWrite(13, 1); 
  digitalWrite(12, 1);
  digitalWrite(11, 1);
  digitalWrite(10, 1);
  digitalWrite(9, 1);
  delay(1000);                    
  digitalWrite(13, 0); 
  digitalWrite(12, 0); 
  digitalWrite(11, 0); 
  digitalWrite(10, 0); 
  digitalWrite(9, 0);    
  delay(1000);                      
}

 

void setup() {
  pinMode(13, 1);
  pinMode(12, 1);
  pinMode(11, 1);
  pinMode(10, 1);
  pinMode(9, 1);
}

void loop() {
  digitalWrite(13, 1); 
  delay(1000);  
  digitalWrite(12, 1);
  delay(1000);  
  digitalWrite(11, 1);
  delay(1000);  
  digitalWrite(10, 1);
  delay(1000);  
  digitalWrite(9 , 1);
  delay(1000);                    
  digitalWrite(13, 0); 
  delay(1000);  
  digitalWrite(12, 0); 
  delay(1000);  
  digitalWrite(11, 0); 
  delay(1000);  
  digitalWrite(10, 0); 
  delay(1000);  
  digitalWrite(9, 0);     
  delay(1000);                      
}

 

 

int time = 500;


void setup() {
  pinMode(13, 1);
  pinMode(12, 1);
  pinMode(11, 1);
  pinMode(10, 1);
  pinMode(9, 1);
}

void loop() {
  digitalWrite(13, 1); 
  delay(time);  
  digitalWrite(12, 1);
  delay(time);  
  digitalWrite(11, 1);
  delay(time);  
  digitalWrite(10, 1);
  delay(time);  
  digitalWrite(9 , 1);
  delay(time);                    
  digitalWrite(13, 0); 
  delay(time);  
  digitalWrite(12, 0); 
  delay(time);  
  digitalWrite(11, 0); 
  delay(time);  
  digitalWrite(10, 0); 
  delay(time);  
  digitalWrite(9, 0);     
  delay(time);                      
}

이렇게 변수를 선언함으로써, 번거롭게 계속 수작업하는 것을 방지할 수 있다.

 

int time = 100;


void setup() {
  for(int i=13;i>=9;i--){
  pinMode(i, 1);
  }
}

void loop() {

  for(int i=13;i>=9;i--){
   digitalWrite(i, 1); 
  delay(time);
  }

  for(int i=13;i>=9;i--){
   digitalWrite(i, 0); 
  delay(time);
  }
  
  }

이렇게 for문을 활용해 동일한 코드를 깔끔하게 줄일 수 있었다.

 

int time = 200;


void setup() {
  for(int i=13;i>=9;i--){
  pinMode(i, 1);
  }
}

void loop() {

  for(int i=9;i<=13;i++){
   digitalWrite(i, 1); 
  delay(time);
  }

  for(int i=13;i>=9;i--){
   digitalWrite(i, 0); 
  delay(time);
  }
  
  }

이번에는 조금 다르게 동작하는 코드다.

 

 

 

 

콘솔창으로만 for문이 작동하는 것을 보다가, 아두이노를 통해서 실제로 코드가 어떻게 동작하는 지를 보면, 참 신기하다. 마치 디버깅을 하는 것처럼 코드 한 줄 한 줄이 작동하는 모습을 이렇게 확인할 수 있다.

반응형