유투브 : https://youtu.be/iIz38ZBebwI

 

안녕하세요 지난 시간에 이어서 for문을 아두이노에서


사용하는 법을 배워보겠습니다.


7장은 공부하지 않은 분은 꼭 복습하고 오세요!


준비물
아두이노 기판, 빵판
저항( 240Ω or 300Ω), 케이블(전선)
led (3파이 or 5파이)



이번시간의 목표 중 하나입니다.


영상 보시고 회로를 어떻게 구성할 지 생각해 볼까요?

10개 led 차례로 켜지기

10개의 led를 연결하고 앞에서 부터 차례로


불이 켜지는 모습입니다.

 

먼저 회로구성을 보겠습니다.

전류 흐름을 확인하면,


(1) 아두이노 핀에서 나온다.


(2) 빵판에서 저항으로 흐른다.


(3) 저항에서 led로 흐른다.


(4) 빵판의 -극을 타고 아래로 흐른다.


(5) 아두이노의 GND로 들어간다.


이렇게 3번 핀에서  12번까지 연결하면

위와 같이 됩니다. 위에서 부터 차례대로


2번 핀부터 연결하면 좋겠죠?


0, 1번 핀은 통신용으로
가급적 사용하지 않아요!


이때 저항과 led를 잘못 연결하면 전류가 흐르지 않습니다.

(1)번 연결과


(2)번 연결의


차이점이 느껴지시나요?


(1)은 잘된 예


(2)는 잘못된 예 입니다.

위 사진의 저항을 보시면 빵판의 같은 줄에


저항 다리 두 개가 모두 연결되어 있죠?


빵판의 중간 부분은 가로로 연결이 되어 


있어서 전위가 같습니다. 같은 전위에 소자를


꽂으면 전류가 흐르지 않겠죠? 반면에 잘된 예를 보면

저항 다리가 빵판의 한 줄에 모두 연결 된 것이

 

아니라 따로 떨어져 있습니다.


쉽게 말하면,

”소자의 다리를 빵판  같은 줄에
연결하지 마세요“


위 사항에 유의하면서 2번에서 11번까지 연결을 하면

최종 완성 본입니다.


그럼 이제 이 회로를 제어하는 코드를 짜볼까요?

led 10개 차례대로

이렇게 차례대로 불을 켜려면


코드를 어떻게 해야 할까요?

일단


1) setup에서 2번 부터 11번까지 pinMode를 OUTPUT으로 해야겠죠?


2) 그런 다음 2번 부터 차례로 적당한 delay를 주어 digitalWrite를 하면


불이 켜질겁니다. 바로 코드를 보지 마시고 연구해보세요!

 
먼저 pinMode를 세팅하겠습니다.

int i;

void setup() { 
  for(i=0;i<10;i++)
  {
    pinMode(i+2, OUTPUT); 
  }
}

여기서 i는 0~9까지만 사용되어야 하니까
for문 조건에  i<12가 아니고
i<10인 점에 주의하세요!



함수 정의로 처리하겠습니다.

void loop() {

}
void led(int pnumber, int mytime) {
	digitalWrite(pnumber, HIGH); //LED 켜기
	delay(mytime); 
	digitalWrite(pnumber, LOW); //LED 끄기
	delay(mytime);
}

루프 아래에  led 함수를 선언합니다.


이번엔 변수가 2개죠?


앞에 변수는 불을 켤 핀 번호고


뒤에 변수는 불을 깜빡일 시간입니다.


led(5,500);


이렇게 호출하게 됩니다.


자 이제 마지막 입니다.


loop역시 for문을 이용해서 처리합시다.

void loop() {
    for(i=0;i<10;i++)
    {
      led(i+2,500);
    }
}

for문을 사용해서 2번 부터 11번 핀 까지

 

차례로 불을 켜줍니다. 전체 코드입니다.

int i;

void setup() { 
  for(i=0;i<10;i++)
  {
    pinMode(i+2, OUTPUT); 
  }
}
void loop() {
    for(i=0;i<10;i++)
    {
      led(i+2,500);
    }
}
void led(int pnumber, int mytime) {
	digitalWrite(pnumber, HIGH); //LED 켜기
	delay(mytime); 
	digitalWrite(pnumber, LOW); //LED 끄기
	delay(mytime);
}

for문과 함수를 사용하니까 코드가 훨씬 간결하고


보기 좋죠?

틴커캐드 작동 화면과 코드입니다.

자 이제 도전 과제 입니다. 회로 구성은 같습니다.

 

코드를 바꿔서 앞, 뒤로 파도 타는 움직임을 만들어 보세요!

앞, 뒤로 움직이는 led

파도 타기 미션 코드는 유투브에서 확인해주세요!

 

유투브 링크 : https://youtu.be/iIz38ZBebwI

+ Recent posts