반응형

 

 

 

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문에 직접 프로그램을 코딩해보면서 익숙해지거나 온라인상에서 다른 사람이 코딩한 아두이노 프로그램을 한 줄 한 줄 파헤쳐봐야 쓰임이나 로직을 이해할 수 있습니다.

 

그래도 아는게 있어야 조금 더 보인다고.. 저도 조금씩 보이고 있지만.. 배울수록 산 넘어 산이 너무 많더군요 ㅠㅠ 그래도 원하는 프로젝트를 위하여~! 오늘은 프로그램을 코딩할 때 정말 많이 사용되는 몇 가지 명령어를 알아볼까 합니다.

 


명령어 기능 사용법
pinMode I/O 핀의 입출력 설정 pinMode(pin#, mode);
If 조건문 조건에 따라 다음 명령을 실행 if 조건, true일때 명령, else false일때 명령
digitalWrite 디지털 핀에 High, Low 값 출력  digitalWrite(pin#, HIGH); or digitalWrite(pin#, LOW);

 

 

 

1. pinMode( )

 

아두이노의 디지털 입출력 핀(digital Input/Output pin)을 '입력'으로 사용할지 '출력'으로 사용할지 설정하는 명령어입니다. pinMode(pin, mode); 형태로 사용하면 되는데 여기서 pin은 설정하려는 핀번호가 되며, mode는 OUTPUT, INPUT 또는 INPUT_PULLUP 중 하나를 선택해서 입력하면 됩니다. 주의하실 점은 대문자로 입력해야 합니다.  

void setup(){
pinMode(13, OUTPUT); // 13번 핀을 output으로 설정
}

void loop{
}

설정하려는 핀번호를 13번으로 mode를 OUTPUT, 출력으로 코딩하면 13번 핀에서 5V를 출력할 수 있는 상태로 설정합니다. INPUT, 입력으로 코딩하면 13번 핀을 통해 센서 data를 읽을 수 있는 상태로 설정합니다.

 

INPUT_PULLUP모드는 아두이노의 '내부 pull-up 저항'을 사용하겠다는 설정입니다. 모든 아두이노 보드에는 일반적으로 내부 pull-up 저항이 있으며, pull-up저항을 사용하는 이유는 플로팅(floating)을 방지하기 위해 사용됩니다. 플로팅 상태는 영어 floating 뜻 그대로 '떠 있다'는 의미로 입력 신호가'1(High)'인지 '0(Low)'를 정확히 알 수 없는 상태로 있다는 말합니다. 플로팅 상태에서는 아주 작은 노이즈 만으로 신호가 왔다 갔다 하기 때문에 센서나 아두이노가 오작동을 일으키게 됩니다.  플로팅 개념에 대해서 알기 쉽게 설명해놓은 블로그 링크 첨부해두겠습니다. 참고하시면 될 거 같아요 ^^ (코딩 학원의 설명이라 굿입니다. ㅋㅋ)

 

 

[기초 지식] 풀업 저항이란? (Pull-Up저항이란)

안녕하세요 강남 대치동 1등 코딩학원! 어린이 청소년 전문 자율참여형 코딩학원. 잼있고 깊게, 비교할수록...

blog.naver.com

 


 

2. If (조건문)

 

프로그램을 조금이라도 다뤄보신 분은 If 조건문은 아주 많이 보셨을 정도로 세상 모든 것은 조건문으로 이루어졌다 해도 과언이 아닐 정도로 유용하게 많이 사용할 수 있는 명령어입니다. '조건'문은 말 그대로 '특정 조건이 주어질 때 그 조건이 맞으면 A 명령을 틀리면 B 명령을 해라' 같은 내용을 코딩할 때 사용합니다. 일상생활에서 자동문에 사람이 가까이 오면 문을 열고 아닐 때는 닫혀있어라... 든지 실내 온도가 설정 온도보다 올라가면 에어컨을 더 강하게, 설정온도보다 내려가면 좀 약하게 틀어라.. 같은 명령을 If 조건문으로 구성할 수 있습니다. 아두이노도 스케치의 프로그램 언어가 C/C++을 기반으로 하기 때문에 당연히 If 조건문을 사용할 수 있습니다.

 

사용법은 if 다음 괄호( ) 안에 조건을 쓰고, 중괄호{ } 안에 조건이 맞을 때 실행하고자 하는 'A 명령'을 적으면 됩니다. 그리고 이어서 else { } 안에 조건이 틀린 경우 'B 명령'을 적으면 됩니다.

if (조건)

{

명령문 A;

}

else

{

명령문 B;

}

형태로 사용하면 되는데..

 

예를 들어 실내'습도'가 설정 값보다 올라가면 LED 경고등을 점등하고, 아니면 LED는 끄라는 내용으로 프로그램을 코딩해보겠습니다. 앞서 다룬 온습도 센서 사용법과 프로그램 코딩 법은 아래 링크 참고 부탁드립니다.

 

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서(DHT11) 사용하기

아두이노(Arduino)를 사용한 홈 IoT (사물인터넷)의 가장 기본은 각 종 센서를 동작시키고 센싱 값을 읽는 것이라고 할 수 있습니다. 구상하는 대부분의 프로젝트는 어떤 조건이 만족하면 원하는 명령들을 수행하..

it-g-house.tistory.com

#include<dht.h>
dht DHT;
#define DHT11_PIN 2
float hum;  //Stores humidity value
float temp; //Stores temperature value

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
 }

void loop() {
  DHT.read11(DHT11_PIN);
    hum = DHT.humidity;
    temp = DHT.temperature;
  
  Serial.print(temp);
  Serial.print(",");
  Serial.println(hum);
  
  if(hum > 70){
  digitalWrite (LED_BUILTIN, HIGH);
  }
  else{
  digitalWrite (LED_BUILTIN, LOW);
  }
  delay(2000); //Delay 2 sec.
  }

 

우선 아두이노에 내장(built in)되어 있는 LED를 점등하기 위해 'pinMode(LED_BUILTIN, OUTPUT);'이라고 설정합니다. 그리고 hum(습도) 값이 70보 크면..이라는 if 조건문을 사용하였습니다. if (조건)에서 'hum > 70'이라고 습도 값이 70보다 클 때라는 조건을 적었습니다. 부등호 '>'는 조건 연산자에 해당하는데 우리가 흔히 아는 부등호와 비슷하지만 다음과 같이 사용해야 합니다. 

 

조건연산자 if 조건에서 사용 예
A == B A와 B가 같음 if(hum == 70) //hum 값이 70 일 때
A != B A와 B가 같지 않음 if(hum != 70) //hum 값이 70 아닐 때
A > B A가 B보다 큼 if(hum > 70) //hum 값이 70보다 클 때
A < B A가 B보다 작음 if(hum < 70) //hum 값이 70보다 작을 때
A>=B A가 B보다 크거나 같음  if(hum >= 70) //hum 값이 70보다 크거나 같을 때
A<=B A가 B보다 작거나 같음 if(hum <= 70) //hum 값이 70보다 작거나 같을 때

습도가 70 이상이면 'digitalWrite(LED_BUILTIN, HIGH)'로 내장 LED를 점등하고, else 명령어를 사용하여 그렇지 않으면 'digitalWrite(LED_BUILTIN, LOW)'로 LED를 꺼지는 명령문이 됩니다.

 


 

 

 

3. digitalWrite()

 

원하는 디지털 핀(digital pin)에 'High(1)' 값 또는 'Low(0)' 값을 출력하는 명령어입니다. 예를 들어 pinMode(13, OUTPUT);를 통해 13번 핀을 OUTPUT모드로 설정 후 'digitalWrite(13, HIGH);' 명령어를 통해 HIGH값을 출력할 수 있습니다. if() 문 예제를 통해서도 내장된 LED에 digitalWrite() 명령을 통해 HIGH(점등)와 LOW(소등) 값을 출력하여 LED를 제어하였습니다.  

 

스케치를 통해 프로그램을 코딩하고 아두이노로 업로드하면 시리얼 모니터(Serial Monitor)에는 아래와 같이 나오고 습도(hum) 값이 70보다 크면 LED가 점등하고 아닐 경우 LED가 꺼지는 것을 볼 수 있습니다. 

 

아두이노(Arduino)를 사용해서 실내습도가 70보다 크면 내장 LED를 점등하고 아니면 소등하는 if 조건문 실행

 


여기까지 아두이노(Arduino)에서 자주 사용되는 'pinMode();', 'if(){}' 'digitalWrite();' 명령어에 대해 알아보았습니다. 오늘 알아본 조건문 코딩을 기반으로 온도나 습도가 설정 값보다 높거나 낮을 때 경고등을 점등한다던지 알람이 울린다던지.. 더 나아가 외부기기(에어컨, 선풍기)를 작동하는 프로젝트로 확장할 수 있습니다. 와~ 우~ 

 

다음번 포스팅에도 더 쓰임이 좋은 명령어를 소개해 보겠습니다. 긴 글 읽어 주셔서 감사합니다. 질문이나 추가적으로 필요하신 내용 있으면 언제든지 댓글로 남겨주세요~ ^^

 

아두이노 프로그램 코딩 입문도 참고하세요~

 

Arduino (아두이노) 스케치 프로그램 코딩 입문

아두이노(Arduino)는 프로그램에 의해 동작하는 Micro-controller입니다. 그렇기 때문에 프로그램 코딩을 어느 정도 할 수 있어야 원하는 홈 IoT (사물인터넷) 같은 프로젝트를 진행할 수 있습니다. 저처럼 프로그..

it-g-house.tistory.com

 

 

 

반응형

+ Recent posts