본문 바로가기
Research/Arduino

아두이노_C/C++ 기본 문법

by RIEM 2023. 3. 23.

변수

변수는 정보를 담는 그릇이다.

변수명

변수명은 알파벳, _ 로 시작해야 한다. 연산자(+-/* <>), 특수문자(%, $..), 예약어(void, int) 등은 사용할 수 없다.

자료형

변수에 담을 수 있는 데이터 형식은 고정되어있다. int에는 정수(10)만 담고, float에는 실수(10.3)만 담고, char에는 문자열(John)만 담을 수 있다.

// [자료형] [변수명] = [값];
int test = 10;
float ftest = 20.2;
char ctest = 'John'; // 문자열은 따옴표('')로 감싸줘야 한다

 

연산자

// 연산자 +-*/%

int X = 5;
int Y = 2;

int nRet = 0;
float fRet = 0.0; // 초기값도 실수형으로 할당

void setup() {
  nRet = X + Y;
  // fRet = X / B; // 둘 중 하나라도 정수형으로 연산하면 결과는 정수(2.0). 0.5가 누락된 상태
  
  // 캐스팅 : 일시적으로 데이터 타입을 변환하는 것
  fRet = (float)X / (float)B; // 일시적으로 이를 실수로 바꿔서 결과를 실수로 표현할 수 있다(2.5)
}

void loop() {
  // put your main code here, to run repeatedly:

}

 

Serial monitoring

위에서 연산을 위한 코드를 짜긴 짰는데, 이것들이 정상적으로 작동되는지 어찌 확인할 수 있을까? 이때 Serial monitoring를 사용하면 된다.

Serial Monitoring은 우측 상단부의 돋보기를 누르면 아래 창이 뜬다. 그리고 upload를 하면 print 결과가 나타난다.

// 연산자 +-*/%

int X = 5;
int Y = 2;

int nRet = 0;
float fRet = 0.0; // 초기값도 실수형으로 할당

void setup() {
  // 보드(아두이노)와 외부(PC) 간 통신을 하기 위한 Serial 객체. 9600은 초당 비트 전송 속도(bps)를 의미
  Serial.begin(9600);
  fRet = X + Y;

  Serial.print('hello');
}

void loop() {
  // put your main code here, to run repeatedly:

}

 

조건문

int N = 0;

void setup() {
  Serial.begin(9600);  
}

void loop() {
  
  if(N < 10){
    N++;
  } else {
    N = 0;
  }

  Serial.print(N);
  delay(500);

}

10 이하일 경우 N을 increment하고 10 이상일 경우 0으로 초기화하여 무한반복하는 코드를 짰다.

무한반복문이 잘 작동한다. 전원이 꺼질 때까지 반복한다. 그런데 우측 방향으로 가니까 보기가 쉽지 않다. println을 사용해서 newline으로 출력하도록 해주자.

int N = 0;

int nPin = 11; // 11번 핀

void setup() {
  Serial.begin(9600);

  // 핀이 입력인지 출력인지 알려주기. nPin을 출력으로 사용하겠다
  pinMode(nPin, OUTPUT);
}

void loop() {
  
  if(N < 10){
    N++;
    digitalWrite(nPin, HIGH);
  } else {
    N = 0;
    digitalWrite(nPin, LOW);
  }
  // Serial.print(N);
  Serial.println(N);
  delay(500);
}

LED 출력하는 것도 추가해두었다.

Switch문

// Switch 문
int N = 1;

int nPin = 11; // 11번 핀

void setup() {
  pinMode(nPin, OUTPUT);
}

void loop() {
  
  switch(N) {
    case 1:
      digitalWrite(nPin, HIGH);
      delay(1000);
      break;

    case 2:
      digitalWrite(nPin, HIGH);
      delay(2000);
      break;

    case 3:
      digitalWrite(nPin, HIGH);
      delay(3000);
      break;

    case 4:
      digitalWrite(nPin, HIGH);
      delay(4000);
      break;
    
    default:
      break;
  }

  digitalWrite(nPin, LOW);
  delay(500);

  N++;

  if(N > 4) {
    N = 0;
  }
}

 

반복문 for

int sum = 0;

void setup() {
  Serial.begin(9600);

  for(int N = 1; N < 11; N++) {
    Serial.print("N값 : ");
    Serial.println(N);
    sum = sum + N;
    Serial.print("sum값 : ");
    Serial.println(sum);
  }
}

void loop() {
   
}

 

반복문 while

int N = 1;
int sum = 0;

void setup() {

  while(N < 10) {
    sum = sum + N;
    N++;
    delay(0.5);
  }
}

void loop() {
   
}

 

Reference

참고 강의명 : 인프런 <아두이노와 떠나는 사물인터넷 여행 - 아두이노 입문부터 IoT 중급까지!>

 

'Research > Arduino' 카테고리의 다른 글

아두이노 설치 및 기초  (0) 2023.03.22

댓글