티스토리 뷰

지난 포스팅에서는 간단하게 Serial.println함수를 써서 floating point number가 제대로 인식되는지를 확인해봤습니다.
이번 포스팅에서는 아두이노를 통해서 문법 중 중요한 요소중 하나인 배열에 관한 것을 알아보고자 합니다.

우선 핀을 설정하기에 앞서서 회로를 구성합니다.

 <출처: Arduino CookBook>

digitaloutput쪽을 10번부터 13번까지 차례대로 LED를 답니다. 그리고 digitalinput으로 2번부터 5번까지 스위치로 연결합니다.얼핏보면 정말로 간단해보입니다. 그런데 제가 소개해드린 아두이노 개발 킷으로 이걸 시도하면 이렇게 됩니다.

 
꼭 빵판은 큰걸로 쓰세요..

아무튼 회로를 위같이 구성했으면 이제 코드를 짜야겠지요.
사전에 우리가 꼽아둔 핀을 기억하고 이를 배열로 선언해줍니다.

 
이제 핀배열을 해야합니다. 그 부분은 Setup에서 채워지겠지요.


 우리가 보여주려는 건 led와 스위치가 제대로 매칭이 되었느냐 하는건데 그걸 pinMode를 통해서 입출력을 결정해줍니다. 그런데 코드를 보다보면 의아한 부분이 있는게 바로 마지막줄입니다.

digitalWrite(inputPins[index],HIGH);

이걸 왜 해주는 걸까요? 책에 의하면 이 부분은 inputPins, 즉 지금 스위치와 연결되어 있는 2,3,4,5번 포트에 내장되어 있는 저항성분을 활성화시키는 겁니다. 풀업 저항이라 함은 전류가 역행하거나 과도한 전류가 흐르는 것을 막기 위한 장치중 하나로 사용되는데 보통 이건 내장되어있기도 하고 어떨 때는 결과값에 영향을 끼칠 때가 있습니다. 그래서 이 값을 활성화 시키는 건 아두이노와 연결 시킬 장치의 데이터시트를 보고 적절하게 판단해야 합니다. 참고로 아두이노의 포트별 풀업저항은 20k옴입니다.

그럼 loop를 볼까요?
 


setup에서 다뤘던 것처럼 똑같이 4번의 index를 훑은 후에 inputPin의 값을 읽어와 그 값에 따라 LED의 작동을 조절하고 있습니다. 즉 아두이노가 동작하는 동안 inputPins[0],inputPins[1],inputPins[2],inputPins[3]의 값들을 쫙 읽어옵니다. 그래서 만약 0번 스위치를 눌렀다면 LOW로 뜨는 값으로 인식해서 그와 연결된 ledPins[0]이 켜지게 되는 것이지요.

결과는 다음과 같습니다.


 어떻게 보면 정말로 간단한 원리인데 이렇게 배열을 사용하면 사용자가 일일이 정의할 필요없이 자동으로 생성되는 배열의 순서를 이용할 수 있다는게 장점으로 부각되겠네요. 사실 보면 그냥 #define 을 통해서 각각의 핀번호를 정의하는 것도 방법입니다만.. 이런걸로 배열을 써먹을 수 있다는데 의미가 있는거지요..
스케치파일은 참고로 올려드립니다.


댓글