블록쌓기 프로그래밍

브로클리프롭 프로그래밍하기

4. 브로클리프롭 전자회로 실습

Contents

브로클리프롭 프로그래밍 실습 세부목차


1. 브로클리프롭 시작하기

2. 프로펠러 간단한 BlocklyProp 프로그래밍

3. 브로클리프롭 함수 및 멀티코어 마이크로프로세서

4. 브로클리프롭 전자회로 실습


본 페이지의 내용은 패럴렉스(Learn.Parallax.com)사의 공식 홈페이지에서 제공되는 자료를 참고하여 작성되었습니다.


아래 세부 내용들을 살펴볼 수 있습니다.

1) 보드에 내장된 LED 깜박이기

2) 전자회로 실습 준비

3) LED 전자회로 만들기

4) 푸시버튼 실습하기

5) 피에죠 부저음 소리내기

6) 가변저항 (포텐셔미터 : Potentiometer) 실습하기

7) 광센서 불빛 감지하기

8) 7-세그먼트 디스플레이 실습


그림입니다. 원본 그림의 이름: mem0000144c1228.png 원본 그림의 크기: 가로 286pixel, 세로 148pixel 사진 찍은 날짜: 2017년 05월 16일 오후 6:59


무엇에 관한 내용인가요?

프로펠러(Propeller) 마이크로 컨트롤러 개발 보드에서 간단한 회로를 작성하고 브로클리프롭(BlocklyProp) 그래픽 프로그램을 작성하여 상호 작용할 수 있습니다. 당장 당신은 LED를 깜박이고 푸시 버튼으로 LED를 제어하고 피에조 스피커에서 음표를 연주하는 등의 작업을 수행 수 있습니다. 전자회로는 Propeller Activity Board (오리지널 또는 WX) 또는 Propeller FLiP 모듈이 장착된 브레드 보드위에 구성되어 있습니다. 멀티 코어 마이크로 컨트롤러, 표준 브레드 보드 및 기본 전자 부품을 사용하여 실제 STEM 기술을 구축하게 될 것입니다.


필요한 하드웨어

* Propeller Activity Board (원본 또는 WX 버전) 또는 Propeller FLiP

* USB A to 미니 B 케이블 또는 USB A to 마이크로 B 케이블


시작하기 전에

- “브로클리프롭(BlocklyProp) 시작하기”를 완료하여 Blockly 온라인 프로그래밍 도구에 대한 계정을 만드십시오.

- “프로펠러 간단한 BlocklyProp 프로그래밍”으로 프로그래밍 방법을 익히십시오.

- “브로클리프롭 함수 및 멀티코어 마이크로프로세서”는 마이크로 컨트롤러를 더 잘 이해하고 프로그래밍하도록 도움을 줍니다.


소개한 학습이 모두 끝났다면

간단한 전자 부품을 결합한 프로젝트를 직접 만들 수 있습니다. 다이얼을 돌리거나 푸시 버튼을 사용하여 LED가 빠르게 깜박거리면 피에조 스피커에서 다른 삐 소리가납니다.


간단한 전자회로(Simple Circuits)를 배운 후에는 새로운 기술을 실습에 사용할 수 있습니다.


1) 보드에 내장된 LED 깜박이기


프로펠러 마이크로 컨트롤러는 P0 에서 P31 까지의 32 개의 입력 / 출력 핀 또는 I / O 핀을 가지고 있습니다. 프로펠러는 이러한 라벨을 사용하는 프로그램을 통해 I / O 핀에 연결된 다른 회로와 상호 작용할 수 있습니다. 프로펠러 I / O 핀은 다음 세 가지 작업을 수행할 수 있습니다.


* 아래 그림과 같이 3.3V 전원에 회로를 연결하십시오. 이것은 핀을 "output high"로 설정하는 것으로 알려져 있습니다.

* 아래 그림과 같이 회로를 0V, 즉 접지에 연결하십시오. 이것은 핀을 "output low"로 설정합니다.

* 회로를 모니터링하여 이미 0V 또는 3.3V에 연결되어 있는지 확인하십시오. 이는 핀을 "input"으로 설정하는 것입니다.


그림입니다. 원본 그림의 이름: mem0000144c0001.png 원본 그림의 크기: 가로 500pixel, 세로 194pixel 사진 찍은 날짜: 2017년 03월 01일 오후 10:11


우리는 프로펠러로 LED불빛을 켜고 끄도록 프로그래밍하여 I / O 핀의 "O"(출력) 기능을 실습합니다. LED와 저항이 포함된 전자회로는 이미 Propeller Activity Board (오리지널 또는 WX) 또는 Propeller FLiP 모듈에 내장되어 있습니다. 그래서 별도로 회로를 구성하지 않아도 실습할 수 있습니다.


전자회로

- 보드에 작은 LED 부품 또는 볼트구멍을 찾습니다. P26 레이블 바로 위에 있습니다.


그림입니다. 원본 그림의 이름: mem0000144c0002.jpg 원본 그림의 크기: 가로 612pixel, 세로 237pixel그림입니다. 원본 그림의 이름: mem0000144c0003.png 원본 그림의 크기: 가로 281pixel, 세로 251pixel 사진 찍은 날짜: 2017년 05월 04일 오후 10:05

참고 : P26 및 P27에 연결된 LED가 내장되어 있지 않은 다른 Propeller 보드를 사용하는 경우 회로도를 사용하여 등가 회로를 만드십시오.


 

코드 테스트

브로클리프롭(BlocklyProp)에서 단일 블록으로 LED를 켜거나 끌 수 있습니다. 핀 상태는 make PIN 블록에서 high 또는 low 로 설정합니다. 


그림입니다. 원본 그림의 이름: mem0000144c0004.png 원본 그림의 크기: 가로 230pixel, 세로 170pixel 사진 찍은 날짜: 2017년 02월 28일 오후 1:46


- 브로클리프롭(BlocklyProp) 계정에 로그인하여 보드를 컴퓨터에 연결하고 브로클리프롭(BlocklyProp) 클라이언트가 실행 중인지 확인하십시오.

- 당신의 보드를 위한 새로운 프로젝트를 시작하고 위에 보이는 프로젝트를 작업 공간에 빌드하십시오.

- 프로젝트를 저장하고 Run Once 버튼을 클릭하십시오.

- P26 표시등이 0.5 초 동안 켜진 다음 0.5 초 동안 꺼졌다가 다시 켜지는지 확인합니다.


어떻게 동작하는가?

첫 번째 make PIN 블록은 프로펠러 칩의 P26 I / O 핀을 출력 high로 설정하여 핀을 3.3V 전원 공급 장치에 연결합니다. 이 핀은 3.3 V의 전기 압력을 LED 회로에 적용하여 전류가 흐르도록하고 빛이 켜지도록 합니다. 그 후, pause (500) 는 프로그램이 500ms 동안 아무것도하지 못하게 하여, 0.5 초 동안 불이 켜지도록 합니다.


다음으로 low (26) 는 P26을 출력 로우(low)로 설정합니다. 이것은 핀을 0V 접지 전원 전압에 연결합니다. 이렇게 하면 전기 입력이 제거되므로 전류가 회로를 통해 흐르지 않고 LED 표시등이 꺼집니다. 또 다른 pause (500) 는 빛을 0.5 초 동안 끕니다.


알고 계셨습니까?

아래의 그림을 타이밍 다이어그램이라고 합니다. 수직축에 전압, 수평축에 시간이 표시된 그래프입니다. 타이밍 다이어그램은 종종 마이크로 컨트롤러와 회로 또는 다른 장치 간의 전기적 상호 작용을 설명하는데 사용됩니다. 이 타이밍 다이어그램은 위의 테스트 코드에서 I / O 핀 P26의 출력을 보여줍니다.


그림입니다. 원본 그림의 이름: mem0000144c0005.png 원본 그림의 크기: 가로 400pixel, 세로 185pixel 사진 찍은 날짜: 2017년 03월 01일 오후 5:29


시도해보세요!

일시 중지 블록의 값을 변경하여 표시등을 빠르게 또는 느리게 깜박이도록 할 수 있습니다. 두 일시 중지 블록에서 다른 값을 사용하여 오프 타임과 다른 시간을 만들 수도 있습니다.


- 아래의 예제 코드 및 타이밍 다이어그램에 표시된 것처럼 LED가 두 번 빨리 깜박이도록 프로그램을 수정하십시오. 일시 정지 값 변경으로 어떤 일이 있어났는가요?


 그림입니다. 원본 그림의 이름: mem0000144c0006.png 원본 그림의 크기: 가로 230pixel, 세로 170pixel 사진 찍은 날짜: 2017년 03월 01일 오후 6:43그림입니다. 원본 그림의 이름: mem0000144c0007.png 원본 그림의 크기: 가로 400pixel, 세로 217pixel 사진 찍은 날짜: 2017년 03월 01일 오후 5:33


