2주차 버튼 제어하기: 두 판 사이의 차이
편집 요약 없음 |
편집 요약 없음 |
||
37번째 줄: | 37번째 줄: | ||
[[파일:시리얼 모니터 실행.png|가운데|프레임없음|525x525픽셀]] | [[파일:시리얼 모니터 실행.png|가운데|프레임없음|525x525픽셀]] | ||
코드를 실행시킨 후 시리얼 모니터 아이콘을 클릭하면 아두이노 IDE 아래 창에서 결과를 확인할 수 있습니다. | 코드를 실행시킨 후 시리얼 모니터 아이콘을 클릭하면 아두이노 IDE 아래 창에서 결과를 확인할 수 있습니다. | ||
=== 3. 버튼 === | === 3. 버튼 === | ||
[[파일:택트스위치 이미지.jpg|프레임없음|가운데]] | [[파일:택트스위치 이미지.jpg|프레임없음|가운데]] | ||
[[택트 스위치(Tact Switch)]]는 디지털 핀에 연결하여 입력 신호로 활용 가능합니다. | |||
==== 3-1. 비교 연산자, 논리 연산자 ==== | |||
비교 연산자(<, <=, >, >=, ==, !=)는 두 개의 값을 비교하는 연산자입니다. 아두이노에서 결과는 참(1) 또는 거짓(0)으로 나타납니다. | |||
{| | |||
|+ | |||
|< | |||
|왼쪽 값이 오른쪽 값보다 작다. | |||
|A < B | |||
|- | |||
|<= | |||
|왼쪽 값이 오른쪽 값보다 작거나 같다. | |||
|A <= B | |||
|- | |||
|> | |||
|왼쪽 값이 오른쪽 값보다 크다. | |||
|A > B | |||
|- | |||
|>= | |||
|왼쪽 값이 오른쪽 값보다 크거나 같다. | |||
|A >= B | |||
|- | |||
|== | |||
|왼쪽 값과 오른쪽 값이 동일하다. | |||
|A == B | |||
|- | |||
|!= | |||
|왼쪽 값과 오른쪽 값이 동일하지 않다. | |||
|A != B | |||
|} | |||
논리 연산자(&&, ||, !)은 참과 거짓을 연산하기 위해 사용됩니다. | |||
{| class="wikitable" | |||
|+and | |||
|참 && 참 | |||
|1 | |||
|- | |||
|참 && 거짓 | |||
|0 | |||
|- | |||
|거짓 && 참 | |||
|0 | |||
|- | |||
|거짓 && 거짓 | |||
|0 | |||
|} | |||
{| class="wikitable" | |||
|+or | |||
|<nowiki>참 || 참</nowiki> | |||
|1 | |||
|- | |||
|<nowiki>참 || 거짓</nowiki> | |||
|1 | |||
|- | |||
|<nowiki>거짓 || 참</nowiki> | |||
|1 | |||
|- | |||
|<nowiki>거짓 || 거짓</nowiki> | |||
|0 | |||
|} | |||
{| class="wikitable" | |||
|+not | |||
|!참 | |||
|0 | |||
|- | |||
|!거짓 | |||
|1 | |||
|} | |||
==== 3-2. 조건문 if, else if, else ==== | |||
조건문 if는 조건이 "참"인 경우 작성한 코드가 수행되고 "거짓"인 경우 수행되지 않습니다.<syntaxhighlight lang="arduino" line="1"> | |||
if (조건) { | |||
// code.. | |||
} | |||
</syntaxhighlight> | |||
else문 안에 작성한 코드는 '''if문 조건'''이 "참"인 경우에는 실행되지 않고 "거짓"인 경우 수행됩니다.<syntaxhighlight lang="arduino" line="1"> | |||
if (조건) { | |||
// code.. | |||
} | |||
else { | |||
// code.. | |||
} | |||
</syntaxhighlight> | |||
else if는 else와 다르게 조건을 작성하여 세 개 이상의 조건을 연결하여 사용할 수 있습니다. | |||
else와 else if를 이용해 다양한 조건을 확인하는 조건문을 작성할 수 있습니다.<syntaxhighlight lang="arduino" line="1"> | |||
if (조건) { | |||
// code.. | |||
} | |||
else if(조건) { | |||
// code.. | |||
} | |||
else if(조건) { | |||
// code.. | |||
} | |||
else { | |||
// code.. | |||
} | |||
</syntaxhighlight> | |||
==== 3- | ==== 3-3. 버튼 회로도 ==== | ||
[[파일:아두이노 스위치 회로2.png|가운데|프레임없음|543x543픽셀]] | [[파일:아두이노 스위치 회로2.png|가운데|프레임없음|543x543픽셀]] | ||
==== 3- | ==== 3-4. 코드 ==== | ||
버튼을 이용해 버튼이 눌릴 때마다 시리얼 모니터에 "button push!"라는 문장을 출력하는 코드를 작성해봅시다.<syntaxhighlight lang="arduino" line="1"> | 버튼을 이용해 버튼이 눌릴 때마다 시리얼 모니터에 "button push!"라는 문장을 출력하는 코드를 작성해봅시다.<syntaxhighlight lang="arduino" line="1"> | ||
int btn = 9; | int btn = 9; |
2024년 1월 3일 (수) 12:47 판
1. 아두이노 디지털 핀
아두이노 디지털 입출력 pin은 보드의 digital pin 0 ~ 13을 사용할 수 있습니다. 0, 1번 pin은 컴퓨터와 아두이노가 통신할 때 주로 사용하기 때문에 우리는 2 ~ 13 핀을 사용하여 디지털 입출력을 사용할 수 있습니다.
저번 시간에는 디지털 출력(digitalWrite)를 사용해보았습니다. 이번 시간에는 디지털 출력(digitalRead)를 사용해봅시다.
2. 시리얼 모니터(Sirial Monitor)
시리얼 모니터란 아두이노에서 보내주는 데이터를 아두이노 IDE에 포함되어 있는 창을 이용해 출력해 확인해볼 수 있는 것을 말합니다.
아두이노에 연결된 센서를 이용해 측정된 값을 출력해서 확인해볼 수 있습니다.
아두이노 IDE의 오른쪽 위에 시리얼 모니터를 누르면 아래에 창이 보이게 됩니다.
시리얼 모니터를 이용해 출력하는 방법을 알아봅시다.
2-1. 시리얼 모니터에 출력하기
void setup() {
Serial.begin(9600);
}
int n = 1;
void loop() {
Serial.print("n : ");
Serial.println(n);
delay(1000);
n+=1;
}
위 코드를 작성해봅시다.
시리얼 모니터를 사용하기 위해서는 setup() 함수에 Serial.begin() 함수를 이용해 보드 레이트 기본값을 설정하고 시리얼 모니터를 사용하겠다고 코드를 작성합니다.
loop() 함수에서는 1초에 한 번씩 [n] 변수 값을 증가시키며 시리얼 모니터에 출력하는 코드입니다.
Serial.print() 함수는 괄호 안의 문자를 출력하는 함수이며 Serial.println() 함수는 괄호 안의 문자를 출력하고 마지막에 줄바꿈을 해주는 함수입니다.
코드를 실행시킨 후 시리얼 모니터 아이콘을 클릭하면 아두이노 IDE 아래 창에서 결과를 확인할 수 있습니다.
3. 버튼
택트 스위치(Tact Switch)는 디지털 핀에 연결하여 입력 신호로 활용 가능합니다.
3-1. 비교 연산자, 논리 연산자
비교 연산자(<, <=, >, >=, ==, !=)는 두 개의 값을 비교하는 연산자입니다. 아두이노에서 결과는 참(1) 또는 거짓(0)으로 나타납니다.
< | 왼쪽 값이 오른쪽 값보다 작다. | A < B |
<= | 왼쪽 값이 오른쪽 값보다 작거나 같다. | A <= B |
> | 왼쪽 값이 오른쪽 값보다 크다. | A > B |
>= | 왼쪽 값이 오른쪽 값보다 크거나 같다. | A >= B |
== | 왼쪽 값과 오른쪽 값이 동일하다. | A == B |
!= | 왼쪽 값과 오른쪽 값이 동일하지 않다. | A != B |
논리 연산자(&&, ||, !)은 참과 거짓을 연산하기 위해 사용됩니다.
참 && 참 | 1 |
참 && 거짓 | 0 |
거짓 && 참 | 0 |
거짓 && 거짓 | 0 |
참 || 참 | 1 |
참 || 거짓 | 1 |
거짓 || 참 | 1 |
거짓 || 거짓 | 0 |
!참 | 0 |
!거짓 | 1 |
3-2. 조건문 if, else if, else
조건문 if는 조건이 "참"인 경우 작성한 코드가 수행되고 "거짓"인 경우 수행되지 않습니다.
if (조건) {
// code..
}
else문 안에 작성한 코드는 if문 조건이 "참"인 경우에는 실행되지 않고 "거짓"인 경우 수행됩니다.
if (조건) {
// code..
}
else {
// code..
}
else if는 else와 다르게 조건을 작성하여 세 개 이상의 조건을 연결하여 사용할 수 있습니다.
else와 else if를 이용해 다양한 조건을 확인하는 조건문을 작성할 수 있습니다.
if (조건) {
// code..
}
else if(조건) {
// code..
}
else if(조건) {
// code..
}
else {
// code..
}
3-3. 버튼 회로도
3-4. 코드
버튼을 이용해 버튼이 눌릴 때마다 시리얼 모니터에 "button push!"라는 문장을 출력하는 코드를 작성해봅시다.
int btn = 9;
void setup() {
Serial.begin(9600);
pinMode(btn, INPUT_PULLUP);
}
void loop() {
if(digitalRead(btn) == LOW) {
Serial.println("button push!");
}
delay(100);
}
아두이노에는 자체적으로 풀업 저항이 내장되어있습니다.
디지털 입력 핀 모드를 설정할 때 'INPUT_PULLUP'을 사용하면 외부에 저항을 추가하지 않아도 디지털 핀을 풀업 저항으로 사용할 수 있게 됩니다.
버튼이 눌리게 되면 digitalRead() 함수에서 [LOW]가, 버튼이 눌리지 않을 때는 [HIGH] 값이 반환됩니다.
실습1. 버튼이 눌릴 때마다 n을 1 증가시키기
변수 n을 생성하고 버튼이 눌릴 때마다 1 증가시켜 시리얼 모니터에 출력하는 코드를 작성해봅시다.
int btn = 9;
void setup() {
Serial.begin(9600);
pinMode(btn, INPUT_PULLUP);
}
int n = 1;
void loop() {
if(digitalRead(btn) == LOW) {
// code..
}
delay(100);
}
실습2. 버튼을 눌러 LED 켜기1
버튼이 눌리는 동안 LED가 켜지고 버튼에서 손을 떼면 LED가 꺼질 수 있도록 코드를 작성해봅시다.
int btn = 9;
int led = 10;
void setup() {
Serial.begin(9600);
pinMode(btn, INPUT_PULLUP);
pinMode(led, OUTPUT);
}
int n = 1;
void loop() {
if(digitalRead(btn) == LOW) {
// code..
}
else {
// code..
}
delay(100);
}
실습3. 버튼을 눌러 LED 켜기2
다양한 변수, 조건문을 사용하여 버튼을 한 번 누르면 LED가 켜지고 다시 누르면 LED가 꺼질 수 있도록 코드를 작성해봅시다.
int btn = 9;
int led = 10;
void setup() {
Serial.begin(9600);
pinMode(btn, INPUT_PULLUP);
pinMode(led, OUTPUT);
}
void loop() {
if(digitalRead(btn) == LOW) {
// code..
}
delay(100);
}