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 한 개를 반짝여본 다음, 그 회로에 스위치를 추가하고 코드도 그에 맞게 수정하는 것이 학생들이 연계하여 이해하는 것에 도움을 줄 것이라고 생각했다.
이에 두 실습이 이어질 수 있도록 코드와 회로를 직접 수정하였다. 이 과정에서 팅커캐드를 사용했는데, 직접 회로를 만드는 것보다 시간이 훨씬 단축되었다. 이 특징을 이용해 여러 코드와 회로를 실험해볼 수 있었다.
작성한 코드와 회로가 잘 작동하는지를 팅커캐드를 통해 확인해 보고 최종 확정되면, 직접 아두이노 보드를 연결하여 실제로도 오류 없이 작동하는지 이중으로 체크하였다.