- LED가 꺼져있는 시간이 3배가 되도록 프로그램을 수정하십시오. 일시 정지 값 변경으로 어떤 일이 있어났는가요?


 그림입니다. 원본 그림의 이름: mem0000144c0008.png 원본 그림의 크기: 가로 230pixel, 세로 170pixel 사진 찍은 날짜: 2017년 02월 28일 오후 1:45그림입니다. 원본 그림의 이름: mem0000144c0009.png 원본 그림의 크기: 가로 400pixel, 세로 185pixel 사진 찍은 날짜: 2017년 03월 01일 오후 5:35


당신 차례 !

아래의 타이밍 다이어그램에 따라 P27 표시등을 P26 표시등과 함께 제어해보십시오.


- 프로그램에 블록을 추가하여 P27 표시등이 P26 표시등과 거의 동시에 켜지거나 꺼 지도록 하십시오.


그림입니다. 원본 그림의 이름: mem0000144c000a.png 원본 그림의 크기: 가로 400pixel, 세로 350pixel 사진 찍은 날짜: 2017년 03월 01일 오후 5:38


- 프로그램을 수정하여 P26 표시등이 켜지면 P27 표시등이 꺼지고 그 반대의 경우도 마찬가지가 되도록 하십시오.

그림입니다. 원본 그림의 이름: mem0000144c000b.png 원본 그림의 크기: 가로 400pixel, 세로 350pixel 사진 찍은 날짜: 2017년 03월 01일 오후 5:42


2) 전자회로 실습 준비


프로펠러 마이크로 컨트롤러로 회로를 만들고 제어하는 것은 전기에 대해 배우고 자신만의 발명품을 실험해 볼 수 있는 좋은 방법입니다. 자신의 프로젝트를 설계하기 위해 실험적으로 전자회로를 제작하는 것을 프로토 타이핑이라고 하며 실제 엔지니어링 기술입니다. 프로펠러 프로토 타이핑을 시작하기 전에, 특히 이전에 브레드 보드 위에 전자회로를 만든 적이 없는 경우 3 개의 중요한 참고 페이지가 있습니다. 페이지의 링크를 클릭하면 새 탭이나 창에서 열립니다.


- 브래드보드(Breadboard) 페이지를 참고하세요!

- Schematic Symbols 페이지를 열고 Resistor, Light-Emitting Diode 및

  Microcontroller Output Pin에 대한 기호를 찾습니다.

- Resistor Color Codes 페이지를 엽니다(곧 사용할 예정입니다).

- 이제 사용중인 프로토 타이핑 영역에 이르기까지 아래로 스크롤하십시오.

- Propeller Activity Board 의 브레드 보드

- 브레드 보드위에 장착된 프로펠러 FLiP 모듈.


(1) Propeller Activity Board 의 브레드 보드


Propeller Activity Board 에는 브레드 보드가 장착되어 있습니다. 여기서는 일반적인 전자 부품으로 회로를 직접 만들 수 있습니다. 스피커, SD 카드, 무선 RF 모듈을 사용하기 위해 사전 제작된 많은 회로가 있으며 원하는 경우 제품 안내서에서 모든 내용을 읽으실 수 있지만 Circuit Practice 튜토리얼에서는 사용하지 않을 것입니다.


Propeller Activity Board 의 브레드 보드는 세면이 검은 색 소켓으로 둘러싸여 있습니다. 이  소켓을 통해 브레드 보드의 전자회로를 전원, 접지 및 프로펠러 I / O 핀에 편리하게 연결할 수 있습니다. 디지털 – 아날로그 변환기(D-A converter) 및 아날로그 - 디지털 변환기(A-D converter)에 연결하기 위한 소켓도 있습니다.


그림입니다. 원본 그림의 이름: mem0000144c000c.png 원본 그림의 크기: 가로 570pixel, 세로 526pixel 사진 찍은 날짜: 2013년 08월 23일 오후 8:17


3-접점 전원 스위치

Hello World 프로그램의 경우 이 스위치를 위치 1로 설정하고 내장 LED를 깜박여야 했습니다. 이제 회로를 만들 때 어떻게 사용하는지 살펴보겠습니다.


그림입니다. 원본 그림의 이름: mem0000144c000d.png 원본 그림의 크기: 가로 249pixel, 세로 161pixel 사진 찍은 날짜: 2013년 08월 23일 오후 3:31


* 위치 0 은 보드의 전원을 끕니다. 회로를 작성하거나 수정하기 전에 항상 스위치를 위치 0에 설정하십시오.   USB 포트가 연결되어 있으면 표시등이 계속 깜박일 수 있습니다.

* 위치 1 은 전원을 프로펠러 시스템과 흰색 브레드 보드의 세 가장자리를 따라 검은 소켓에 연결합니다. 흰색 브레드 보드 위에 있는 P12-P17 레이블의 3 핀 서보 포트에는 전원이 연결되지 않습니다. 어떤 목적으로도 서보 포트를 사용하지 않으면 위치 1이 좋습니다. 그렇지만 로봇을 제작하는 경우, 스위치를 위치 1에 놓은 다음 프로그램을 EEPROM에 로드하십시오. 그런 다음 스위치를 위치 2에 놓고 움직이십시오. 이렇게 하면 프로그램이 로드되는 즉시 로봇이 테이블에서 동작하지 않도록 해 줍니다.

* 위치 2 는 3 핀 서보 포트를 포함하여 보드의 모든 회로에 전원을 공급합니다. 서보 포트에 전원을 공급할 준비가 되면 스위치를 위치 2에 놓습니다.

 


(2) 브레드 보드에 장착된 프로펠러 FLiP 모듈


프로펠러 FLiP 모듈은 표준 브레드 보드에 바로 연결하여, 사용자가 제작한 다른 회로에 연결할 수 있습니다. 와이어 또는 구성 요소 리드를 동일한 5번째 소켓 행에 삽입하여 모든 핀에 연결할 수 있습니다. 연결하기 전에 보드의 각 핀 레이블을 확인하십시오. 각 핀의 역할에 대한 자세한 내용은 제품 안내서를 참조하십시오.)


FLiP 모듈의 브레드 보드는 여러 섹션으로 구성됩니다. 두 개의 열에 5 소켓 행이 있는 2 개의 더 넓은 프로토 타이핑 영역과 3 개의 좁은 전원 레일 (3 개의 긴 행은 선행 연결 용이고 다른 하나는 접지 용)입니다. 점퍼 선을 사용하여 전원 레일을 프로펠러 FLiP 모듈의 전원 및 접지 연결부에 연결합니다.


그림입니다. 원본 그림의 이름: mem0000144c000e.png 원본 그림의 크기: 가로 688pixel, 세로 507pixel 사진 찍은 날짜: 2017년 05월 15일 오후 6:18


회로 실습 자습서 예는 모두 컴퓨터의 USB 포트에서 공급되는 전원을 사용할 수 있습니다. 대부분의 회로는 프로펠러 I / O 핀 연결을 통해 3.3V에 액세스합니다. 일부 회로는 프로펠러 FLiP 모듈의 3.3V 핀을 통해 전원을 공급받아야 합니다. 모든 회로는 접지에 연결해야 합니다.


- 검은 색 점퍼 선을 사용하여 Propeller FLiP 모듈의 GND 핀 중 두 개를 모듈의 각면에 있는 파란색 접지 (-) 레일에 연결하십시오.

- 빨간색 점퍼 선을 사용하여 프로펠러 FLiP 모듈의 3.3V 핀을 빨간색 전원 (+) 레일에 연결하십시오.

- 검정색 점퍼 선 2 개를 더 사용하여 세 개의 파란색 접지 (-) 레일을 모두 연결하십시오.

- 빨간색 점퍼 선 두 개를 더 사용하여 세 개의 빨간색 전원 선 (+)을 모두 연결하십시오.


참고: 모든 회로가 위에 표시된 모든 연결을 필요로 하는 것은 아닙니다. 각 예제 회로에는 어떤 연결이 필요한지 보여주는 배선 다이어그램이 있습니다.


FLiP 모듈 전원 켜기

프로펠러 FLiP 모듈은 USB 포트를 통해 전원이 공급되므로 전원을 차단하려면 USB 케이블을 분리해야 합니다. 회로를 제작하거나 수정하기 전에 항상 전원을 차단하십시오. 프로그램을 다시 실행하도록 프로펠러 칩을 재설정하려면 재설정 버튼만 누르면 됩니다. 리셋하기 위해 전원을 차단할 필요가 없습니다.


3) LED 전자회로 만들기


보드에 내장된 LED를 깜박입니다. 이제 프로펠러(Propeller) 프로토 타이핑 영역에 자신만의 LED 회로를 구축할 차례입니다.


 

LED 부품 소개

다이오드는 한 방향으로만 전기가 흐를 수 있게 하는 전기 부품입니다. 발광 다이오드에 전류가 통과할 때, 발광 다이오드(LED)는 빛을 나타냅니다. LED가 켜지게 하려면 올바른 방법으로 LED를 연결해야 합니다. LED 방향을 반대로 연결하면 LED가 손상되지는 않지만 빛을 내지 않습니다.


