2. 아두이노 문법 - 구조문
페이지 정보
작성자 관리자 댓글 0건 조회 2,964회 작성일 18-09-09 20:11본문
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);
}
댓글목록
등록된 댓글이 없습니다.