아두이노

본문 바로가기
사이트 내 전체검색


아두이노
아두이노

2. 아두이노 문법 - 구조문

페이지 정보

작성자 관리자 댓글 0건 조회 2,248회 작성일 18-09-09 20:11

본문

2. 아두이노 문법 - 구조문

  

1. 구조문

아두이노(C++)코드의 요소항목으로 스케치, 제어구조, 산술연산자, 비교연산자, 부울연산자, 비트연산자, 복합연산자, 포인터엑세스연산자 등으로 구분된다.


1) setup()


setup함수를 이용하여 변수, 보드핀 모드를 초기화하고, 라이브러리 사용 시작 등을 한다. 아두이노 보드 전원켜기 또는 리셋 후 한번만 실행한다.


int buttonPin = 3;

void setup() {

        Serial.begin(9600);

        pinMode(buttonPin, INPUT);

void loop() {

        // ............

}


2) loop()


setup함수를 생성한 후에 해당 초기변수를 초기화하고 설정하는데, loop()함수는 해당 변수 등을 이용하여 루프를 반복하여, 프로그램이 바뀌고 응답할 수 있게 허용한다.


int buttonPin = 3;

// setup 은 시리얼과 버튼 핀을 초기화함

void setup() {

    Serial.begin(9600);

    pinMode(buttonPin, INPUT);

// loop 는 버튼 핀을 매번 체크하고

// 버튼이 눌러지면 시리얼 통신으로 문자를 전송한다.

void loop() {

    if(digitalRead(buttonPIn) == HIGH)

        Serial.write(‘H’);

    else

        Serial.write(‘L’);

    delay(1000);

}


3) if ... else


if문은 조건을 체크하기 위해 사용되며, 조건이 ‘true’이면 정의도니 문장을 실행한다.


int buttonPin1 = 3;

int buttonPin2 = 4;

int x=150;

// setup 은 시리얼과 버튼 핀을 초기화함

void setup() {

    Serial.begin(9600);

    pinMode(buttonPin1, INPUT);

    pinMode(buttonPin1, INPUT);

// loop 는 버튼 핀을 매번 체크하고

// 버튼이 눌러지면 시리얼 통신으로 문자를 전송한다.

void loop() {

    if(x > 120) digitalWrite(buttonPin1, HIGH);

    if(x > 120)

        digitalWrite(buttonPin1, HIGH);

    if(x > 120) {

        digitalWrite(buttonPin1, HIGH);

    }

    if(x > 120) {

        digitalWrite(buttonPin1, HIGH);

        digitalWrite(buttonPin2, HIGH);

    }

}


loop 함수의 내용에서 if문장의 다양하게 적용된 것을 볼 수 있다.


4) for


for문은 중괄호에 정의된 문의 블록을 반복할 때 사용된다. 증감 값에 따라 카운터가 증가, 감소 등에 사용할 수 있다.

for( 초기화; 조건; 증가,감) {

        // 문;

}


int pwmPin = 10;


void setup() {

    pinMode(pwmPin, INPUT);

}

void loop() {

    for(int i=0; i <=255; i++) {

        analogWrite( pwmPin, i );

        delay(10);

    }

}


해당 소스는 반복문을 이용하여 0~255까지 LED의 값을 전달하는 소스이다.


5) while


while 문은 계속 무한히 돌아가며, 중괄호 안의 식이 거짓이 될 때 까지 동작한다. 해당식이 바뀌지 않으면, while문은 무한으로 동작한다.

while(조건 ) {

        // 문;

}

//-------------------------------------

int x = 0;

void setup() {

    Serial.begin(9600);

}

void loop() {

    while(x < 200) {

        // x 200번 반복

        x ++;

    }

}


6) do ... while


do ... while 문의 경우 조건이 반복 끝에서 테스트되는 것으로 while문과 같은 방식으로 동작하므로, 한번은 동작하는 방식이다.

do {

        // 문;

} while(조건);

//-------------------------------------

int x = 0;

void setup() {

    Serial.begin(9600);

}

void loop() {

    do {

        delay(50); // 50ms 대기

        x = readSensor(); // 센서 확인

    } while(x < 100) ;

}


7) switch case


if문 과 같이 사용하는 방식으로 switch case 는 다양한 조건을 정의해서 동작할 경우에 사용한다. 즉 다른 코드를 개발자가 지정하여 사용하며 프로그램의 흐름을 제어한다. switch case 문을 사용할 경우에 break 문을 사용해야만 해당 case문에서 빠져나올 수 있다.


switch(조건) {

    case 정의1 :

        //문;

    case 정의2 :

        //문;

    default:

        //문;

}



// LED 사용의 PWM 핀번호

int pwmPin = 10;

int x = 0;


void setup() {

    pinMode(pwmPin, INPUT);

    Serial.begin(9600);

}

void loop() {

    x = sensorRead(); // 센서값 읽기

    switch (x) {

        case 1:

            analogWrite(pwmPin, 100); // LED 100 밝기 적용

            break;

        case 2:

            analogWrite(pwmPin, 200); // LED 200 밝기 적용

            break;

        default :

            analogWrite(pwmPin, 0); // LED 0 밝기 적용

            break;

    }

    delay(10);

}




댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.