LED는 양극과 음극의 두 단자를 가지고 있습니다. 양극 리드에는 더하기 기호 (+)가 표시되어 있으며 회로도 기호에서 삼각형의 넓은 부분입니다. 음극 리드에는 마이너스 기호 (-)가 표시되어 있으며 회로도 기호에서 삼각형의 점을 가로 지르는 선입니다.

그림입니다. 원본 그림의 이름: mem0000144c000f.png 원본 그림의 크기: 가로 182pixel, 세로 305pixel 사진 찍은 날짜: 2012년 02월 29일 오후 6:43



LED의 플라스틱 케이스 모양에 따라 양극과 음극을 구분할 수 있습니다. 자세히 보십시오. 거의 둥글지만, 음극 리드 가까이에 작은 평면 구역이 있습니다. 또한 LED의 리드 길이가 다릅니다. 일반적으로 짧은 리드는 음극에 연결됩니다.


참고: 항상 LED의 플라스틱 케이스를 확인하십시오. 때로는 리드가 동일한 길이로 잘리거나 제조업체가 이 규칙을 따르지 않는 경우가 있습니다.


 

LED 전자회로의 실습 예

브레드 보드에 3 개의 LED 회로를 만들어 봅시다. 3 개의 LED 외에도 3 개의 저항이 필요합니다. LED와 달리 저항에는 양극과 음극을 구분하지 않으므로 거꾸로 연결하는 것에 대해 걱정할 필요가 없습니다. 저항은 전류 흐름에 저항하는 성질이 있습니다. 저항 값은 옴으로 측정된 전류 흐름에 얼마나 강하게 저항하는지를 알려주는 값의 의미를 가지고 있습니다. 이 값은 종종 그리스 문자인 omega : Ω 로 표시됩니다. 저항에 그려진 색띠가 저항 값을 나타내며, 저항 색상표에서 찾아볼 수 있습니다.


그림입니다. 원본 그림의 이름: mem0000144c0010.png 원본 그림의 크기: 가로 335pixel, 세로 133pixel 사진 찍은 날짜: 2012년 02월 29일 오후 6:41


필요한 부품들

(3) LED; 빨강, 노랑, 녹색을 원한다면

(3) 220 옴 저항 (적 - 적 - 갈색)

(기타) 점퍼 와이어


- 프로토 타이핑 영역의 전원을 차단하십시오.

- 회로도에 따라 각각 P10, P9 및 P8에 연결된 3 개의 LED 회로를 구성하십시오.


  그림입니다. 원본 그림의 이름: mem0000144c0011.png 원본 그림의 크기: 가로 260pixel, 세로 356pixel 사진 찍은 날짜: 2017년 05월 10일 오후 3:22


- 아래의 보드 배선 다이어그램을 사용하여 작업을 다시 확인하십시오.


그림입니다. 원본 그림의 이름: mem0000144c0012.png 원본 그림의 크기: 가로 544pixel, 세로 344pixel 사진 찍은 날짜: 2017년 05월 15일 오후 9:15


 

LED 코드 테스트

다음은 이전 내용에 소개되었던 내장된 P26 LED를 깜박이는데 사용된 것과 동일한 테스트 코드로, I / O 핀 번호가 업데이트되었습니다.


- 브로클리프롭(BlocklyProp) 계정에 로그인하고 보드에 대한 새 프로젝트를 만듭니다.

- 프로토 타이핑 영역에 전원을 연결하십시오.

- 아래 그림과 같이 P8에 연결된 LED가 깜박입니다.

그림입니다. 원본 그림의 이름: mem0000144c0013.png 원본 그림의 크기: 가로 222pixel, 세로 170pixel 사진 찍은 날짜: 2017년 05월 15일 오후 10:47


- Run Once (한 번 실행) 버튼을 클릭하고 P8 LED가 실제로 깜박이는지 확인합니다. (그렇지 않은 경우, 배선을 점검하고 다시 시도하십시오. LED가 뒤쪽에 있거나 리드 또는 와이어 중 하나가 잘못 연결되었을 수 있습니다.)

- make PIN 블록을 9번에 설정한 다음, P9 LED 회로를 테스트하기 위해 코드를 다시 실행하십시오.

- make PIN 블록을 10번에 한 번 더 설정하고, 코드를 다시 실행하여 P10 LED 회로를 테스트합니다.


세 개의 LED 회로가 모두 작동하는지 확인했다면 훌륭합니다! 계속하십시오!



알고 계셨습니까?

make PIN 블록은 두 가지 버전으로 제공됩니다. 기존에 사용하던 I / O 핀 번호를 선택하기위한 드롭다운 목록이 있습니다. 프로그램 가능 버전은 숫자 값 블록, 사용 변수 블록 또는 숫자로 해석되는 표현식을 허용합니다.


그림입니다. 원본 그림의 이름: mem0000144c0015.png 원본 그림의 크기: 가로 185pixel, 세로 30pixel 사진 찍은 날짜: 2017년 01월 15일 오후 7:09

그림입니다. 원본 그림의 이름: mem0000144c0014.png 원본 그림의 크기: 가로 185pixel, 세로 41pixel 사진 찍은 날짜: 2017년 01월 15일 오후 7:09

 

시도해 보세요!

프로그래머블 make PIN 블록의 장점을 소개합니다. 반복 항목 루프와 페어링하여 순서대로 한 번에 하나씩 밝게 만들기 쉽습니다.


- 당신의 보드를 위한 새로운 프로펠러 C 프로젝트를 만드십시오.

- 아래 표시된 프로젝트를 빌드하고 저장하고 실행하십시오. LED는 한 번에 하나씩 켜야 합니다.


그림입니다. 원본 그림의 이름: mem0000144c0016.png 원본 그림의 크기: 가로 386pixel, 세로 243pixel 사진 찍은 날짜: 2017년 05월 15일 오후 11:15


- 다른 효과를 위해 일시 중지(pause) 시간을 변경해보십시오.

- 반복 항목(repeat item) 루프 다음에 일시 중지 블록을 추가하십시오.

- 반복 항목 루프의 사본을 만들어 일시 중지 블록 이후에 붙여 넣으십시오. 그런 다음 반복 항목 범위를 10에서 8로 합니다.

 

당신 차례 !

아마 당신은 LED가 순서에 관계없이 무작위로 불빛을 나타내고 싶습니다! 반복 항목 블록을 사용하는 대신 임의(random) 연산자를 사용하여 매번 루프를 통해 켜지는 LED를 무작위로 선택할 수 있습니다. 연산자(Operator)> 번호(Number) 아래에서 사용할 수 있습니다.


- 임의 블록(random block)으로 코드를 수정하여 임의의 LED에 불빛이 켜지도록 하십시오. 변수 이름과 일치하는지 확인하십시오!


그림입니다. 원본 그림의 이름: mem0000144c0017.png 원본 그림의 크기: 가로 373pixel, 세로 41pixel 사진 찍은 날짜: 2017년 05월 15일 오후 11:35


코드를 저장하고 Run Once 버튼을 클릭하십시오.


- 일단 작동하면, 두 개의 set variable무작위(random) 블록을 추가하여 각 일시 정지 블록을 제어하십시오. 일시 정지 시간에 원하는 번호 범위를 선택하십시오.

- 변경 사항을 테스트하고 효과가 마음에 들 때까지 일시 중지 시간을 조정하십시오.


이 기술을 사용하여 반짝이는 별, 무서운 눈 또는 반딧불이 프로젝트를 상상할 수 있습니까?


4) 푸시버튼 실습하기


매일 사용하는 많은 항목에는 푸시 버튼이 있습니다. 휴대 전화, 전자레인지, TV 리모컨 및 컴퓨터 키보드에는 모두 푸시 버튼이 있을 수 있습니다. 또 다른 것도 생각할 수 있습니까?


일반적인 푸시 버튼 회로를 사용하여 마이크로 컨트롤러로 모니터링하는 프로그램을 작성해 봅시다. 그런 다음 푸시 버튼의 상태를 사용하여 LED 회로를 제어합시다. LED는 마이크로 컨트롤러로 켜고 끌 수 있는 장치의 한 예일 뿐입니다. 대신에, 푸시 버튼을 사용하여 모터, 발열체 또는 기타 장치의 회로를 제어할 수 있습니다.


푸시 버튼이란?

푸시 버튼은 버튼을 누를 때 단자 리드 중 두 개를 전기적으로 연결하는 장치입니다. 버튼이 정상 열림 상태로 해제되면 전기 연결이 끊어지며 장치에 전류가 흐르지 않습니다. 다음은 회로도 기호입니다.


그림입니다. 원본 그림의 이름: mem0000144c0018.png 원본 그림의 크기: 가로 310pixel, 세로 170pixel 사진 찍은 날짜: 2017년 05월 16일 오후 3:35


