참고자료

아두이노, 오렌지보드 등의 오픈소스하드웨어를 사용하는데 필요한 것들을 알아봅니다.

제어문-if

2014-08-04 08:56:26

if 문

 

if문은 모든 기본적인 프로그래밍 제어구조에서 사용되는 구문으로 가장 기초적인 문법중의 하나이면서 가장 많이 쓰이는 문법중 하나이다.
if문의 역할은 어떤 조건이 주어졌을 때 그 조건이 참인지 거짓인지에 따라 각각 다른 명령문을 수행할 수 있게 도와주는 분기의 역할을 한다.
if문의 구조는 다음과 같이 작성한다.

 

 

if (조건) {
   // 조건이 참일때 실행되는 명령어들
}

 

 

위 구문은 가장 기초적인 if문 구조로서 하나의조건에 대해 참거짓을 판별한 다음 그 참거짓 유무에 따라 블록안의 구문이 실행될지 실행되지 않을지가 결정된다.

 

 

if (조건) {
   // 조건이 참일때 실행되는 명령어들
} 

else {
   // 조건이 거짓일때 실행되는 명령어들
}

 

 

위 구문은 if-else문이라고도 불리며 if문에서 else문을 추가한 구조이다. else문은 if문이 실행되지 않을시에 반드시 실행되는 블록으로 조건이 참일경우에는 if문이 반드시 실행되고 조건이 거짓일 경우에는 else문이 반드시 실행된다.

 

 

if (조건) {
   // 조건이 참일때 실행되는 명령어들
} else if (또 다른 조건) {
   // 처음 주어진 조건은 거짓이지만
   // 두 번째 주어진 또 다른 조건은 참일때 실행되는 명령어들
}

 

 

위 구문은 if문에서 else if문이 추가된 조건으로 else if문은 if문의 조건외에 또다른 조건을 가지고 참거짓을 판단한다. else if문은 if문이 거짓일 경우에 또다른 조건의 참거짓유무를 판별하며 if문이 참일경우에는 else if문은 실행되지 않는다. 
if문이 참일경우 -> if문 실행
if문이 거짓일 경우 -> else if문 판별 -> else if문이 참일 경우 else if문 실행

 

if문을 사용하여 조건에 따라 LED를 켜지고 꺼지는 회로를 구성해보자.

 

 

 

부품 목록

 

NO  부품명 수량      
아두이노 보드 1개
2 Potentiometer나 variable registor 1개
3 220Ω 저항 1개
4 LED 1개
5 Hook-up wire  

 

부품명 아두이노 보드 otentiometer나
variable registor
220Ω 저항 LED Hook-up wire
부품 사진

 

 

 

하드웨어 making

 

브레드보드

 

전자 회로도 

 

 

 

소프트웨어 coding

/*
 제목		: 제어문 / if
 내용		: if 문에 대해서 알아봅시다. 
 */
 
// 발췌 : http://arduino.cc/en/Tutorial/IfStatement

// 가변 저항을 아날로그 0번 핀에 연결합니다.
const int analogPin = A0;
// LED를 디지털 13번 핀에 연결합니다.
const int ledPin = 13;     
// threshold값을 400으로 지정합니다.
const int threshold = 400;       


// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
void setup() {
	// ledPin(13번핀)을 출력 핀으로 설정합니다. 
	pinMode(ledPin, OUTPUT);
	// 시리얼 통신 속도를 9600으로 설정합니다.
	Serial.begin(9600);
}

// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행합니다.
void loop() {
	// 가변 저항(A0)에서 읽어오는 값을 analogValue에 저장합니다.
	int analogValue = analogRead(analogPin);

	// analogValue의 값이 threshold(400)보다 클 경우에
	if (analogValue > threshold) {
		//디지털 13번 핀에 연결된 LED를 점등합니다.
		digitalWrite(ledPin, HIGH);
 	} 
 	// 아닐 경우에
	else {
		//디지털 13번 핀에 연결된 LED를 소등합니다.
    	digitalWrite(ledPin,LOW);
	}

 	// 가변 저항(AO)에서 읽어오는 값을 시리얼 모니터 창에 출력합니다.
	Serial.println(analogValue);
	//0.01초동안 대기합니다.
	delay(1); 
}

 


코드는 위와 같다. 위에 코드를 스케치에 작성하고 실행하면 결과를 볼 수 있다. 
코드를 설명하면 Analog핀 0번에는 potentiometer가 연결되어있고 디지털핀 13번에는 LED가 연결되어 있다. 

Potentiometer를 조절하여 지정한 threshold를 초과한 값이 analog핀 0번에서 출력되면 13번핀에 연결된 LED가 켜지고 그 미만의 값이 출력될 경우에는 LED가 꺼지는 소스이다.

 

 

 

 

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

제어문, if, 기타

노짱 2015-04-01 22:35:07

중간에 코드중에

void loop() {
analogPin(A0)에서 읽어오는 값을 analogValue에 저장
↑여기 // 빠졌습니다.
void loop() {
//analogPin(A0)에서 읽어오는 값을 analogValue에 저장
라고 해야 컴파일 오류가 안납니다.

윤지호 2015-10-08 15:43:50

setup() 함수 내에서 디지털 핀은 핀모드를 설정해 주는데 아날로그 핀은 따로 핀모드를 설정해 줄 필요는 없는 건가요??
예를 들어서 setup()함수 내에 pinMode(analogPin, INPUT); 이런 설정은 필요없는 건가요??

원기옥 2015-10-08 18:59:26

아날로그 핀의 목적은 주로 센서의 값을 읽는데 사용되기 때문에 INPUT이 디폴트여서 INPUT모드로 사용하실 경우 별도의 모드 설정을 하지 않으셔도 됩니다. 물론 pinMode(analogPin, INPUT) 이렇게 명시를 해주는 것이 더 명확하긴 하죠!!

kocoafab 2019-01-07 09:45:20

@노짱
수정 완료되었습니다.