2주차 버튼 제어하기(블록코딩): 두 판 사이의 차이

아두위키 : Arduwiki
 
(같은 사용자의 중간 판 6개는 보이지 않습니다)
5번째 줄: 5번째 줄:
저번 시간에는 디지털 출력(digitalWrite)를 사용해보았습니다. 이번 시간에는 디지털 출력(digitalRead)를 사용해봅시다.
저번 시간에는 디지털 출력(digitalWrite)를 사용해보았습니다. 이번 시간에는 디지털 출력(digitalRead)를 사용해봅시다.


=== 3. 버튼 ===
=== 2. 버튼 ===
[[파일:택트스위치 이미지.jpg|프레임없음|가운데]]
[[파일:택트스위치 이미지.jpg|프레임없음|가운데]]


[[택트 스위치(Tact Switch)]]는 디지털 핀에 연결하여 입력 신호로 활용 가능합니다.
[[택트 스위치(Tact Switch)]]는 디지털 핀에 연결하여 입력 신호로 활용 가능합니다.


==== 3-1. 비교 연산자 ====
==== 2-1. 비교 연산자 ====
비교 연산자(<, >, , =)는 두 개의 값을 비교하는 연산자입니다. 아두이노에서 결과는 [참] 또는 [거짓]으로 나타납니다.
비교 연산자(<, >, , =)는 두 개의 값을 비교하는 연산자입니다. 아두이노에서 결과는 [참] 또는 [거짓]으로 나타납니다.
[[파일:블록 같다 .png|프레임|왼쪽 값과 오른쪽 값이 동일하다.|없음]]
[[파일:블록 같다 .png|프레임|왼쪽 값과 오른쪽 값이 동일하다.|없음]]
20번째 줄: 20번째 줄:




==== 3-2. 논리 연산자 ====
==== 2-2. 논리 연산자 ====


논리 연산자(그리고, 또는, 부정)은 참과 거짓을 연산하기 위해 사용됩니다.
논리 연산자(그리고, 또는, 부정)은 참과 거짓을 연산하기 위해 사용됩니다.
74번째 줄: 74번째 줄:




==== 3-3. 조건 블록 ====
==== 2-3. 조건 블록 ====
조건 블록 "만약 [ ] 이(가) 참이면" 블록은 조건이 "참"인 경우 작성한 코드가 수행되고 "거짓"인 경우 수행되지 않습니다.
조건 블록 "만약 [ ] 이(가) 참이면" 블록은 조건이 "참"인 경우 작성한 코드가 수행되고 "거짓"인 경우 수행되지 않습니다.


86번째 줄: 86번째 줄:




==== 3-4. 버튼 회로도 ====
==== 2-4. 버튼 회로도 ====
[[파일:아두이노 스위치 회로2.png|가운데|프레임없음|543x543픽셀]]
[[파일:아두이노 스위치 회로2.png|가운데|프레임없음|543x543픽셀]]


==== 3-5. 확장 기능 사용하기 ====
==== 2-5. 확장 기능 사용하기 ====


[[파일:블록 확장.png|프레임없음|662x662픽셀]]
[[파일:블록 확장.png|프레임없음|662x662픽셀]]
100번째 줄: 100번째 줄:
[[파일:블록 PULLUP.png|없음|프레임|버튼이 눌리게 되면 digital port 함수에서 [거짓]의 값이, 버튼이 눌리지 않을 때는 "참"의 값이 반환됩니다.]]
[[파일:블록 PULLUP.png|없음|프레임|버튼이 눌리게 되면 digital port 함수에서 [거짓]의 값이, 버튼이 눌리지 않을 때는 "참"의 값이 반환됩니다.]]


==== 3-6. 코드 작성 ====
==== 2-6. 코드 작성 ====
버튼을 이용해 버튼이 눌리면 아두이노의 LED가 켜지고 버튼이 눌리지 않으면 아두이노의 LED가 꺼지는 코드를 작성해봅시다.
버튼을 이용해 버튼이 눌리면 아두이노의 LED가 켜지고 버튼이 눌리지 않으면 아두이노의 LED가 꺼지는 코드를 작성해봅시다.


115번째 줄: 115번째 줄:
</div>
</div>