... 여기에 브레드 보드에 친숙한 푸시 버튼과 유사한 그림이 있습니다.


그림입니다. 원본 그림의 이름: mem0000144c0019.png 원본 그림의 크기: 가로 419pixel, 세로 154pixel 사진 찍은 날짜: 2017년 05월 16일 오후 3:32


푸시 버튼 회로에 연결된 프로펠러 I / O 핀은 입력으로 설정되어야 합니다. 푸시 버튼을 누르면 회로는 푸시 버튼을 통해 3.3V를 I / O 핀에 적용하고 소량의 전류도 10kΩ 저항을 통해 접지로 전달합니다. 누름 버튼을 누르지 않으면 3.3V 전원 공급 장치와의 연결이 끊어지므로 회로가 GND (0V)를 I / O 핀에 적용합니다.


그림입니다. 원본 그림의 이름: mem0000144c001a.png 원본 그림의 크기: 가로 623pixel, 세로 283pixel 사진 찍은 날짜: 2017년 03월 22일 오후 8:30


푸시 버튼 및 LED 회로

이 회로는 보드에 내장된 P26 및 P27 LED와 함께 동작할 목적으로, 브레드 보드에 두 개의 푸시 버튼 회로를 구성합니다. 푸시 버튼 회로를 프로펠러 I / O 핀에 연결하는 데 220 ohm 또는 100 ohm 저항을 사용할 수 있습니다. 그렇지만 회로를 접지에 연결하는 경우 10k 옴 저항을 사용해야 합니다.


필요한 부품들

(2) 푸시 버튼 (# 400-00002)

(2) 100 옴 저항 (갈색 - 검정색 - 갈색) 또는 (2) 220 옴 저항 (적 - 적 - 갈색)

(2) 10 k 옴 저항 (갈색 - 검은 색 오렌지색)

 

- 회로도에 표시된 두 개의 푸시 버튼 회로를 제작하십시오. Activity Board 및 FLiP 모듈의 배선 다이어그램을 참고용으로 아래에 제공합니다.

 

그림입니다. 원본 그림의 이름: mem0000144c001b.png 원본 그림의 크기: 가로 442pixel, 세로 370pixel 사진 찍은 날짜: 2017년 05월 05일 오후 4:33

그림입니다. 원본 그림의 이름: mem0000144c001c.png 원본 그림의 크기: 가로 263pixel, 세로 364pixel 사진 찍은 날짜: 2017년 05월 05일 오후 4:32

그림입니다. 원본 그림의 이름: mem0000144c001d.png 원본 그림의 크기: 가로 400pixel, 세로 486pixel 사진 찍은 날짜: 2017년 05월 03일 오후 9:41


코드 테스트

코드테스트는 브로클리프롭(BlocklyProp) 터미널에서 P3에 연결된 버튼의 상태를 표시합니다. 터미널은 버튼을 누르면 1 을 표시하고 누르지 않으면 0 을 표시합니다.


- 브로클리프롭(BlocklyProp) 계정에 로그인하여 보드를 컴퓨터에 연결하고 브로클리프롭(BlocklyProp) Client가 실행 중인지 확인하십시오.

- 당신 보드에서 새 프로젝트를 시작하고 아래에 표시된 코드를 작성하십시오.

그림입니다. 원본 그림의 이름: mem0000144c001e.png 원본 그림의 크기: 가로 563pixel, 세로 180pixel 사진 찍은 날짜: 2017년 05월 16일 오후 2:34


- 프로젝트를 저장하고 Run Once 버튼을 클릭하십시오.

- 브로클리프롭(BlocklyProp) 터미널이 열리면, P3 푸시 버튼을 길게 누릅니다. 누르지 않으면 0이 표시되고 누르면 1이 표시됩니다.

그림입니다. 원본 그림의 이름: mem0000144c0020.png 원본 그림의 크기: 가로 392pixel, 세로 228pixel 사진 찍은 날짜: 2017년 05월 16일 오후 2:42


- 프로그램을 수정하여 P4 푸시 버튼을 테스트하고 브로클리프롭(BlocklyProp) 터미널에 동일한 결과를 표시하는지 확인합니다.


어떻게 동작하는가?

Terminal Clear Screen 블록 이후에, 프로젝트의 나머지 부분은 repeat forever 루프내에 있습니다. 첫째, 터미널 인쇄 텍스트 블록은 우리의 데이터에 유용한 레이블 " P3 button = "을 제공합니다. 다음은 터미널 인쇄 번호 블록입니다. 그 안에 check PIN 3 블록은 P3 I / O 핀을 입력으로 설정합니다. 버튼을 누르지 않은 상태에서는 프로펠러가 P3에서 0V를 감지하고, 블록은 0을 제공하고 터미널에 인쇄됩니다. P3에서 프로펠러가 3.3V를 감지하면, 블록은 1을 제공하고 1을 인쇄됩니다. 일시 정지 (ms) 200 블록은 반복하기 전에 제대로 화면에 표시할 수 있도록 루프 속도를 느리게 합니다.


알고 계셨습니까?


* 액티브 하이 : 당신이 사용한 푸시버튼 회로는 액티브-하이라고 불리는 방법입니다. 이것은 버튼이 눌려졌을(active) 때 3.3V 하이 신호를 프로펠러 I/O 핀에 보내고, 그렇지 않고 버튼을 누르지 않은 상태에서 0V 로우 신호를 보내는 방식입니다.

* 풀다운 : 회로도의 10 k 옴 저항을 풀다운 저항이라고 합니다. I / O 핀은 버튼을 누를 때 저항을 통해 3.3V를 감지합니다. 버튼에서 손을 떼면 I / O 핀이 안테나처럼 작동하며, 주변 전기장은 1 또는 0 어느쪽이 감지되는지 여부를 제어합니다.

* 액티브 로우, 풀업 : 푸시 버튼 회로는 액티브 로우일 수 있습니다. 회로도에서 푸시 버튼과 10k 옴 저항을 교체하기만 하면 됩니다. 그런 다음 풀다운 저항은 풀업 저항 이 되고 버튼을 누르면 I / O 핀이 0V를 감지합니다.


시도해 보세요!

이제 푸시 버튼으로 LED를 제어할 때입니다! 브로클리프롭 판단실행하기 실습에서 if ... do 블록을 기억하십시오. 이 작업에 매우 편리합니다.


- 보드에서 새 프로젝트를 시작하고 아래에 표시된 코드를 작성하십시오.


그림입니다. 원본 그림의 이름: mem0000144c0021.png 원본 그림의 크기: 가로 337pixel, 세로 220pixel 사진 찍은 날짜: 2017년 05월 16일 오후 2:46


- 프로젝트를 저장하고 Run once 버튼을 클릭하십시오.

- P3에 연결된 푸시 버튼을 길게 누르면 P26 LED가 깜박이고 손을 떼면 꺼집니다.


당신 차례 !

P4에 연결된 버튼을 눌렀을 때, P27에 연결된 LED가 깜박이는 프로그램을 수정하겠습니다.


- 이 프로젝트를 수정하여 P4 푸시 버튼으로 P27 LED 제어를 테스트하십시오.

- 프로젝트를 저장하고 코드를 확장하여 P3 버튼이 P26 LED를 제어하고 P4 버튼이 P27 LED를 동시에 제어하도록 합니다.


5) 피에죠 부저음 소리내기


많은 장치가 경고음을 울립니다. 전자레인지로 음식 준비 완료, 숫자 키를 누르면 알람 시스템 키패드가 응답하고, 화재 경보는 무언가가 불타고 있음을 경고합니다. 이러한 장치는 종종 저렴하고 청명한 톤을 생성하기 때문에 피에조 스피커를 사용합니다. 누군가의 주의를 끌기 위해 경고음을 내야하는 프로젝트를 만들 때 피에조 스피커를 사용해보십시오.


전자회로

기타 줄이 소리를 내기 위해 어떻게 진동해야 하는지 생각해 보십시오. 피에죠스피커 (piezospeaker : 압전 스피커의 약자)의 요소에도 동일하게 적용됩니다. 스피커의 압전 소자는 전압이 인가될 때 구부러집니다. 전압을 빠르게 켜고 끄면 빠르게 진동하고 소리가 납니다.


프로펠러를 프로그래밍하여 I / O 핀을 빠르게 켜고 끌 수 있습니다. 피에조 스피커의 양극 (+) 단자를 P4에 연결하고 표시되지 않은 음극 단자를 GND에 연결합시다.


필요한 부품들

