[아두이노] 아두이노 코딩을 쉽게하는법

IOT/아두이노|2019. 5. 9. 09:00

[아두이노] 아두이노 코딩을 쉽게하는법



오늘은 아두이노를 코딩를 하는법을 배워보도록 하겠습니다. 아두이노를 코딩할 때 너무 복잡하게 생각하지 마시고 쉽게 접근하는게 가장 중요합니다.

1. 관찰


대상(부품)에 대한 관찰이 필요합니다. LED의 경우는 전류가 공급되면 불이 들어오고 전류가 차단되면 불이 꺼집니다. LED의 경우는 두가지 패턴만 존재합니다. 일상에서의 LED와 유사한 대상을 찾아보면 뭐가 있을까요. 전자시계, 전자렌지, 냉장고, 스마트폰, TV, 신호등, 전광판 등 모든 전자기기에 부착 되어 있습니다. 어떤 전자기기든 상관없으며 아무거나 하나를 선택해서 LED의 변화를 관찰 해보세요. 예로, 신호등에 대해 관찰해 봅시다. 초록->황색->적색순으로 일정 시간 단위로 3색 신호등이 깜박이게 됩니다. 관찰이 끝났으니깐 이제 그 동작에 대해서 기록해 볼까요.

2. 기록


3색 신호등이 깜박이는 순서와 시간을 기록합니다. 너무 길기 때문에 짧게 초록 3초, 황색 2초, 적색 5초라고 가정해 봅시다.

순서를 기록해볼까요.

(1) 초록 켜진다.
(2) 초록 3초동안 켜져있다.
(3) 초록 3초 후 꺼진다.
(4) 황색 켜진다.
(5) 황색 2초동안 켜져 있다.
(6) 황색 2초 후 꺼진다.
(7) 적색 켜진다.
(8) 적색 5초동안 켜진다.
(9) 적색 5초 후 꺼진다.

자신이 원하는 동작을 기록을 하든 아니면 이처럼 관찰을 통해서 얻은 동작을 그대로 기록하시면 됩니다. 어떻게 생각하지 마시고 신호등이 어떻게 동작하는지 관찰하고 그 동작을 글로써 한줄씩 간단하게 써 내려가면 됩니다. 동작을 한줄에 많이 쓰지 마시고 간단히 위처럼 하나의 동작을 한줄씩 써내려가면 됩니다.
어느정도 감각이 붙으면 여러개의 동작을 한줄로 표현해도 되지만 초보분들은 위처럼 한동작에 한줄씩 기록하는 습관을 가져보세요. 그러면 한동작에 대한 아두이노 함수로 간단히 코딩으로 변환시키면 되기 때문에 코딩이 어렵지 않을 꺼에요.

3. 실험에 사용할 부품 이해


LED 부품을 실험에 사용 할 경우 LED은 아두이노에서 어떻게 코딩하는지 살펴볼까요. LED는 포함시킬 라이브러리가 없습니다. 아두이노 자체 함수이기 때문입니다. 아두이노에서 제공되는 기본 함수의 경우는 변수 선언과 시작 or 초기화 부분과 사용에서 실제로 LED핀에 명령을 내리게 됩니다.

(1) 포함 :

#include<라이브러리.h> //LED 필요없음 생략

(2) 변수선언:
const int RedPin = 13;

(3) 시작 or 초기화 :
pinMode(RedPin, OUTPUT) : RedPin을 OUTPUT 모드로 선언한다.

(4) 사용:
digitalWrite(RedPin, 핀상태) : 핀상태는 HIGH(5V) or LOW(0V)

예) Bluetooth 경우는
(1) 포함 :

#include <SoftwareSerial.h>

(2) 변수선언:
const int rxPin = 2;
const int txPin = 3;
SoftwareSerial mySerial(rxPin, txPin); // RX, TX

(3) 시작 or 초기화 :
mySerial.begin(9600);

(4) 사용:
mySerial.available();
mySerial.read();
mySerial.println("Hellow");
... 등등

예) Servo Motor 경우는
(1) 포함 :

<
#include <Servo.h>

(2) 변수선언:
Servo servo;
const int SERVO_PIN = 7;

(3) 시작 or 초기화 :
servo.attach(SERVO_PIN);

(4) 사용:
servo.write(180);

대충 부품을 이해하실 때 이런식으로 이해하시면 됩니다. 머리 속에서 어떤 특정 부품을 사용하고자 하면 위 순서를 머리속에서 라이브러리를 추가되는지 변수를 외부에 선언되는지 시작 or 초기화 작업이 있는지 사용은 어떤 함수로 하는지에 대해서 해당 부품에 대해 생각하시면 됩니다. 이렇게 하면 둘 이상의 부품을 사용하더라도 어렵지 않게 선언하고 사용하실 수 있습니다.

4. 코딩


3색 신호등을 코딩을 해볼까요. LED 부품를 사용하여 위에 기록된 내용을 코딩해 볼까요.

digitalWrite(초록핀, HIGH);
delay(3초);
digitalWrite(초록핀, LOW);
digitalWrite(황색핀, HIGH);
delay(2초);
digitalWrite(황색핀, LOW);
digitalWrite(적색핀, HIGH);
delay(5초);
digitalWrite(적색핀, LOW);