==== 실습1. 버튼을 눌러 LED 켜기1 ====
==== 2-7. [실습] 버튼을 눌러 LED 켜기1 ====
<div class="coders70">
<div class="coders70">
<youtube>XoEXZ7I-jQ4</youtube>
<youtube>XoEXZ7I-jQ4</youtube>
</div>
</div>
버튼이 눌리는 동안 LED가 켜지고 버튼에서 손을 떼면 LED가 꺼질 수 있도록 코드를 작성해봅시다.
버튼이 눌리는 동안 LED가 켜지고 버튼에서 손을 떼면 LED가 꺼질 수 있도록 코드를 작성해봅시다.
==== 실습2. 버튼을 눌러 LED 켜기2 ====
==== 2-8. [실습] 버튼을 눌러 LED 켜기2 ====
<div class="coders70">
<div class="coders70">
<youtube>EjwfY51onl8</youtube>
<youtube>EjwfY51onl8</youtube>
</div>
</div>
다양한 변수, 조건문을 사용하여 버튼을 한 번 누르면 LED가 켜지고 다시 누르면 LED가 꺼질 수 있도록 코드를 작성해봅시다.
다양한 변수, 조건문을 사용하여 버튼을 한 번 누르면 LED가 켜지고 다시 누르면 LED가 꺼질 수 있도록 코드를 작성해봅시다.
==== 실습3. 버튼을 눌러 LED 여러개 제어하기 ====
==== 2-9. [실습] 버튼을 눌러 LED 여러개 제어하기 ====
<div class="coders70">
<div class="coders70">
<youtube>OS93IM3tzDQ</youtube>
<youtube>OS93IM3tzDQ</youtube>
</div>
</div>
다양한 변수, 조건문을 사용하여 버튼을 누를 때마다 현재 LED는 꺼지고 다음 LED가 켜질 수 있도록 코드를 작성해봅시다.
다양한 변수, 조건문을 사용하여 버튼을 누를 때마다 현재 LED는 꺼지고 다음 LED가 켜질 수 있도록 코드를 작성해봅시다.
=== 4. 아두이노 아날로그 핀 ===
=== 3. 아두이노 아날로그 핀 ===
[[파일:아날로그read.png|프레임없음|414x414픽셀]]
[[파일:아날로그read.png|프레임없음|414x414픽셀]]


137번째 줄: 137번째 줄:
아날로그 입력(analogRead)를 사용해 센서의 값을 읽어와 출력해 봅시다.
아날로그 입력(analogRead)를 사용해 센서의 값을 읽어와 출력해 봅시다.


==== 4-1. 조도 센서 회로도 ====
==== 3-1. 조도 센서 회로도 ====
주변 환경의 빛 강도를 측정하기 위해 설계된 센서 모듈입니다. 이 센서 모듈은 자동 조명 시스템, 식물을 위한 성장등, 빛 조건의 변화를 감지해야 하는 모든 애플리케이션에서 빛 수준을 모니터링하거나 제어해야 할 때 자주 사용됩니다.
주변 환경의 빛 강도를 측정하기 위해 설계된 센서 모듈입니다. 이 센서 모듈은 자동 조명 시스템, 식물을 위한 성장등, 빛 조건의 변화를 감지해야 하는 모든 애플리케이션에서 빛 수준을 모니터링하거나 제어해야 할 때 자주 사용됩니다.


[[파일:조도센서.png|프레임없음]]
[[파일:조도센서.png|프레임없음]]


==== 4-2. 코드 ====
==== 3-2. [실습] cds를 이용해 어두워지면 LED 켜기 ====
<div class="coders70">
cds 센서를 이용해 빛의 세기를 읽어와 코딩해 봅시다.
<youtube>w15j1EjFnxo</youtube>
</div><syntaxhighlight lang="arduino" line="1">
void setup()
{
  Serial.begin(9600);
}
 
void loop()
{
  int data = analogRead(A0);
  Serial.println(data);   
 
  delay(300);
}
</syntaxhighlight>cds 센서를 이용해 빛의 세기를 읽어와 출력해 봅시다.