(1) 압전 스피커 (# 900-00001)

(2) 점퍼 선


- 회로도에 표시된 회로를 만드십시오.

- 피에조 스피커를 두 개의 핀이 동일한 행의 소켓에 연결되지 않도록 보드에 연결하십시오. Activity Board 및 Propeller FLiP 모듈의 배선 다이어그램은 아래에 포함되어 있습니다.

- 점퍼선을 꽂을 때는 피에조 스피커 핀이 있는 동일한 행에 들어가야 합니다.

- 케이스의 플러스 (+) 기호에 가장 가까운 스피커 핀이 프로펠러 I / O 핀에 연결되어 있는지 확인하십시오.


그림입니다. 원본 그림의 이름: mem0000144c0022.jpg 원본 그림의 크기: 가로 410pixel, 세로 324pixel

그림입니다. 원본 그림의 이름: mem0000144c0023.png 원본 그림의 크기: 가로 400pixel, 세로 359pixel 사진 찍은 날짜: 2017년 05월 08일 오후 10:53


코드 테스트

Audio > Frequency out 블록은 piezospeaker 경고음을 만들 수 있습니다.


- 브로클리프롭(BlocklyProp) 계정에 로그인하고 새 프로젝트를 만듭니다.

- Audio 메뉴로부터 Frequency out 블록을 선택합니다.

- 아래와 같이 블록의 필드를 설정하십시오.


그림입니다. 원본 그림의 이름: mem0000144c0024.png 원본 그림의 크기: 가로 488pixel, 세로 41pixel 사진 찍은 날짜: 2017년 03월 01일 오후 11:09


- Run Once (한 번 실행)를 클릭하고 스피커가 1 초간의 경고음을 울렸는지 확인합니다.


어떻게 동작하는가?

주파수 출력(Frequency out) 블록은 세 개의 필드를 설정합니다. PIN 은 회로의 4번, 피에조 스피커에 연결된 프로펠러 I / O 핀을 지정합니다. 지속 시간(duration) 필드는 이 예제에서 경고음이 지속 되는 시간, 즉 1000ms (1 초)를 설정합니다. 주파수 (Hz) 필드는 경고음의 피치, 본 예에서는 3000 Hz로 설정합니다. 이 주파수를 생성하기 위해 프로펠러는 P4를 출력으로 설정하고 0V에서 3.3V 사이에서 신속하게 토글함으로써 스피커 내부의 압전 소자가 초당 3000 번 진동하도록 합니다. 결과는 높은 음입니다.


알고 계셨습니까?

Frequency 는 초 단위로 얼마나 많이 발생하는지의 횟수를 나타내는 척도이며 헤르츠 (Hz)로 측정됩니다.

kilo - k 는 미터 또는 SI 접두사의 예입니다. 이것은 1000을 의미하는 킬로의 약자로 만듭니다.

kHz - 피에조 스피커의 경우, 초당 3000 번 반복되는 on / off 신호가 수신되었으므로 3000Hz 또는 3kHz 입니다.

인간이 들을 수 있는 소리의 진동은 약 20Hz (매우 낮은 피치)에서 20kHz (매우 높은 피치)까지 다양합니다.

Familiar frequencies (익숙한 주파수) - 피아노 건반을 누르면 작은 해머가 단단히 잡아 당겨져 특정 주파수로 진동합니다. 다음은 피아노 키보드의 몇 가지 오른쪽 키의 주파수입니다.


그림입니다. 원본 그림의 이름: mem0000144c0025.jpg 원본 그림의 크기: 가로 603pixel, 세로 366pixel


시도해 보세요!

곡을 연주하려면 음표 당 한 블록씩 재생되는 주파수 출력 블록 스택을 사용할 수 있습니다. 이 방법은 효과적이지만 편집하기가 매우 어려운 매우 긴 프로그램을 만듭니다. 다음 예제는 주파수 값의 전체 목록을 배열에 저장한 다음 반복 항목 루프를 사용하여 순서대로 액세스하고 재생합니다.


- 아래에 표시된 프로젝트를 빌드하고 저장하십시오.

- 프로그램을 실행하십시오. C8에서 C7까지 내림차순으로 8 개의 음을 연주해야 합니다.


그림입니다. 원본 그림의 이름: mem0000144c0026.png 원본 그림의 크기: 가로 498pixel, 세로 195pixel 사진 찍은 날짜: 2017년 03월 23일 오후 1:28


어떻게 동작하는가?

첫째, 배열 초기화 블록은 우리가 8 개의 요소를 가진 Notes 라는 배열을 설정합니다. 다음 블록은 노트(Notes) 배열을 8 개의 값으로 채웁니다. 위의 키보드 차트에서 가져온 음표 C8 ~ C7의 주파수입니다. 각 값은 색인 번호로 나중에 배열에서 검색할 수 있습니다. 배열의 경우 인덱스 카운팅은 0부터 시작하여 왼쪽에서 오른쪽으로 진행됩니다. 따라서 이 8 개 요소 배열은 0부터 7까지의 인덱스 범위를 가지며 0 번째 요소는 4160이고 7 번째 요소는 2093입니다.


다음에 배열 값을 순서대로 반복하는 play 라고 이름 붙여진 변수와 함께 repeat item loop 가 옵니다. Play 값은 0에서 시작하고, 7까지 하나씩 증가시켜서 8번 반복합니다. 


루프 내부에서, 주파수 출력 블록은 PIN (4)를 사용하고 있고, 지속 시간(duration)은 500 ms를 사용합니다. 그러나 숫자 값 블록 대신 주파수 (Hz) 필드에는 배열 요소(array get element) 블록이 첨부되어 있습니다. 이 의미는 Notes 배열로부터 배열 요소를 사용하려는 것입니다.


루프를 처음 실행할 때, Play 값은 0입니다. Notes 배열의 0 번째 요소는 4160입니다 (카운팅이 0부터 시작하기 때문에). 따라서 피에조 스피커는 4186 Hz의 주파수를 방출합니다. 다음에 루프를 통과할 때마다 Play 요소를 하나씩 증가시켜서, 인덱스 위치 1의 주파수가 사용됩니다 : 3951 Hz. 이 방법으로 루프는 재생이 7이 될 때까지 배열의 각 주파수를 Play 하고 마지막 주파수는 2093 Hz입니다.


당신 차례 !

마지막 예제 프로그램으로, 각 노트는 동일한 시간 (500ms) 동안 Play 됩니다. 당신은 다른 시간(duration) 동안 음을 연주함으로써 더 재미있게 만들 수 있습니다. duration 값을 보관 유지하는 2 번째의 배열을 설정해서, 2 번째 배열의 요소 블록을 사용할 수 있습니다.   


- 프로젝트의 복사본을 새 이름으로 저장하십시오.

- time 으로 이름 붙여진 8개 요소의 두 번째 배열을 초기화합니다. 두 번째 배열은 Notes 배열에서 8개 요소와 대응됩니다.

- array fill 블록을 사용해서, time 배열에 8 개의 지연시간 값을 밀리초로 지정합니다. 하여 배열 채우기 블록의 제공 시간 (밀리 초) 배열 8 시간 값. 각 요소는 Notes 배열에서 해당 주파수를 재생할 시간을 결정합니다.

- Frequency out 블록에서, 값 500을 대신하여 지연시간 필드를 위한 array time element play 블록을 사용하십시오.

- 프로젝트를 저장하고 한 번 실행 버튼을 클릭하십시오. 어떻게 소리가 나는가요? 친숙한 곡을 연주하기 위해 시간 요소를 변경할 수 있습니까 ?

- 원하는 주파수와 기간을 변경해서, 더 많은 곡을 실험하십시오. 각 배열은 같은 수의 요소를 사용해야 합니다.


6) 가변저항 (포텐셔미터 : Potentiometer) 실습하기


손잡이를 잡거나 전자 장치에서 다이얼을 돌리면 그 아래에 전위차계가 있을 수 있습니다. 전위차계는 가변저항이며 아래에 표시된 종류는 손잡이가 돌 때 저항 값을 변경합니다. 아래 가변저항은 0 옴에서 10,000 옴까지의 저항 범위를 가집니다.

그림입니다. 원본 그림의 이름: mem0000144c0027.png 원본 그림의 크기: 가로 299pixel, 세로 165pixel 사진 찍은 날짜: 2017년 06월 16일 오후 6:27


커패시터는 아주 가까이 배치된 두 금속판으로 이루어집니다. 전압이 가해지면 전자는 하나의 플레이트를 떠나 작은 배터리처럼 또 다른 플레이트에 축적되어 전하를 저장합니다. 충전을 유지할 수 있는 용량은 패러드 (farad) 단위로 측정됩니다. 아래의 것은 0.1 마이크로 패럿의 매우 작은 크기입니다. 이것은 극성이 아닙니다. 회로에 연결될 수 있습니다. (하지만 일부 유형의 커패시터는 극성을 나타냅니다.)

그림입니다. 원본 그림의 이름: mem0000144c0028.jpg 원본 그림의 크기: 가로 342pixel, 세로 114pixel

RC 회로