기록된 글을 순서대로 프로그램 언어 명령으로 표현을 했습니다. 이렇게 먼저 표현하고자 하는 것에 대해서 관찰하고 그 관찰한 동작을 기록합니다. 그리고 기록한 것을 표현한 부품을 선택하고 선택된 부품에 대한 기본 사용법을 위와 대한 4가지로 분류해서 머리속에 정리해놓으신 후에 기록된 순서대로 글을 명령코딩으로 변경만 해주시면 됩니다.

4. 부품 추가 코딩


황색 LED가 불이 들어올 때 경고 음을 울리게 하고 싶다면 어떻게 해야 할까요. 똑 같이 위 과정을 반복합니다.

(1) 관찰 : 황색 LED가 불이 들어올 때 경고음이 삐! 삐! 하고 1초 단위로 소리가 울린다고 상상 관찰을 해봅시다.
(2) 기록 :
초록 켜진다.
초록 3초동안 켜져있다.
초록 3초 후 꺼진다.
황색 켜진다.
황색 2초동안 켜져 있다.
경보음 1초
경보음 1초
황색 2초 후 꺼진다.
적색 켜진다.
적색 5초동안 켜진다.
적색 5초 후 꺼진다.

(3) 실험에 사용 할 부품의 이해 : 피에조부저를 사용한다.

  • 포함 : 라이브러리 필요 없음
  • 변수선언:
    const int TONEPIN = 6;
  • 시작 or 초기화 :
  • 사용:
    tone(TONEPIN ,523,1000/8); // 도음으로 8분음표(음길이)
    delay(1000/4*1.30);
    noTone(TONEPIN);

(4) 코딩 :

digitalWrite(초록핀, HIGH);
delay(3초);
digitalWrite(초록핀, LOW);
digitalWrite(황색핀, HIGH);
delay(2초);
digitalWrite(황색핀, LOW);
digitalWrite(적색핀, HIGH);
delay(5초);
digitalWrite(적색핀, LOW);

위의 기존의 코딩에서 기록한 해당 위치에 경보음을 표현한다.

digitalWrite(초록핀, HIGH);
delay(3초);
digitalWrite(초록핀, LOW);
digitalWrite(황색핀, HIGH);
tone(TONEPIN ,523,1000/8);     // 도음으로 8분음표(음길이)
delay(1000/4*1.30);             
noTone(TONEPIN); 
one(TONEPIN ,523,1000/8);     // 도음으로 8분음표(음길이)
delay(1000/4*1.30);             
noTone(TONEPIN); 
digitalWrite(황색핀, LOW);
digitalWrite(적색핀, HIGH);
delay(5초);
digitalWrite(적색핀, LOW);

여기서, 주의 할 점은 코딩과 코딩이 결합시 한쪽 코딩이 다른쪽 코딩에 미치는 영향을 파악하시고 결합하시면 문제가 생기더라도 쉽게 해결할 수 있습니다. 위 코딩에서 피에조부저를 결합할 때 그냥 황색 LED 코딩 사이에 삽입하면 안됩니다. 피에조부저 딜레이가 황색LED 딜레이에 영향을 주기 때문에 총 4초의 딜레이가 발생합니다. 고로, 피에조부저 delay()함수를 사용하고 황색 LED delay()함수를 제거하면 2초의 딜레이로 해결 되는 코딩입니다. 이처럼 두 부품이 결합할 때 각 부품의 동작에 이해하고 계시면 여러개의 부품을 연결하더라도 쉽게 결합시킬 수 있습니다.

마무리


간단히 신호등 예제를 통해 코딩하는 법을 살펴 보았습니다. 뭔가를 표현하고 싶을 때 그 표현에 대해서 일상에 비슷한 대상을 찾거나 상상을 통해서 동작에 대한 관찰이 필요합니다. 그리고나서, 여러분들이 그것을 표현하기 위한 동작을 글로써 기록합니다. 그 다음 사용할 부품을 선택하고 그 부품에 대한 기본 4가지로 분류한 형태로 해당 부품을 이해하십시오. 그다음에 기록 된 명령의 글을 사용함수들을 사용하여 그대로 글을 명령 코딩으로 대입하시면 됩니다. 하나의 부품을 정상적으로 사용할 수 있게 되면 다른 추가 부품을 사용할 때에도 방금 했던 과정을 반복하셔서 코딩하면 쉽게 코딩할 수 있게 됩니다.

어렵게 생각하지 마시고 개별 부품으로 생각을 하면서 정리 해 놓고 나서 여러분이 표현하고자 하는 것에 대해서 관찰과 기록을 하시고 나서 기록에 대해 부품의 함수로 명령코딩을 하시면 됩니다. 아두이노 코딩은 기존에 만들어 놓은 함수나 제공되는 함수 함수를 가져다가 사용하시기만 하면 됩니다. 아두이노는 어렵게 생각하지 마시고 쉽게 생각하고 접근하시면 됩니다.


댓글()