센서를 손가락으로 가리면 값이 커집니다.
센서를 손가락으로 가리면 값이 커집니다.
166번째 줄: 151번째 줄:
cds 센서값은 0~1023 사잇값으로 표현됩니다.
cds 센서값은 0~1023 사잇값으로 표현됩니다.


==== 4-3. [실습] cds를 이용해 어두워지면 LED 켜기 ====
실생활의 가로등을 생각해 보세요!
실생활의 가로등을 생각해 보세요!


173번째 줄: 157번째 줄:
<div class="coders70">
<div class="coders70">
<youtube>n5euIczo0U4</youtube>
<youtube>n5euIczo0U4</youtube>
</div><syntaxhighlight lang="arduino" line="1">
</div>[[파일:CDS블록2.png|프레임없음|599x599픽셀]]
int led = 3;
 
=== 4. LCD ===
[[파일:LCD.png|프레임없음|529x529픽셀]]
 
아두이노 LCD 모듈은 문자나 숫자를 디스플레이하기 위해 사용하는 모듈입니다.
 
[[파일:LCD 2.png|프레임없음]]
 
뒷 면에 가변저항이 있어 글자 밝기 조절이 가능합니다. 글자가 잘 안보이면 조절해보세요!
 
==== 4-1. LCD 회로도 ====
{| class="wikitable"
!I2C LCD 모듈 핀
!아두이노 우노 핀
|-
|VCC
|5V
|-
|GND
|GND
|-
|SDA
|A4
|-
|SCL
|A5
|}
[[파일:LCD 회로도.png|프레임없음|625x625픽셀]]
 
==== 4-2. 확장 라이브러리 추가 ====
먼저 아두이노 에서 LCD을 사용하기 위해 확장 라이브러리를 설치합니다.
 
[확장]에서 "LCD"을 검색합니다. 아래 빨간 네모로  표시한 확장 라이브러리를 추가합니다.
 
[[파일:LCD확장.png|프레임없음|909x909픽셀]]
 
==== 4-3. 코드 ====
[[파일:Lcd출력.png|프레임없음|479x479픽셀]]
 
 
 
 
LCD에 "Hello!", "CODERSIT"를 출력해 봅시다.
 
[[파일:Lcd코드2.png|프레임없음|701x701픽셀]]
 
* LCD의 커서 좌표
 
[[파일:Lcd커서.png|프레임없음|850x850픽셀]]
 
==== 4-4. [실습] LCD에 숫자 출력하기 ====
영상을 보고 LCD에 숫자를 출력해 봅시다.
 
변수를 만들고 1초에 1씩 증가하면서 LCD에 출력해 보세요.
 
'''★ [Clear LCD at 0x27]''' 블록을 사용하면 lcd에 나타냈던 문자를 모두 지울 수 있습니다.
<div class="coders70">


void setup()
<youtube>dgjGyowNNq4</youtube>
{
</div>
  pinMode(led, OUTPUT);
  Serial.begin(9600);
}


void loop()
==== 4-5. [실습] LCD에 물결 출력하기 ====
{
영상을 보고 문자를 출력하여 물결 모양으로 출력해 봅시다.
  int data = analogRead(A0);
  Serial.println(data);   
 
  // code ..


  delay(300);
'''★ [Clear LCD at 0x27]''' 블록을 사용하면 lcd에 나타냈던 문자를 모두 지울 수 있습니다.
}
<div class="coders70">
</syntaxhighlight>
<youtube>xs7sHnCpjNg</youtube>
</div>


==== 4-6. [실습] 조도 센서의 값 LCD에 나타내기 ====
<div class="coders70">
<youtube>pC1EdyVV4uQ</youtube>
</div>


위에서 배운 조도 센서와 LCD를 함께 사용해 봅시다.


조도 센서의 값을 읽어와 LCD에 나타내 봅시다.
=== 5. 실습 코드 참고하기 ===
=== 5. 실습 코드 참고하기 ===


==== 1. 실습 코드) 버튼을 눌러 LED 켜기1 ====
==== 2-7. [실습] 버튼을 눌러 LED 켜기1 ====
[[파일:블록 버튼눌러LED켜기.png|프레임없음|402x402px]]
[[파일:블록 버튼눌러LED켜기.png|프레임없음|402x402px]]