위의 두가지 부품 구성 요소를 함께 사용해서 RC (저항 - 커패시터) 회로를 형성합니다. 포텐셔미터의 노브 위치로 회로에 제공하는 저항을 추정하여 파악할 수 있습니다. 이를 위해 커패시터 - 배터리를 충전한 다음, 저항을 통해 드레인을 방전시킵니다. 옴 단위의 저항 값이 높을수록 방전 시간이 길어집니다. 우리는 프로펠러 I / O 핀과 RC 충전 / 방전 블록으로 이 방전 시간을 모니터링할 수 있습니다.


필요한 부품들

(1) 10 k 옴 전위차계

(1) 저항기 220 옴 (적색 적갈색)

(1) 커패시터, 0.1 μF (황색, 104로 표시 될 수 있음)

(1) 커패시터, 0.01 μF (적색, 103 )

(기타) 점퍼 선


- 회로도에 표시된 회로를 만드십시오. 참고용으로 Activity Board 및 Propeller FLiP 모듈의 배선 다이어그램이 아래에 포함되어 있습니다.


그림입니다. 원본 그림의 이름: mem0000144c0029.png 원본 그림의 크기: 가로 400pixel, 세로 189pixel 사진 찍은 날짜: 2017년 05월 10일 오후 3:58

그림입니다. 원본 그림의 이름: mem0000144c002a.png 원본 그림의 크기: 가로 282pixel, 세로 349pixel 사진 찍은 날짜: 2017년 05월 08일 오후 11:53

그림입니다. 원본 그림의 이름: mem0000144c002b.png 원본 그림의 크기: 가로 464pixel, 세로 308pixel 사진 찍은 날짜: 2017년 05월 08일 오후 11:56


RC 방전 시간 프로젝트

아래의 예제 코드는 커패시터를 충전한 다음 RC 방전 시간을 마이크로 초 단위로 측정하고 터미널에 값을 표시합니다.


- 브로클리프롭(BlocklyProp) 계정에 로그인하여 새로운 Propeller C 프로젝트를 만드십시오.

- 아래에 표시된 프로젝트를 빌드하고 저장하십시오.


그림입니다. 원본 그림의 이름: mem0000144c002c.png 원본 그림의 크기: 가로 510pixel, 세로 232pixel 사진 찍은 날짜: 2017년 06월 21일 오후 10:33


- 한 번 실행 단추를 클릭하십시오.

- 전위차계 손잡이를 돌리고 터미널에서 값이 변경되는 것을 지켜보십시오.

- 가장 높은 값을 적어 두십시오.

그림입니다. 원본 그림의 이름: mem0000144c002d.png 원본 그림의 크기: 가로 142pixel, 세로 122pixel 사진 찍은 날짜: 2017년 06월 21일 오후 10:33


어떻게 동작합니까?

이 코드는 repeat forever 루프 내부에 있으므로, 회로를 확인하고 지속적으로 측정값을 업데이트할 수 있습니다. 다음 세 블록은 RC 방전 시간 측정을 위해 함께 작동합니다. 그것들은 이 순서대로 나타나야 하며 그 사이에는 다른 블록이 없어야 합니다.


1. 블록 make PIN 7 high 가 P7을 출력으로 만들고, RC 회로를 3.3V에 연결합니다.

2. pause (ms) 1 블록은 회로가 3.3V 에 연결되는 동안 캐패시터에 충전시간 1ms를 제공합니다. (만약 우리가 더 큰 캐패시터를 사용한다면 지연 시간을 증가시켜야 합니다.)

3. RC discharge PIN 7 블록은 P7을 입력으로 만들고, P7이 1을 감지하는데 걸리는 시간 (또는 3.3~1.65 V 의 높은 신호)부터, 0 을 감지하는데 걸리는 시간(또는 0~ 1.65 V의 낮은 신호) 까지 측정하기 시작합니다. 이 블록은 측정값을 마이크로 초 단위로 노브(knob) 변수에 저장합니다.


그 후 터미널 지우기 화면(terminal clear screen) 블록은 이전 데이터를 지우고 커서를 왼쪽 상단 위치로 되돌립니다. 그런 다음 터미널 인쇄 번호(terminal print number) 블록에 노브(knob)의 값이 표시됩니다. pause (MS) 200 블록은 우리에게 루프를 반복하기 전에 측정된 값을 볼 수 있는 충분한 시간을 줍니다.


그림입니다. 원본 그림의 이름: mem0000144c002e.png 원본 그림의 크기: 가로 650pixel, 세로 351pixel 사진 찍은 날짜: 2017년 06월 21일 오후 10:58


알고 계셨습니까?

RC Time - RC 회로 및 RC 시간 측정 기술은 가변 저항을 생성하거나 그렇지 않은 경우 회로의 전류 흐름에 영향을 미치는 다른 구성 요소와 함께 사용할 수 있습니다. 여기에는 포토 레지스터, 포토 트랜지스터, 서미스터 및 일부 유형의 압력 센서가 포함됩니다.


시도해 보세요!

포텐셔미터의 손잡이를 사용하여 회로의 저항을 변경하여 RC 방전 시간을 특정 범위로 변경했습니다. 회로의 커패시터 크기를 변경하면 RC 방전 시간 범위가 변경됩니다.


- 보드의 전원을 차단하고 0.1μF 커패시터를 0.01μF 커패시터로 교체하십시오.

- 전원을 다시 연결하고 프로그램을 다시 실행하십시오.

- 전위차계 손잡이를 돌려서 새 커패시터로 터미널에 표시된 가장 높은 값을 적어 두십시오. 결과가 어떻게 만들어 지는가요?


당신 차례 !

다른 장치를 제어하기 위해 포텐셔미터 손잡이를 사용하는 것은 재미있습니다. knob의 값을 표시하는 대신 LED, 스피커 또는 이와 유사한 장치의 동작을 설정하는 블록의 값으로 사용해보세요.


- 포텐셔미터 손잡이가 LED의 깜박임 속도를 제어하는 프로젝트를 작성하십시오.

- 전위차계 손잡이가 피에조 스피커에서 재생되는 톤의 지속 시간 및/또는 주파수를 제어하는 프로젝트를 작성하십시오.


7) 광센서 불빛 감지하기


황혼에 가로등이 켜지거나 카메라가 자동 플래시를 사용해야하는 시점을 알려고 할 때, 빛을 감지하는 포토트랜지스터(photo-transistor)가 작동하는 것일 수 있습니다. 빛의 레벨을 측정하기 위해 프로펠러 마이크로 컨트롤러가 있는 포토트랜지스터를 사용해 보겠습니다.


포토트랜지스터 소개

트랜지스터는 콜렉터 (C) 및 이미터 (E) 단자를 통해 전류가 흐르도록 하는 밸브와 같습니다. 베이스 (B) 터미널은 유량을 제어합니다. 트랜지스터의 유형에 따라 유량은 전압으로 또는 전류로 그리고 포토트랜지스터에서 빛에 의해 제어될 수 있습니다. 베이스가 더 얇을수록 더 많은 전류가 흐를 수 있도록 합니다.

그림입니다. 원본 그림의 이름: mem0000144c002f.png 원본 그림의 크기: 가로 269pixel, 세로 311pixel 사진 찍은 날짜: 2013년 04월 19일 오후 4:09


전자회로

우리는 전하 전송 또는 QT 회로에서 커패시터와 저항과 함께 포토트랜지스터를 사용할 것입니다. 이 회로는 매우 넓은 범위의 광 레벨을 판독할 수 있게 하며, A / D 변환을 필요로 하지 않습니다. QT 회로는 다양한 아날로그 센서를 위한 간단한 옵션입니다.


QT 회로는 전위차계(potentiometer)가 적용된 RC 시간 회로와 매우 유사하게 동작합니다. 회로의 커패시터는 매우 작은 배터리처럼 동작하며, 광 트랜지스터는 빛으로 제어되는 전류 밸브로 작용하여 전하가 소모되는 속도에 영향을 미칩니다. 빛이 많을수록 커패시터 방전이 빨라지고, 빛이 적어지면 방전은 느려집니다. 프로펠러의 임무는 RC 충전 / 방전 블록을 사용하여 방전 시간을 측정하고 보고하는 것입니다.


필요한 부품들

