|
|
(같은 사용자의 중간 판 하나는 보이지 않습니다) |
111번째 줄: |
111번째 줄: |
| [[파일:블록 버튼눌러LED켜기.png|프레임없음|642x642픽셀]] | | [[파일:블록 버튼눌러LED켜기.png|프레임없음|642x642픽셀]] |
|
| |
|
| ==== 실습1. 버튼이 눌릴 때마다 n을 1 증가시키기 ====
| |
| <div class="coders70"> | | <div class="coders70"> |
| <youtube>0ZIF59rua3U</youtube> | | <youtube>LU5j2LB7KbQ</youtube> |
| </div> | | </div> |
| 변수 n을 생성하고 버튼이 눌릴 때마다 1 증가시켜 시리얼 모니터에 출력하는 코드를 작성해봅시다.<syntaxhighlight lang="arduino" line="1">
| |
| int btn = 9;
| |
|
| |
|
| void setup() {
| | ==== 실습1. 버튼을 눌러 LED 켜기1 ==== |
| Serial.begin(9600);
| |
| pinMode(btn, INPUT_PULLUP);
| |
| }
| |
| | |
| int n = 1;
| |
| void loop() {
| |
| if(digitalRead(btn) == LOW) {
| |
| // code..
| |
| }
| |
| delay(100);
| |
| }
| |
| | |
| </syntaxhighlight>
| |
| | |
| ==== 실습2. 버튼을 눌러 LED 켜기1 ==== | |
| <div class="coders70"> | | <div class="coders70"> |
| <youtube>XoEXZ7I-jQ4</youtube> | | <youtube>XoEXZ7I-jQ4</youtube> |
| </div> | | </div> |
| 버튼이 눌리는 동안 LED가 켜지고 버튼에서 손을 떼면 LED가 꺼질 수 있도록 코드를 작성해봅시다.<syntaxhighlight lang="arduino" line="1"> | | 버튼이 눌리는 동안 LED가 켜지고 버튼에서 손을 떼면 LED가 꺼질 수 있도록 코드를 작성해봅시다. |
| int btn = 9;
| | ==== 실습2. 버튼을 눌러 LED 켜기2 ==== |
| int led = 10;
| |
| | |
| void setup() {
| |
| pinMode(btn, INPUT_PULLUP);
| |
| pinMode(led, OUTPUT);
| |
| }
| |
| | |
| int n = 1;
| |
| void loop() {
| |
| if(digitalRead(btn) == LOW) {
| |
| // code..
| |
| }
| |
| else {
| |
| // code..
| |
| }
| |
| delay(100);
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ==== 실습3. 버튼을 눌러 LED 켜기2 ==== | |
| <div class="coders70"> | | <div class="coders70"> |
| <youtube>EjwfY51onl8</youtube> | | <youtube>EjwfY51onl8</youtube> |
| </div> | | </div> |
| 다양한 변수, 조건문을 사용하여 버튼을 한 번 누르면 LED가 켜지고 다시 누르면 LED가 꺼질 수 있도록 코드를 작성해봅시다.<syntaxhighlight lang="arduino" line="1"> | | 다양한 변수, 조건문을 사용하여 버튼을 한 번 누르면 LED가 켜지고 다시 누르면 LED가 꺼질 수 있도록 코드를 작성해봅시다. |
| int btn = 9;
| | ==== 실습3. 버튼을 눌러 LED 여러개 제어하기 ==== |
| int led = 10;
| |
| | |
| void setup() {
| |
| pinMode(btn, INPUT_PULLUP);
| |
| pinMode(led, OUTPUT);
| |
| }
| |
| | |
| void loop() {
| |
| if(digitalRead(btn) == LOW) {
| |
| // code..
| |
| }
| |
| // code..
| |
| delay(100);
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ==== 실습4. 버튼을 눌러 LED 여러개 제어하기 ==== | |
| <div class="coders70"> | | <div class="coders70"> |
| <youtube>OS93IM3tzDQ</youtube> | | <youtube>OS93IM3tzDQ</youtube> |
| </div> | | </div> |
| 다양한 변수, 조건문을 사용하여 버튼을 누를 때마다 현재 LED는 꺼지고 다음 LED가 켜질 수 있도록 코드를 작성해봅시다.<syntaxhighlight lang="arduino" line="1"> | | 다양한 변수, 조건문을 사용하여 버튼을 누를 때마다 현재 LED는 꺼지고 다음 LED가 켜질 수 있도록 코드를 작성해봅시다. |
| int btn = 9;
| |
| int led1 = 10;
| |
| int led2 = 11;
| |
| int led3 = 12;
| |
| | |
| void setup() {
| |
| pinMode(btn, INPUT_PULLUP);
| |
| pinMode(led1, OUTPUT);
| |
| pinMode(led2, OUTPUT);
| |
| pinMode(led3, OUTPUT);
| |
| }
| |
| | |
| void loop() {
| |
| if(digitalRead(btn) == LOW) {
| |
| // code..
| |
| }
| |
| // code..
| |
| delay(100);
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| === 4. 실습 코드 참고하기 === | | === 4. 실습 코드 참고하기 === |
|
| |
|
| ==== 1. 실습 코드) 버튼이 눌릴 때마다 n을 1 증가시키기 ==== | | ==== 1. 실습 코드) 버튼을 눌러 LED 켜기1 ==== |
| <syntaxhighlight lang="arduino" line="1">
| | [[파일:블록 버튼눌러LED켜기.png|프레임없음|402x402px]] |
| int btn = 9;
| |
| | |
| void setup() {
| |
| Serial.begin(9600);
| |
| pinMode(btn, INPUT_PULLUP);
| |
| }
| |
| | |
| int n = 1;
| |
| void loop() {
| |
| if(digitalRead(btn) == LOW) {
| |
| Serial.println("### button push!!! ###");
| |
| Serial.println(n);
| |
| Serial.println("######################");
| |
| n+=1;
| |
| }
| |
| delay(100);
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ==== 2. 실습 코드) 버튼을 눌러 LED 켜기1 ====
| |
| <syntaxhighlight lang="arduino" line="1">
| |
| 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) {
| |
| digitalWrite(led, HIGH);
| |
| }
| |
| else {
| |
| digitalWrite(led, LOW);
| |
| }
| |
| delay(100);
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ===== 3. 실습 코드) 버튼을 눌러 LED 켜기2 =====
| |
| <syntaxhighlight lang="arduino" line="1">
| |
| int btn = 9;
| |
| int led = 10;
| |
| | |
| void setup() {
| |
| Serial.begin(9600);
| |
| pinMode(btn, INPUT_PULLUP);
| |
| pinMode(led, OUTPUT);
| |
| }
| |
| | |
| int flag = 0;
| |
| | |
| void loop() {
| |
| if(digitalRead(btn) == LOW) {
| |
| if (flag == 0) {
| |
| flag = 1;
| |
| }
| |
| else {
| |
| flag = 0;
| |
| }
| |
| }
| |
| if(flag == 0) {
| |
| digitalWrite(led, LOW);
| |
| }
| |
| else {
| |
| digitalWrite(led, HIGH);
| |
| }
| |
| delay(100);
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ==== 4. 실습 코드) 버튼을 눌러 LED 여러개 제어하기 ====
| |
| <syntaxhighlight lang="arduino" line="1">
| |
| int btn = 9;
| |
| int led1 = 10;
| |
| int led2 = 11;
| |
| int led3 = 12;
| |
| | |
| void setup() {
| |
| pinMode(btn, INPUT_PULLUP);
| |
| pinMode(led1, OUTPUT);
| |
| pinMode(led2, OUTPUT);
| |
| pinMode(led3, OUTPUT);
| |
| }
| |
| | |
| int led_num = 1;
| |
|
| |
|
| void loop() {
| | ===== 2. 실습 코드) 버튼을 눌러 LED 켜기2 ===== |
| if(digitalRead(btn) == LOW) {
| | [[파일:블록 2주차실습2.png|프레임없음|709x709픽셀]] |
| led_num += 1;
| |
| if (led_num >= 4) {
| |
| led_num = 1;
| |
| }
| |
| }
| |
| if (led_num == 1) {
| |
| digitalWrite(12, LOW);
| |
| digitalWrite(10, HIGH);
| |
| }
| |
| if (led_num == 2) {
| |
| digitalWrite(10, LOW);
| |
| digitalWrite(11, HIGH);
| |
| }
| |
| if (led_num == 3) {
| |
| digitalWrite(11, LOW);
| |
| digitalWrite(12, HIGH);
| |
| }
| |
| delay(100);
| |
| }
| |
|
| |
|
| </syntaxhighlight>
| | ==== 3. 실습 코드) 버튼을 눌러 LED 여러개 제어하기 ==== |
| | [[파일:블록 2주차실습3.png|프레임없음|937x937픽셀]] |
1. 아두이노 디지털 핀
아두이노 디지털 입출력 pin은 보드의 digital pin 0 ~ 13을 사용할 수 있습니다. 0, 1번 pin은 컴퓨터와 아두이노가 통신할 때 주로 사용하기 때문에 우리는 2 ~ 13 핀을 사용하여 디지털 입출력을 사용할 수 있습니다.
저번 시간에는 디지털 출력(digitalWrite)를 사용해보았습니다. 이번 시간에는 디지털 출력(digitalRead)를 사용해봅시다.
3. 버튼
택트 스위치(Tact Switch)는 디지털 핀에 연결하여 입력 신호로 활용 가능합니다.
3-1. 비교 연산자
비교 연산자(<, >, , =)는 두 개의 값을 비교하는 연산자입니다. 아두이노에서 결과는 [참] 또는 [거짓]으로 나타납니다.
3-2. 논리 연산자
논리 연산자(그리고, 또는, 부정)은 참과 거짓을 연산하기 위해 사용됩니다.
[ ] 그리고 [ ]
[참] 그리고 [참]
|
참
|
[참] 그리고 [거짓]
|
거짓
|
[거짓] 그리고 [참]
|
거짓
|
[거짓] 그리고 [거짓]
|
거짓
|
[ ] 또는 [ ]
[참] 또는 [참]
|
참
|
[참] 또는 [거짓]
|
참
|
[거짓] 또는 [참]
|
참
|
[거짓] 또는 [거짓]
|
거짓
|
[ ] 의 부정
[참]의 부정
|
거짓
|
[거짓]의 부정
|
참
|
3-3. 조건 블록
조건 블록 "만약 [ ] 이(가) 참이면" 블록은 조건이 "참"인 경우 작성한 코드가 수행되고 "거짓"인 경우 수행되지 않습니다.
"아니면" 안에 작성한 코드는 만약 [ ] 블록의 조건이 "참"인 경우에는 실행되지 않고 "거짓"인 경우 수행됩니다.
3-4. 버튼 회로도
3-5. 확장 기능 사용하기
먼저 버튼을 이용하기 위해 아래의 "확장"을 눌러봅시다.
검색창에 "input"라고 작성하여 [INPUT_PULLUP]라고 하는 확장 기능을 추가해봅시다.
3-6. 코드 작성
버튼을 이용해 버튼이 눌리면 아두이노의 LED가 켜지고 버튼이 눌리지 않으면 아두이노의 LED가 꺼지는 코드를 작성해봅시다.
TIP) 아두이노에는 [L]라고 하는 알파벳이 적힌 LED가 있습니다. 이 LED는 디지털 13번핀을 제어하면 켜고 끌 수 있습니다. 그래서 LED를 연결하지 않고도 버튼이 작동하는지 확인할 수 있답니다!
단, [L]의 위치는 아두이노마다 조금씩 다를 수 있습니다.
실습1. 버튼을 눌러 LED 켜기1
버튼이 눌리는 동안 LED가 켜지고 버튼에서 손을 떼면 LED가 꺼질 수 있도록 코드를 작성해봅시다.
실습2. 버튼을 눌러 LED 켜기2
다양한 변수, 조건문을 사용하여 버튼을 한 번 누르면 LED가 켜지고 다시 누르면 LED가 꺼질 수 있도록 코드를 작성해봅시다.
실습3. 버튼을 눌러 LED 여러개 제어하기
다양한 변수, 조건문을 사용하여 버튼을 누를 때마다 현재 LED는 꺼지고 다음 LED가 켜질 수 있도록 코드를 작성해봅시다.
4. 실습 코드 참고하기
1. 실습 코드) 버튼을 눌러 LED 켜기1
2. 실습 코드) 버튼을 눌러 LED 켜기2
3. 실습 코드) 버튼을 눌러 LED 여러개 제어하기