===== 2. 실습 코드) 버튼을 눌러 LED 켜기2 =====
===== 2-8. [실습] 버튼을 눌러 LED 켜기2 =====
[[파일:블록 2주차실습2.png|프레임없음|709x709픽셀]]
[[파일:블록 2주차실습2.png|프레임없음|709x709픽셀]]


==== 3. 실습 코드) 버튼을 눌러 LED 여러개 제어하기 ====
==== 2-9. [실습] 버튼을 눌러 LED 여러개 제어하기 ====
[[파일:블록 2주차실습3.png|프레임없음|937x937픽셀]]
[[파일:블록 2주차실습3.png|프레임없음|937x937픽셀]]
==== 3-2. [실습] cds를 이용해 어두워지면 LED 켜기 ====
[[파일:실습 3-2.png|프레임없음|582x582픽셀]]
==== 4-4. [실습] LCD에 숫자 출력하기 ====
[[파일:실습4-4.png|프레임없음|555x555픽셀]]
==== 4-6. [실습] 조도 센서의 값 LCD에 나타내기 ====
[[파일:실습 4-6.png|프레임없음|586x586픽셀]]

2024년 12월 29일 (일) 15:06 기준 최신판

1. 아두이노 디지털 핀

아두이노 디지털 입출력 pin은 보드의 digital pin 0 ~ 13을 사용할 수 있습니다. 0, 1번 pin은 컴퓨터와 아두이노가 통신할 때 주로 사용하기 때문에 우리는 2 ~ 13 핀을 사용하여 디지털 입출력을 사용할 수 있습니다.

저번 시간에는 디지털 출력(digitalWrite)를 사용해보았습니다. 이번 시간에는 디지털 출력(digitalRead)를 사용해봅시다.

2. 버튼

택트 스위치(Tact Switch)는 디지털 핀에 연결하여 입력 신호로 활용 가능합니다.

2-1. 비교 연산자

비교 연산자(<, >, , =)는 두 개의 값을 비교하는 연산자입니다. 아두이노에서 결과는 [참] 또는 [거짓]으로 나타납니다.

왼쪽 값과 오른쪽 값이 동일하다.
왼쪽 값이 오른쪽 값보다 크다.
왼쪽 값이 오른쪽 값보다 작다.


2-2. 논리 연산자

논리 연산자(그리고, 또는, 부정)은 참과 거짓을 연산하기 위해 사용됩니다.

[ ] 그리고 [ ]
[참] 그리고 [참]
[참] 그리고 [거짓] 거짓
[거짓] 그리고 [참] 거짓
[거짓] 그리고 [거짓] 거짓


[ ] 또는 [ ]
[참] 또는 [참]
[참] 또는 [거짓]
[거짓] 또는 [참]
[거짓] 또는 [거짓] 거짓


[ ] 의 부정
[참]의 부정 거짓
[거짓]의 부정


2-3. 조건 블록

조건 블록 "만약 [ ] 이(가) 참이면" 블록은 조건이 "참"인 경우 작성한 코드가 수행되고 "거짓"인 경우 수행되지 않습니다.

"아니면" 안에 작성한 코드는 만약 [ ] 블록의 조건이 "참"인 경우에는 실행되지 않고 "거짓"인 경우 수행됩니다.



2-4. 버튼 회로도

2-5. 확장 기능 사용하기

먼저 버튼을 이용하기 위해 아래의 "확장"을 눌러봅시다.

검색창에 "input"라고 작성하여 [INPUT_PULLUP]라고 하는 확장 기능을 추가해봅시다.

버튼이 눌리게 되면 digital port 함수에서 [거짓]의 값이, 버튼이 눌리지 않을 때는 "참"의 값이 반환됩니다.

2-6. 코드 작성

버튼을 이용해 버튼이 눌리면 아두이노의 LED가 켜지고 버튼이 눌리지 않으면 아두이노의 LED가 꺼지는 코드를 작성해봅시다.

TIP) 아두이노에는 [L]라고 하는 알파벳이 적힌 LED가 있습니다. 이 LED는 디지털 13번핀을 제어하면 켜고 끌 수 있습니다. 그래서 LED를 연결하지 않고도 버튼이 작동하는지 확인할 수 있답니다!