(1) 광 트랜지스터 (# 350-00029)

(103로 라벨링 # 200-01031) (1) 0.01 μF 커패시터

(104로 라벨링 # 200-01040) (1) 0.1 μF 커패시터

(1) 220 옴 저항 (적색 적색 -brown, # 150-02210)


- 아래 회로도에 표시된 QT 회로를 제작하십시오. propeller activity board 및 브레드 보드상의 프로펠러 FLiP 모듈용 배선 다이어그램을 참고하십시오.

- 포토트랜지스터 케이스의 평평한 지점 아래에 있는 다리가 GND에 연결된 점퍼 선과 함께 하단 브레드 보드 행에 연결되어 있는지 확인하십시오.

그림입니다. 원본 그림의 이름: mem0000144c0030.jpg 원본 그림의 크기: 가로 623pixel, 세로 326pixel

그림입니다. 원본 그림의 이름: mem0000144c0031.png 원본 그림의 크기: 가로 400pixel, 세로 362pixel 사진 찍은 날짜: 2017년 05월 11일 오후 9:55

 

포토트랜지스터(Phototransistor) 브로클리포롭(BlocklyProp) 코드 예제

빛 감지(Sense Light) 응용 프로그램은 QT 회로가 감지하는 광 레벨에 해당하는 숫자를 표시합니다.


- 최상의 결과를 얻으려면 직사광선을 피하고 창 덮개를 닫으십시오. 형광등과 실내조명은 괜찮지만 밝은 햇빛은 광 트랜지스터가 측정하기에는 너무 밝습니다.

- 브로클리프롭(BlocklyProp) 계정에서 보드 유형에 맞는 새 프로젝트를 만듭니다.

- 아래에 표시된 프로젝트를 빌드하고 저장하십시오.


그림입니다. 원본 그림의 이름: mem0000144c0032.png 원본 그림의 크기: 가로 518pixel, 세로 232pixel 사진 찍은 날짜: 2017년 06월 23일 오후 8:32


- 터미널로 실행 버튼을 클릭하십시오.

- 보드 위에 손을 넣고 포토트랜지스터 위로 부드럽고 깊은 그늘을 드리우고 터미널 창에서 번호 변경을 관찰하십시오.

- 가장 큰 숫자와 가장 작은 숫자를 적어 두십시오. 광 트랜지스터에 대해 더 어두워 질수록 측정값은 커집니다.


어떻게 동작하는가요?

브로클리프롭(BlocklyProp) 포텐셔미터 예제를 사용했다면 이 코드는 매우 비슷하게 보일 것입니다! I / O 핀 번호와 변수 이름만 변경되었습니다.


이 코드는 repeat forever 루프 내부에 있으므로, 회로를 확인하고 측정값을 지속적으로 업데이트할 수 있습니다. 다음 세 블록은 커패시터 방전 시간 측정을 위해 함께 작동합니다. 그들은 이 순서대로 나타나야 하며 그 사이에는 다른 블록이 없어야 합니다.


1. 블록 make PIN 5 high 가 P5를 출력으로 만들고, QT 회로를 3.3V에 연결합니다.

2. pause (ms) 1 블록은 회로가 3.3V 에 연결되는 동안 캐패시터에 충전시간 1ms를 제공합니다. (만약 우리가 더 큰 캐패시터를 사용한다면 지연 시간을 증가시켜야 합니다.)

3. RC discharge PIN 5 블록은 P5를 입력으로 만들고, P5가 1을 감지하는데 걸리는 시간 (또는 3.3~1.65 V 의 높은 신호)부터, 0 을 감지하는데 걸리는 시간(또는 0~ 1.65 V의 낮은 신호) 까지 측정하기 시작합니다. 이 블록은 측정값을 마이크로 초 단위로 shade 변수에 저장합니다.


그 후 터미널 지우기 화면(terminal clear screen) 블록은 이전 데이터를 지우고 커서를 왼쪽 상단 위치로 되돌립니다. 이어서 terminal print number 블록의 값이 shade 값을 표시합니다. pause (ms) 200 블록은 우리가 루프를 반복하기 전에 측정된 값을 볼 수 있는 충분한 시간을 줍니다.

그림입니다. 원본 그림의 이름: mem0000144c0033.png 원본 그림의 크기: 가로 626pixel, 세로 350pixel 사진 찍은 날짜: 2017년 06월 23일 오후 8:44


알고 계셨습니까?

광 소자인 CdS 셀은 광 제어용 가변 저항으로 RC 시간 측정에도 잘 작동합니다. CdS 셀은 한때 흔한 것이었지만, 카드늄이 환경 친화적이지 않기 때문에, 포토트랜지스터가 많은 간단한 응용들에서 그들을 대체했습니다.


포토다이오드 또한 일반적입니다. 포토트랜지스터보다 덜 민감하지만, 측정을 할 때 훨씬 더 빠르며 전반적으로 특수 장비 설계에 더 적합합니다. 일부 장치는 스펙트럼의 특정 부분에서만 빛을 감지합니다.


적외선 수신기(Infrared receiver)는 인간의 눈에는 보이지 않는 적외선 스펙트럼에서의 광파장만을 감지합니다. 이 센서는 TV 리모컨과 같은 장치에서 누른 키를 다르게 하는 적외선 스위칭 온/오프 시간을 감지합니다.


그림입니다. 원본 그림의 이름: mem0000144c0034.jpg 원본 그림의 크기: 가로 683pixel, 세로 207pixel



시도해 보세요!

10 배 큰 커패시터를 사용하면 감쇠 측정에 10 배의 시간이 걸립니다. 따라서 rc_time 값은 10 배가 됩니다.


- 커패시터는 100μF 커패시터이다.

- 회로의 전원을 차단한 다음 0.01μF 커패시터를 0.1μF 커패시터로 교체하십시오.

- 전원을 다시 연결하고 테스트 코드를 다시 실행하십시오. 같은 조명 조건에서 최대 10 배의 측정 값 차이를 보아야 합니다.

- 3 가지 측정 값을 기록하십시오 : 1) 포토트랜지스터가 빛에 노출되었을 때 2) 손으로 포토트랜지스터 위에 그림자를 만들 때 3) 오무린 손으로 포토트랜지스터를 완전히 덮을 때입니다.


당신 차례 !

- 조명 조건이 세 가지 수준으로 변경될 때 서로 다른 작업을 수행하는 의사 결정 코드를 프로젝트에 추가하십시오.

- 전위차계 위의 표시등이 가장 밝은 경우 P26 및 P27 LED가 꺼집니다.

- 포텐셔미터 위에 약간의 음영이 있으면 P26 LED 만 켜집니다.

- 포텐셔미터가 가장 어두우면 P26 및 P27 LED가 모두 켜집니다.


8) 7-세그먼트 디스플레이 실습


7-세그먼트 LED는 프로펠러 마이크로 컨트롤러를 사용하여 숫자를 표시하는 가장 좋은 방법입니다. 시계, 주방 용품 및 디지털 저울과 같은 많은 제품에서 이러한 기능을 찾을 수 있습니다. 이 모듈은 실제로 특수 패턴으로 배열된 7 개의 LED를 사용하여 0에서 9까지의 숫자와 소수점의 여덟 번째 LED를 표시할 수 있습니다. 이 자습서에서는 모듈을 제어하는 방법을 정확하게 보여주고 계산에 사용합니다.


전자회로

모듈의 각 개별 LED는 모듈과 프로펠러 칩의 I / O 핀 사이에 저항을 필요로 합니다. 각 I / O 핀이 하이 (3.3V 출력)로 설정되면 연결된 I / O 핀이 켜집니다. 100Ω ~ 1kΩ 사이의 모든 저항 값이 작동합니다. 저항이 낮을수록 LED 세그먼트가 더 밝아집니다. 동일한 값의 저항을 사용하여 모든 세그먼트가 고르게 켜지도록 하는 것이 가장 좋습니다.


필요한 부품들

(8) 100 Ω (갈색 - 검정색 - 갈색) 또는 220 Ω (적 - 적 - 갈색) 

(1) 7- 세그먼트 녹색 LED (부품 번호 350-00027)

(5) 점퍼 와이어


- 회로도에 표시된 회로를 만드십시오. 참고로 Activity Board 및 Propeller FLiP 모듈의 배선 다이어그램이 아래에 포함되어 있습니다.

그림입니다. 원본 그림의 이름: mem0000144c0035.png 원본 그림의 크기: 가로 500pixel, 세로 356pixel 사진 찍은 날짜: 2017년 03월 23일 오후 3:02

그림입니다. 원본 그림의 이름: mem0000144c0036.png 원본 그림의 크기: 가로 264pixel, 세로 340pixel 사진 찍은 날짜: 2017년 03월 28일 오후 1:01

그림입니다. 원본 그림의 이름: mem0000144c0037.png 원본 그림의 크기: 가로 375pixel, 세로 337pixel 사진 찍은 날짜: 2017년 05월 08일 오후 10:47


참고: 각 LED 세그먼트의 음극 모듈이 하나의 접지로 연결되면, 이를 공통 음극 7 세그먼트(common cathode 7-segment) LED 디스플레이라고 합니다. 다른 모듈은 공통 양극일 수 있으며, 이 경우 각 LED는 공통 양극이 공급 전압에 연결됩니다.


코드 테스트

테스트 코드는 LED의 모든 세그먼트를 동시에 켜서 회로가 올바르게 구성되었는지 확인합니다. 이것은 단지 2 개의 binary set pins 블록으로 구성됩니다. 첫 번째는 이진 값 11111111을 사용하여 모든 I / O 핀 방향을 출력으로 설정합니다. 두 번째는 동일한 이진 값으로 출력을 설정하여 각 LED를 3.3V에 연결합니다.


