[5주차/교재제작] 아두이노 기초 문법, 스위치 + LED 제어하기(with C++)

장다희·2023년 2월 15일
1

Arduino

목록 보기
5/7

week5
2023.02.10
17:15-21:20


🔥 목표

  • 아두이노 문법 정리

  • LED 한 개를 반짝이게 하는 회로에서 스위치로 LED를 제어하는 회로로 바로 이어지도록 하는 효율적인 회로 찾고 코드 작성해서 정리

  • 아두이노 C언어 2주차 ppt 교재 제작(문법 정리, LED, 스위치)

💡 학습 내용

아두이노 문법 정리

-조건문

  • if elseif else

    else if문의 수에는 제한이 없으며 여러개의 조건문을 위에서부터 읽어나가 가장 먼저 true가 되는 블록만 실행하고 if문을 빠져나가게되며

    모든 실행조건이 맞지않는경우 else문을 실행한다.

if ( 조건1 )
{
조건 1이 참이면 실행
}

else if ( 조건2 )
{
조건 1이 거짓이고,
조건 2가 참이면 실행
}

else if ( 조건3 )
{
조건 1이 거짓이고,
조건 2도 거짓이고,
조건 3이 참이면 실행
}

else
{
조건 1, 2, 3 모두 거짓이면 실행
}

-반복문

  • while

    조건식이 true일 경우에 계속해서 반복하는 문법

    조건식에는 비교 또는 논리 연산식이 오는데 조건식이 false가 되면 반복을 멈추고 while문을 종료한다.

  • for

    일정한 횟수만큼 반복할 때 주로 사용되는 문법

for (초기식; 조건식; 증식)
{
실행문;
}
  • Break: 반복문을 실행중지할 때 사용

  • Continue: 반복문을 종료하지 않고 계속 반복을 수행

-변수 선언

int char float double boolean

string

string : C++에서 제공하는 클래스로 문자열을 다루는 클래스이다.

-비교 연산자

== : 왼쪽의 피연산자와 오른쪽의 피연산자의 값이 같으면 1을 반환한다.

!= : 왼쪽의 피연산자와 오른쪽의 피연산자의 값이 다르면 1을 반환한다.

< : 왼쪽의 피연산자가 오른쪽의 피연산자보다 작으면 1을 반환한다.

<= : 왼쪽의 피연산자가 오른쪽의 피연산자보다 작거나 같으면 1을 반환한다.

> : 왼쪽의 피연산자가 오른쪽의 피연산자보다 크면 1을 반환한다.

>= : 왼쪽의 피연산자가 오른쪽의 피연산자보다 크거나 같으면 1을 반환한다.

-대입 연산자

= : 왼쪽의 피연산자에 오른쪽의 피연산자를 대입한다.

산술 연산자를 ‘=’ 왼쪽에 붙여서 왼쪽의 피연산자에 오른쪽 피연산자를 산술 연산한 값을 왼쪽의 피연산자에 대입하는 연산자들도 있다.

ex) +=, -=, *=, /=, %=

-산술 연산자

+ : 왼쪽의 피연산자에 오른쪽의 피연산자를 더한다.

- : 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀다.

  • : 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한다.

    / : 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈다. 값으로는 몫을 반환한다.

    % : 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환한다.

아두이노 함수

-Void: 아무것도 반환할 필요가 없다.

-setup(): setup() 함수는 아두이노 IDE의 초기설정을 하는 부분이다. 각종 설정을 하는 함수이며 {} 안에 적힌 부분이 한 번만 실행된다.

-loop(): loop() 함수는 {} 안에 적힌 부분을 반복적으로 실행하는 함수이다.

-HIGH: 아두이노에서 5V를 의미하며, 숫자 1로 대신 사용해도 무방하다. 핀에 전기공급을 한다.

-LOW: 아두이노에서 0V를 의미하며, 숫자 0으로 대신 사용해도 무방하다. 핀에 전기공급을 끊는다.

-Serial.begin(통신속도): setup()에서 실행시켜준다. 컴퓨터와 아두이노 보드가 통신하기 위해 사용하는 시리얼 통신의 통신 속도를 설정하는 명령어이다. 통신속도로 보통 9600bps을 사용한다.

-pinMode(핀 번호, 모드)

해당 디지털 핀을 입력으로 사용할 것인지 출력으로 사용할 것인지 알려준다.

-INPUT: 입력모드

-OUTPUT: 출력모드

ex) pinMode(13, OUTPUT)

: 13번 핀을 출력 핀으로 설정한다.

-digitalWrite(핀 번호, 값)

해당 디지털 핀에 HIGH(전기 공급)또는 LOW(전기 공급 안 함)의 값을 줄 수 있는 명령어

핀 번호에는 전자 부품과 연결된 디지털 핀 번호 입력

값에는 HIGH 또는 LOW값을 입력

ex) digitalWrite(5, HIGH)

: 5번 핀을 사용하고 전기를 공급(HIGH)한다.

-delay(시간)

일정 시간만큼 시간을 지연시키는 함수

시간에 들어갈 값은 ms단위 (1/1000초)

1초를 표현할 때: delay(1000)

0.5초를 표현할 때: delay(500)

ex)

digitalWrite(13, HIGH);

delay(10000);

13번 핀에 전기를 공급하고, 10초간 대기

-digitalRead(핀 번호): 해당 디지털 핀의 상태를 읽어오는 명령어이다.

반환값: HIGH 또는 LOW 값 (1, 0)

-analogWrite(핀 번호, 값):

아날로그 값을 핀에 출력한다. 펄스 폭 조절(PWM) 기능을 지원하는 디지털 핀(아두이노 보드에서 ~표시가 되어 있는 핀)번호 0부터 255까지 입력 값을 지정하여 사용한다.

-analogRead(핀 번호)

아두이노 보드의 아날로그 핀에 연결된 값을 읽어온다.

아날로그 값은 0부터 1023까지 1024단계로 측정한다.

반환값: 0~1023 정수 값(int)

-Serial.available()

시리얼 통신으로 데이터를 받으면, 받은 데이터의 개수 출력

LED 실습에 효율적인 회로 찾고 코드 작성

‘LED 한 개를 반짝이게 하기’, ‘스위치로 LED 제어하기’ 를 어떻게 쉽고 효율적으로 학생들에게 전달할까에 대해 고민해보았다.
두 주제의 코드를 따로 작성하여 두 번 실습하는 것 보다 LED 한 개를 반짝여본 다음, 그 회로에 스위치를 추가하고 코드도 그에 맞게 수정하는 것이 학생들이 연계하여 이해하는 것에 도움을 줄 것이라고 생각했다.

이에 두 실습이 이어질 수 있도록 코드와 회로를 직접 수정하였다. 이 과정에서 팅커캐드를 사용했는데, 직접 회로를 만드는 것보다 시간이 훨씬 단축되었다. 이 특징을 이용해 여러 코드와 회로를 실험해볼 수 있었다.

작성한 코드와 회로가 잘 작동하는지를 팅커캐드를 통해 확인해 보고 최종 확정되면, 직접 아두이노 보드를 연결하여 실제로도 오류 없이 작동하는지 이중으로 체크하였다.

2주차 ppt 교재 제작

0개의 댓글