단, [L]의 위치는 아두이노마다 조금씩 다를 수 있습니다.

2-7. [실습] 버튼을 눌러 LED 켜기1

버튼이 눌리는 동안 LED가 켜지고 버튼에서 손을 떼면 LED가 꺼질 수 있도록 코드를 작성해봅시다.

2-8. [실습] 버튼을 눌러 LED 켜기2

다양한 변수, 조건문을 사용하여 버튼을 한 번 누르면 LED가 켜지고 다시 누르면 LED가 꺼질 수 있도록 코드를 작성해봅시다.

2-9. [실습] 버튼을 눌러 LED 여러개 제어하기

다양한 변수, 조건문을 사용하여 버튼을 누를 때마다 현재 LED는 꺼지고 다음 LED가 켜질 수 있도록 코드를 작성해봅시다.

3. 아두이노 아날로그 핀

아두이노 디지털 아날로그 입력 pin은 보드의 A0 ~ A5 를 사용할 수 있습니다.

아날로그 입력(analogRead)를 사용해 센서의 값을 읽어와 출력해 봅시다.

3-1. 조도 센서 회로도

주변 환경의 빛 강도를 측정하기 위해 설계된 센서 모듈입니다. 이 센서 모듈은 자동 조명 시스템, 식물을 위한 성장등, 빛 조건의 변화를 감지해야 하는 모든 애플리케이션에서 빛 수준을 모니터링하거나 제어해야 할 때 자주 사용됩니다.

3-2. [실습] cds를 이용해 어두워지면 LED 켜기

cds 센서를 이용해 빛의 세기를 읽어와 코딩해 봅시다.

센서를 손가락으로 가리면 값이 커집니다.

스마트폰 플래쉬를 켜고 cds 센서에 비추면 값이 작아집니다.

cds 센서값은 0~1023 사잇값으로 표현됩니다.

실생활의 가로등을 생각해 보세요!

어두워지면 자동으로 LED가 켜질 수 있도록 코드를 작성하세요.

4. LCD

아두이노 LCD 모듈은 문자나 숫자를 디스플레이하기 위해 사용하는 모듈입니다.

뒷 면에 가변저항이 있어 글자 밝기 조절이 가능합니다. 글자가 잘 안보이면 조절해보세요!

4-1. LCD 회로도

I2C LCD 모듈 핀 아두이노 우노 핀
VCC 5V
GND GND
SDA A4
SCL A5

4-2. 확장 라이브러리 추가

먼저 아두이노 에서 LCD을 사용하기 위해 확장 라이브러리를 설치합니다.

[확장]에서 "LCD"을 검색합니다. 아래 빨간 네모로 표시한 확장 라이브러리를 추가합니다.

4-3. 코드



LCD에 "Hello!", "CODERSIT"를 출력해 봅시다.

  • LCD의 커서 좌표

4-4. [실습] LCD에 숫자 출력하기

영상을 보고 LCD에 숫자를 출력해 봅시다.

변수를 만들고 1초에 1씩 증가하면서 LCD에 출력해 보세요.

★ [Clear LCD at 0x27] 블록을 사용하면 lcd에 나타냈던 문자를 모두 지울 수 있습니다.

4-5. [실습] LCD에 물결 출력하기

영상을 보고 문자를 출력하여 물결 모양으로 출력해 봅시다.

★ [Clear LCD at 0x27] 블록을 사용하면 lcd에 나타냈던 문자를 모두 지울 수 있습니다.

4-6. [실습] 조도 센서의 값 LCD에 나타내기

위에서 배운 조도 센서와 LCD를 함께 사용해 봅시다.

조도 센서의 값을 읽어와 LCD에 나타내 봅시다.

5. 실습 코드 참고하기

2-7. [실습] 버튼을 눌러 LED 켜기1

2-8. [실습] 버튼을 눌러 LED 켜기2

2-9. [실습] 버튼을 눌러 LED 여러개 제어하기

3-2. [실습] cds를 이용해 어두워지면 LED 켜기

4-4. [실습] LCD에 숫자 출력하기

4-6. [실습] 조도 센서의 값 LCD에 나타내기