- 브로클리프롭(Blocklyprop) 계정에 로그인하고 새로운 Propeller C 프로젝트를 만드십시오.

- 아래에 표시된 프로젝트를 빌드하고 저장하십시오.


그림입니다. 원본 그림의 이름: mem0000144c0038.png 원본 그림의 크기: 가로 683pixel, 세로 57pixel 사진 찍은 날짜: 2017년 03월 24일 오후 0:18


- Run once 단추를 클릭하십시오.


8 개의 LED가 모두 켜져야 합니다 - 7 개의 바 세그먼트와 소수점을 더한 것. 그들이 모두 켜지지 않는다면 돌아가서 회로를 점검하십시오.


회로가 동작하면, 설정한 이진 상태 블록에 다른 비트 패턴을 첨부해 볼 수 있습니다. 아래 그래픽은 어떤 디스플레이 LED 세그먼트가 어떤 프로펠러 I / O 핀에 연결되어 있는지 보여줍니다. 첫 번째 가장 왼쪽 비트는 P13 LED를 왼쪽에서 오른쪽으로 순서대로 설정합니다. 가장 오른쪽 비트는 P6 LED를 설정합니다.


그림입니다. 원본 그림의 이름: mem0000144c0039.png 원본 그림의 크기: 가로 336pixel, 세로 289pixel 사진 찍은 날짜: 2017년 03월 24일 오후 1:57


- 아래 목록에서 바이너리 패턴이 있는 각 숫자를 표시해보십시오.

0 : 11100111

1 : 10000100

2 : 11010011

3 : 11010110

4 : 10110100

5 : 01110110

6 : 01110111

7 : 11000100

8 : 11110111

9 : 11110110

그림입니다. 원본 그림의 이름: mem0000144c003a.png 원본 그림의 크기: 가로 517pixel, 세로 174pixel 사진 찍은 날짜: 2013년 06월 27일 오후 9:07


알고 계셨습니까?

CC vs CA : 회로도에서 모듈에 대한 접지 연결이 하나 있음을 확인하십시오. 이것은 각 LED 세그먼트의 음극 모듈이 하나의 접지로 연결되기 때문에 CC 또는 공통 음극 7 세그먼트 LED 디스플레이로 알려져 있습니다. CA 또는 공통 양극 디스플레이에서 각 LED 세그먼트의 양극은 동일한 전원 공급 핀에 연결됩니다. 각 LED 세그먼트의 캐소드는 I / O 핀에 연결되고 I / O 핀을 로우 (접지)로 설정하면 세그먼트가 켜집니다. 이 튜토리얼에서 CA 7 세그먼트 디스플레이를 사용하려는 경우 바이너리 패턴의 모든 비트를 반대로 바꾸고 1을 0으로, 0을 1로 변경해야 합니다 (제조업체가 지시한대로 회로를 작성하는 것 외에도.)


숫자 및 문자 : 7 세그먼트 LED를 사용하여 문자를 표시할 수도 있습니다. 영어 알파벳의 모든 문자는 단일 장치를 사용하여 대문자 및 소문자로 표현할 수 있지만 일부 문자는 쉽게 인식할 수 있는 방식으로 표시하기가 다소 어렵습니다. 더 자세히 알고 싶습니까?

http://en.wikipedia.org/wiki/Seven-segment_display_character_representations 에서 7 세그먼트 표시 문자 표현에 관한 Wikipedia 기사를 살펴보십시오.


시도해 보세요!

7 세그먼트 디스플레이에 숫자를 표시하는 편리한 방법은 각 바이너리 패턴을 배열에 저장한 다음 나중에 코드에서 배열 요소를 참조하는 것입니다. 여기서 반복 항목 루프를 사용하여 0에서 9까지의 숫자를 카운트 다운합니다.


힌트 : 번호가 매겨진 각 요소는 위의 목록에서 복사한 해당 숫자 (0 ~ 9)의 이진 패턴을 저장합니다.


- 아래 표시된 것과 일치하도록 프로젝트를 수정한 다음 저장하십시오.

- 프로그램을 실행하고 카운트다운 카운트를 관찰하십시오.


그림입니다. 원본 그림의 이름: mem0000144c003b.png 원본 그림의 크기: 가로 731pixel, 세로 496pixel 사진 찍은 날짜: 2017년 03월 28일 오후 5:07


어떻게 동작하는가?

테스트 코드에서와 마찬가지로 첫 번째 블록은 바이너리 값 11111111 이 첨부된 이진 세트 핀 블록을 사용하여 I / O 핀 방향 P13-P6 을 출력하도록 설정합니다.


다음으로, 배열 초기화 블록은 10 개의 요소를 저장할 수 있는 digits 라는 배열을 생성합니다 (0에서 9까지 각 숫자에 하나씩). set array element 블록의 목록은 한 번에 한 요소씩 숫자 배열을 채웁니다. 첫 번째 블록은 배열 요소 0을 7 세그먼트 LED에 0을 표시하기 위한 비트 패턴을 보유하는 첨부된 이진 값 블록과 함께 정의합니다. 마찬가지로 나머지 9 개의 set array element 블록이 나머지 자릿수를 정의합니다. 요소 1은 1을 표시하는 2 진 패턴을 저장하는 식입니다.


배열이 채워지면 코드는 반복을 추적하는 trip 라는 변수와 함께 repeat item 루프에 도달합니다. 블록은 9로 trip 을 시작하여 0까지 하나씩 카운트 다운하여 총 10 "trips"을 반복합니다. 루프 내부에는 이진 세트 핀(binary set pin) 블록이 있으며, array get element 블록의 시간이 첨부됩니다. 처음으로 루프를 통과하면 trip 은 9가되므로 이진 세트 핀 블록은 digits 배열의 9 번 요소에 저장된 값을 사용합니다. 그것은 바이너리 11110110 이고, 9를 표시하기 위한 패턴입니다.


1 초 후 루프가 다시 반복됩니다. 이 시간 트립(trip)은 8이므로 digits 배열의 요소 1에서 나온 이진 값은 이진 세트 핀 block : 11110111 과 함께 사용됩니다. trip 이 0 일 때 마지막 라운드를 통해 내림차순으로 숫자를 표시합니다.


당신 차례 !

때로는 나열된 순서와 다른 순서로 배열 항목을 사용할 수 있습니다. 한 가지 방법은 다른 배열을 사용하여 배열에 액세스하는 것입니다! 7- 세그먼트 LED 주식 코드 350-00027을 표시하도록 프로그램을 수정하십시오. 이 작업에는 몇 가지 단계가 필요합니다.


먼저 숫자 배열에 요소를 추가한 다음 스톡 코드에서 숫자 시퀀스를 유지할 두 번째 배열을 만들고 초기화해야 합니다.


- 프로젝트의 복사본을 새로운 이름으로 저장하십시오! 그리고 각 단계 후에 프로젝트 변경 사항을 저장하십시오.

- 위의 화살표 그래픽을 사용하여 비트 패턴을 알아내려면 중앙 막대만 대시 표시를 위해 숫자 배열에 요소 10을 추가하십시오.

- 추가 요소를 보유하기 위해 배열 초기화 숫자 블록을 업데이트하는 것을 잊지 마십시오 !

- 프로젝트의 맨 위에 9 개의 요소를 저장할 수 있는 sku 라는 두 번째 배열을 추가하십시오.

- 배열 채우기 블록을 사용하여 주식 코드의 숫자가 순서대로 sku에 로드되도록 합니다. 대시에는 10을 사용합니다.


그림입니다. 원본 그림의 이름: mem0000144c003c.png 원본 그림의 크기: 가로 282pixel, 세로 51pixel 사진 찍은 날짜: 2017년 03월 29일 오후 2:33


그런 다음 반복 여행 ... 루프를 추가해야합니다.


- 반복 횟수가 0에서 8까지 1 씩 증가하도록 repeat trip from...루프를 업데이트 하십시오.

- 반복 루프 내부의 첫 번째 작업은 fetch 라는 변수를 설정하고 배열 sku 요소 trip 을 반입하는 array get element 블록을 연결하는 것입니다 .

- 이진 세트 핀(binary set pin) 블록에서, array get element 블록을 업데이트해서 배열 digits 요소를 연결하십시오.

- pause 1,000 블록 이후에, 또 다른 binary set pins 블록을 추가해서 한번에 모든 세그먼트 LED가 꺼지도록 하십시오.

- 루프의 마지막 부분에서 100ms pause 를 추가하십시오. 이 옵션이 없으면 별도의 숫자로 표시된 0,0,0을 볼 수 없습니다!


그림입니다. 원본 그림의 이름: mem0000144c003d.png 원본 그림의 크기: 가로 742pixel, 세로 207pixel 사진 찍은 날짜: 2017년 03월 29일 오후 2:33

- 프로젝트를 실행하면 스톡 코드 자리가 순서대로 표시되어야 합니다.



이전 페이지로      다음 페이지로