한국기술교육대학교 아두이노 기반 펌웨어 개발 (기본과정) 2일차 강사: 김영준 목원대학교 겸임교수
목차 (2일차) 목차 아두이노 시뮬레이터 스피커 제어 명령어 실습 멜로디 창작 창작 작품 실습 아날로그 명령어
아두이노 코딩 교육
아두이노 기반 코딩 교육 언플러그드 코딩 교육 EPL 코딩 교육 피지컬 컴퓨팅 스크립트 언어 코딩 교육 고급 언어 코딩 교육 개요 언플러그드 코딩 교육 초등 EPL 코딩 교육 초등 중등 피지컬 컴퓨팅 스크립트 언어 코딩 교육 고급 언어 코딩 교육 중등 고등 대학 중등 / 고등
아두이노 기반 코딩 교육 언플러그드 코딩 교육 EPL 코딩 교육 피지컬 컴퓨팅 스크립트 언어 코딩 교육 고급 언어 코딩 교육 개요 언플러그드 코딩 교육 은물 / 교구 / 하노이탑 카드를 이용한 순서 표시 스크래치 엔트리 VPL (Microsoft) 앱 인벤터 SPL Block EPL 코딩 교육 아두이노 피지컬 컴퓨팅 스크립트 언어 코딩 교육 고급 언어 코딩 교육 SPL / 파이썬 / 루아 / PHP C / C++ / Java / C# / JavaScript
아두이노 기반 코딩 교육 언플러그드 코딩 교육 EPL 코딩 교육 스크립트 언어 코딩 교육 고급 언어 코딩 교육 개요 정보 올림피아드 SW동아리 / SW경진대회 과학전람회 / 발명경진대회 YSC / STEAM R&E EPL 코딩 교육 산출물대회 스크립트 언어 코딩 교육 고급 언어 코딩 교육 C / C++ / Java / C# / JavaScript
아두이노 기반 코딩 교육 고급 언어 코딩 교육 개요 고급언어의 학습을 도와주는 개발툴 출현 정보 올림피아드 SW동아리 / SW경진대회 과학전람회 / 발명경진대회 YSC / STEAM R&E 프로세싱 산출물대회 http://www.processing.org 아두이노 고급 언어 코딩 교육 http://www.arduino.cc C / C++ / Java / C# / JavaScript
아두이노 기반 코딩 교육 개요 일반 교육 기관의 코딩 단계 SPL 기반 코딩 단계 언플러그드 코딩 교육 EPL 코딩 교육 피지컬 컴퓨팅 SPL 기반 코딩 단계 EPL 코딩 교육 스크립트 코딩 교육 고급언어 (C언어) 코딩 교육 피지컬 컴퓨팅 / 3D프린팅 SW동아리 / SW경진대회 과학전람회 / 발명경진대회 YSC / STEAM R&E 정보 올림피아드 산출물대회
아두이노 기반 코딩 교육 개요 SPL 기반 코딩 단계 EPL 코딩 교육 스크립트 코딩 교육 고급언어 (C언어) 코딩 교육 블록기반 코딩 기초 C언어 대비용 타이핑 기반 코딩 기초 EPL 코딩 교육 스크립트 코딩 교육 고급언어 (C언어) 코딩 교육 피지컬 컴퓨팅 / 3D프린팅 SPL 기반 코딩 단계 C언어 실습 아두이노
아두이노 시뮬레이터 아두이노 하드웨어가 없어도 아두이노 명령어와 C언어를 실행시킬 수 있습니다.
아두이노 시뮬레이터 시뮬레이터 http://www.helloapps.co.kr/arduino 에서 시뮬레이터를 다운로드 합니다. 1 시뮬레이터 2
아두이노 시뮬레이터 시뮬레이터 바탕화면의 SPL 폴더에서 아두이노 시뮬레이터를 실행합니다.
아두이노 시뮬레이터 시뮬레이터 시나리오에서 아두이노 기초를 선택합니다.
아두이노 시뮬레이터 시뮬레이터 실행 버튼을 클릭하여 시뮬레이터를 확인해 봅니다.
아두이노 시뮬레이터 시뮬레이터 가상의 아두이노 보드를 확인합니다.
아두이노 시뮬레이터 디지털 명령어 디지털 핀 연결
LED 점멸 디지털 명령어 LED 점멸을 이용해서 모르스 부호 등을 만들어 볼 수 있습니다.
신호등 작동시키기 디지털 명령어 초록 -> 주황 -> 빨강의 순서로 점멸시켜 봅니다.
값 출력해 보기 디지털 명령어 PrintLine 명령을 이용해 1씩 증가하는 값을 출력해 봅니다.
버튼 값 출력해 보기 디지털 명령어 DigitalRead 명령을 이용해 버튼의 상태를 출력해 봅니다.
값 비교하기 디지털 명령어 If 조건 비교 명령을 이용해 값을 비교해 봅니다.
디지털 명령어 실습1 디지털 명령어 시뮬레이터에서 아래의 주제를 실습해 봅니다. 주제1) 디지털 버튼으로 LED 제어하기 주제3) 반복 눌림을 방지하기 위한 기능 구현하기 주제4) 버튼으로 숫자 세는 장치 만들기 주제5) 눌려진 숫자를 LED로 횟수 표시하기 주제6) 버튼을 2초간 누르고 있으면 기능 초기화 하기
시뮬레이터에서의 C언어 실습
void main() { } main() 함수 C언어 기초 C언어 계열 언어는 모두 main() 함수가 시작 함수입니다.
Main 함수 추가하기 C언어 기초 기존 블록 코딩 환경에서 setup과 loop 함수를 모두 삭제해 줍니다.
Main 함수 추가하기 C언어 기초 Main Function을 마우스로 더블클릭하여 추가해 줍니다.
Main 함수 추가하기 C언어 기초 PrintLine 명령어를 마우스로 드래그 하여 추가해 줍니다. PrintLine 입력창 안에 “Hello World” 를 입력해 봅니다.
Main 함수 추가하기 C언어 기초 저장 버튼을 클릭하면 스크립트로 변환된 결과를 볼 수 있습니다.
Main 함수 추가하기 C언어 기초 실행 버튼을 클릭하여 실행해 봅니다.
C언어를 직접 입력해 보기
C언어 입력하기 C언어 입력 새파일을 누른 후 SPL 스크립트를 선택합니다.
C언어 입력하기 C언어 입력 기존에 있는 내용을 모두 지워 줍니다.
C언어 입력하기 C언어 입력 Main Function 명령어를 더블 클릭하면 main 함수가 추가됩니다.
C언어 입력하기 C언어 입력 PrintLine 명령어를 드래그하거나 마우스로 더블클릭하여 추가한 다음, 이름 을 표시해 봅니다.
C언어 입력하기 C언어 입력 PrintLine 명령어 대신에 C언어에서 사용하는 println 함수를 사용해도 됩니다.
For 반복문
For 반복문 For 반복문 For 명령어를 마우스로 드래그 하거나 더블클릭 해 줍니다.
For 반복문 For 반복문 PrintLine 명령어를 추가한 후 괄호안의 값을 i로 수정해 줍니다.
For 반복문 For 반복문 새파일을 누른 후 SPL 스크립트를 선택합니다.
1부터 10까지의 합 구하기 For 반복문 1부터 10까지의 합을 구한 후 출력해 봅니다.
구구단 출력하기 For 반복문 For 반복문 2개를 이중으로 사용하여 구구단을 출력해 봅니다.
While 반복문
While 반복문 While 반복문 while 명령어의 괄호 안의 조건이 참(true)일 동안 반복 실행
While 반복문 While 반복문 while 반복문을 이용하여 1부터 100까지의 합 구하기
아두이노에서의 Main() 함수 구성
아두이노 명령어 아두이노 명령어 아두이노도 내부적으로 main() 함수가 실행됩니다.
스피커 명령어
스피커 명령어 실습 디지털 명령어 실습을 위한 부품 연결 디지털 핀 2번 LED 소자 연결 디지털 핀 4번 디지털 버튼 연결 디지털 핀 9번 스피커 연결 디지털 0번과 1번은 시리얼통신에서 사용하므로 절대로 다른 부품을 연결하면 안됩니다.
스피커 명령어 톤 (Tone) 1) 스피커에서 소리가 발행하도록 하기 위해서는 이라는 명령어를 사용합니다. 목소리 톤이 굵다. 목소리 톤이 가늘다 등 일생생활에서 톤이라는 단어를 들어 볼 수 있습니다.
스피커 명령어 Tone (핀번호, 진동수, 시간) 스피커 명령어 소리를 발생시키는 명령어 Tone(9, 1000, 1000) Delay(1000)
1) 아두이노에서 사용되는 Tone 명령어는 3가지 값을 필요로 합니다. 스피커 명령어 이해하기 1) 아두이노에서 사용되는 Tone 명령어는 3가지 값을 필요로 합니다. 스피커가 연결되어 있는 디지털 핀번호를 정의합니다. 얼마의 시간 동안 소리를 만들 지 지속시간을 정의합니다. 1000 밀리초는 1초입니다. 얼마의 진동수로 소리를 발생시킬 것인지 진동수를 Hz (헤로츠) 단위로 정의합니다.
아두이노에서 사용되는 Tone 명령어는 기다리기 명령어와 쌍으로 같이 있어야 소리가 납니다. 스피커 명령어 이해하기 아두이노에서 사용되는 Tone 명령어는 기다리기 명령어와 쌍으로 같이 있어야 소리가 납니다. 톤 명령어는 항상 뒤에 기다리기 (Delay) 명령어가 같이 와야 합니다. 기다리기 명령어가 없으면 소리가 나지 않습니다.
아두이노에서 사용되는 Tone 명령어는 기다리기 명령어와 쌍으로 같이 있어야 소리가 납니다. 스피커 명령어 이해하기 아두이노에서 사용되는 Tone 명령어는 기다리기 명령어와 쌍으로 같이 있어야 소리가 납니다. 기다리기 명령어의 시간과 톤 명령어의 지속 시간을 같게 설정해 줍니다.
1초간 1,000 헤르츠로 소리를 발생시키는 명령어는 다음과 같습니다. 스피커 명령어 이해하기 1초간 1,000 헤르츠로 소리를 발생시키는 명령어는 다음과 같습니다.
다음과 같이 2,000 헤르츠로 1초간 소리를 내는 명령어를 더 추가해 봅니다. 5. 소리의 진동수를 변경해 봅니다. 다음과 같이 2,000 헤르츠로 1초간 소리를 내는 명령어를 더 추가해 봅니다. 프로그램을 실행한 후, 결과를 비교해 봅니다.
다음과 같이 3,000 헤르츠로 1초간 소리를 내는 명령어를 더 추가해 봅니다. 5. 소리의 진동수를 변경해 봅니다. 다음과 같이 3,000 헤르츠로 1초간 소리를 내는 명령어를 더 추가해 봅니다. 프로그램을 실행한 후, 결과를 비교해 봅니다.
다음과 같이 기다리기 명령어의 시간을 더 작게 줄여 봅니다. 6. 소리의 간격을 짧게 해 봅니다. 다음과 같이 기다리기 명령어의 시간을 더 작게 줄여 봅니다. 짧은 간격으로 음이 연주됩니다.
진동수 값을 0으로 하면 소리가 나지 않습니다. 7. 일정한 시간 동안 소리가 나지 않게 하기 위의 예는 200 밀리초 (0,2초) 동안 소리가 나지 않게 하는 명령입니다.
멜로디 창작
스피커 명령어 스피커 명령어 주어진 음계표를 이용해 멜로디를 작곡해 봅니다.
9. 동요 연주하기 아래의 표를 참조하여, 동요를 연주해 봅니다.
For 명령어 사이렌 소리 만들기 실습에 앞서 프로그램을 반복 시키는 방법에 대해 배웁니다. 2) 프로그램을 반복시키는 방법은 여러 가지가 있지만, 가장 쉬운 방법은 일정한 횟수만 큼 프로그램을 반복시키는 것입니다. For 명령어 일정한 횟수 만큼 프로그램을 반복 (Loop) For Loop 명령어는 반복하는 횟수를 지정하여 해당 횟수만 큼 프로그램을 반복시킵니다. 이 때 For 명령어는 숫자를 증가시키는 변수를 사용하며, 이 변수를 다양한 용도로 사용할 수 있습니다.
위의 예에서는 i 라는 이름의 변수가 1 부터 시작해서 10이 될 때 까지 반복을 합니다. 14. For 반복문 배우기 For 반복 명령어를 추가해 줍니다. 위의 예에서는 i 라는 이름의 변수가 1 부터 시작해서 10이 될 때 까지 반복을 합니다.
반복될 때 마다 i의 값이 어떻게 변하는 지 관찰해 봅니다. 14. For 반복문 배우기 For 명령어의 변수 값 출력해 보기 변수 i 의 값을 1초 간격으로 출력해 봅니다. 반복될 때 마다 i의 값이 어떻게 변하는 지 관찰해 봅니다.
14. For 반복문 배우기 1부터 10까지의 숫자 합을 구하여 출력하시오
For 명령어와 톤(Tone) 명령어를 이용하여 사이렌 소리를 만들어 봅니다. 프로그램을 실행하여 결과를 확인해 봅니다.
For 명령어와 톤(Tone) 명령어를 이용하여 사이렌 소리를 만들어 봅니다. 반복 숫자를 더 크게 해 봅니다. 프로그램을 실행하여 결과를 확인해 봅니다.
For 명령어와 톤(Tone) 명령어를 이용하여 사이렌 소리를 만들어 봅니다. 증가되는 규칙을 변경해 봅니다. 프로그램을 실행하여 결과를 확인해 봅니다.
For 명령어와 톤(Tone) 명령어를 이용하여 사이렌 소리를 만들어 봅니다. 값이 작아지도록 변경해 봅니다. 프로그램을 실행하여 결과를 확인해 봅니다.
For 명령어와 톤(Tone) 명령어를 이용하여 사이렌 소리를 만들어 봅니다. 명령어를 더 추가해 봅니다. 예를 들어 일정 시간 진동수가 증가했다가 다시 감소하도록 해 봅니다. 프로그램을 실행하여 결과를 확인해 봅니다.
Tone 명령어 작품 실습 실습 구현 시나리오 가청 주파수 테스트 장치를 만들어 봅니다.
디지털 명령어 작품 실습
디지털 명령어 작품 실습 실습 구현 시나리오 실생활에 필요한 취침등을 만들어 봅니다. 버튼을 누를 때 마다 삑 소리를 냅니다. 버튼을 2초간 누르고 있으면 삐~소리를 냅니다. 삐~소리를 낸 후 버튼을 떼면 LED가 켜지고, 30초 후에 LED가 꺼지도록 합니다.
아날로그 명령어
아날로그 명령어 AnalogWrite (핀번호, 값) a = AnalogRead (핀번호) 아날로그 명령어 아날로그 핀에 값 쓰기 AnalogWrite (핀번호, 값) 아날로그 핀에서 값 읽기 a = AnalogRead (핀번호)
아날로그 센서는 낮은 번호 부터 센서를 연결합니다. 아날로그 명령어 실습 디지털 명령어 실습을 위한 부품 연결 디지털 핀 2번 LED 소자 연결 조도센서 (A0) 디지털 핀 4번 디지털 버튼 연결 디지털 핀 9번 스피커 연결 아날로그 센서는 낮은 번호 부터 센서를 연결합니다.
3) 메뉴에서 “새 파일”을 클릭하여 새로운 입력창을 열어줍니다. 15. 아날로그 조도 센서의 값을 읽어오기 3) 메뉴에서 “새 파일”을 클릭하여 새로운 입력창을 열어줍니다. 4) 편집기 명령어에서 아날로그 읽기 명령어를 추가해 줍니다.
15. 아날로그 조도 센서의 값을 읽어오기 5) 핀 번호를 6으로 변경해 줍니다.
한 줄씩 줄을 바꾸어서 출력해 주는 명령어 입니다. 15. 아날로그 조도 센서의 값을 읽어오기 6) 변수의 값을 화면에 출력하기 위해서 문자라인 출력 (PrintLine) 명령어를 이용합니다. 문자라인 출력은 출력하고자 하는 값을 한 줄씩 줄을 바꾸어서 출력해 주는 명령어 입니다. 반면, 문자출력 (Print) 명령어는 값을 옆으로 이어서 출력해 주는 명령어입니다.
7) 문자라인 출력 (PrintLine) 명령어를 다음 그림과 같이 추가해 줍니다. 15. 아날로그 조도 센서의 값을 읽어오기 7) 문자라인 출력 (PrintLine) 명령어를 다음 그림과 같이 추가해 줍니다.
8) 기다리기 명령어를 추가한 후, 숫자를 100으로 수정해 줍니다. 15. 아날로그 조도 센서의 값을 읽어오기 8) 기다리기 명령어를 추가한 후, 숫자를 100으로 수정해 줍니다.
9) 실행 버튼을 클릭하여 작성된 프로그램을 실행해 줍니다. 15. 아날로그 조도 센서의 값을 읽어오기 9) 실행 버튼을 클릭하여 작성된 프로그램을 실행해 줍니다.
10) 조도 센서를 손으로 가려서 어둡게 하여 밝기 변화를 비교해 봅니다. 15. 아날로그 조도 센서의 값을 읽어오기 10) 조도 센서를 손으로 가려서 어둡게 하여 밝기 변화를 비교해 봅니다.
11) 가장 밝을 때의 센서 값과 어두울 경우의 센서 값을 기록합니다. 15. 아날로그 조도 센서의 값을 읽어오기 11) 가장 밝을 때의 센서 값과 어두울 경우의 센서 값을 기록합니다. 밝을 때의 센서 값 (가장 큰 값) 어두울 때의 센서 값 (가장 작은 값) 12) 가장 큰 값과 작은 값의 중간 값을 계산합니다. 가장 큰 값과 작은 값의 중간 값: ________________
1) 조도 센서 값을 이용하여, 어두워 지면 저절로 LED가 켜지는 장치 만들기 16. 어두워지면 저절로 켜지는 장치 만들기 1) 조도 센서 값을 이용하여, 어두워 지면 저절로 LED가 켜지는 장치 만들기 만약 (if), 조도 센서의 중간 값 보다 작으면 LED를 켜준다 그렇지 않으면 LED를 꺼준다
2) 순서도를 작성해 봅니다. 16. 어두워지면 저절로 켜지는 장치 만들기 조도 센서의 값을 읽어 온다. 반복 센서 값이 ____보다 작은가? 아니오 예 13번 LED를 ______ 13번 LED를 ______ 100 밀리초를 기다린다.
3) 순서도를 작성해 봅니다. 16. 어두워지면 저절로 켜지는 장치 만들기 조도 센서의 값을 읽어 온다. 반복 센서 값이 600보다 작은가? 아니오 예 13번 LED를 켜줌 13번 LED를 꺼줌 100 밀리초를 기다린다.
16. 어두워지면 저절로 켜지는 장치 만들기 4) 조건 비교를 명령어로 표현하기
5) 아래의 순서도를 SPL 블록 다이어그램으로 작성해 봅니다. 16. 어두워지면 저절로 켜지는 장치 만들기 5) 아래의 순서도를 SPL 블록 다이어그램으로 작성해 봅니다. 조도 센서의 값을 읽어 온다. 반복 센서 값이 600보다 작은가? 아니오 예 13번 LED를 켜줌 13번 LED를 꺼줌 100 밀리초를 기다린다.
6) 아래 다이어그램과 본인의 다이어그램을 비교해 본 후, 실행해 봅니다. 16. 어두워지면 저절로 켜지는 장치 만들기 6) 아래 다이어그램과 본인의 다이어그램을 비교해 본 후, 실행해 봅니다. 7) 조도 센서를 어둡게 하였을 경우, LED가 저절로 켜지는 지 확인합니다.
8) 어두워지면 저절로 켜지는 장치를 응용할 수 있는 분야를 생각해 봅니다. 16. 어두워지면 저절로 켜지는 장치 만들기 8) 어두워지면 저절로 켜지는 장치를 응용할 수 있는 분야를 생각해 봅니다. - 거리의 가로등 - 책상의 독서등 - 아파트 현관등 - 자동차 헤드라이트
1) 프로그램에 설명을 추가하기 위해서는 설명(주석달기) 명령을 이용합니다. 17. 프로그램에 설명 추가하기 1) 프로그램에 설명을 추가하기 위해서는 설명(주석달기) 명령을 이용합니다.
프로그램을 보기 쉽게 하기 위해 줄 간격을 띄울 필요가 있을 경우에는 공백라인 추가 명령어를 이용합니다. 18. 프로그램에 공백 라인 추가하기 프로그램을 보기 쉽게 하기 위해 줄 간격을 띄울 필요가 있을 경우에는 공백라인 추가 명령어를 이용합니다.
프로그램이 복잡한 경우, 블록을 축소시킬 수 있습니다. 19. 프로그램 블록을 축소시키기 프로그램이 복잡한 경우, 블록을 축소시킬 수 있습니다.
명령어 맨 앞의 체크박스를 해제하면 해당 명령어가 실행되지 않습니다. 20. 특정 명령어 라인이 실행되지 않도록 하기 명령어 맨 앞의 체크박스를 해제하면 해당 명령어가 실행되지 않습니다.
명령어 맨 뒤의 X 박스를 클릭하면 해당 명령어가 삭제됩니다. 22. 블록의 삭제 명령어 맨 뒤의 X 박스를 클릭하면 해당 명령어가 삭제됩니다.
명령어에서 오른쪽 마우스를 클릭하면, 복사 및 붙여넣기 기능을 선택할 수 있습니다. 23. 블록 잘래내기, 복사, 붙여넣기 명령어에서 오른쪽 마우스를 클릭하면, 복사 및 붙여넣기 기능을 선택할 수 있습니다.
AnalogWrite
LED 밝기를 서서히 조절하기 아날로그 명령어 아두이노 보드에서 PWM이 표시된 핀에는 AnalogWrite 명령 사용 가능 0 ~ 255 사이의 값을 출력시킬 수 있음 3번, 5번, 6번, 9번, 10번, 11번 전역변수를 이용해 숫자를 증가시켜 봅니다. AnalogWrite 명령으로 LED밝기를 조절해 봅니다.
버튼으로 LED 밝기 조절하기 아날로그 명령어 버튼을 이용해 LED 밝기를 조절해 봅니다.
시뮬레이터에서의 아날로그 명령어 실습
아날로그 명령어 아날로그 명령어 디지털 핀 연결
아날로그 센서값 출력하기 아날로그 명령어 아날로그 0번에 연결된 조도센서값 읽기
실습 아날로그 명령어 조도 센서의 값을 이용해 LED 점멸 주기를 변경해 봅니다.
실습: 저절로 켜지는 장치 아날로그 명령어 어두워 지면 3개의 LED가 저절로 켜지도록 해 봅니다.
아날로그 거리 센서
- 적외선을 이용하여 대상물까지의 거리를 측정하여 값으로 변환 - 측정값은 0 ~ 1023 사이의 값으로 읽혀짐 2. 아날로그 PSD 거리 센서 연결하기 아날로그 PSD 거리센서 - 적외선을 이용하여 대상물까지의 거리를 측정하여 값으로 변환 - 측정값은 0 ~ 1023 사이의 값으로 읽혀짐 - 10cm ~ 80cm 사이의 거리를 측정합니다.
기다리기 명령어를 추가한 후, 숫자를 100으로 수정해 줍니다. 아날로그 거리 센서의 값을 읽어오기 기다리기 명령어를 추가한 후, 숫자를 100으로 수정해 줍니다.
센서 앞에 손바닥을 가까이 대거나 또는 멀리 움직여 가면서 거리 값을 확인해 봅니다. 4. 아날로그 거리 센서의 값을 읽어오기 센서 앞에 손바닥을 가까이 대거나 또는 멀리 움직여 가면서 거리 값을 확인해 봅니다.
1실행 주기를 10으로 수정하여 더 빨리 소리가 변화되도록 합니다. 아날로그 거리 센서 값을 소리로 변환 시키기 1실행 주기를 10으로 수정하여 더 빨리 소리가 변화되도록 합니다.
아날로그 거리 센서를 이용한 피아노 연주 장치 만들기
1) A4 용지에 다음과 같이 피아노 건반을 그려 봅니다. 11. 종이 피아노 건반 구현하기 1) A4 용지에 다음과 같이 피아노 건반을 그려 봅니다.
2) 필통을 이용하여 PSD 거리 센서를 아래 그림과 같이 종이 건반을 향하도록 고정시킵니다. 11. 종이 피아노 건반 구현하기 2) 필통을 이용하여 PSD 거리 센서를 아래 그림과 같이 종이 건반을 향하도록 고정시킵니다. 센서가 바닥에 붙지 않고 떨어져 있어야 거리값이 정상적으로 측정됩니다. (필통 위에 센서를 고정시켜 주세요)
3) 거리 센서 값을 출력시키는 프로그램을 작성합니다. 11. 종이 피아노 건반 구현하기 3) 거리 센서 값을 출력시키는 프로그램을 작성합니다.
4) 종이의 흰 건반 위로 손가락을 움직여 가면서, 측정되는 거리 값을 기록해 봅니다. 11. 종이 피아노 건반 구현하기 4) 종이의 흰 건반 위로 손가락을 움직여 가면서, 측정되는 거리 값을 기록해 봅니다. 센서와 손가락 사이의 거리에 대한 센서값을 측정해 봅니다.
4) 종이의 흰 건반 위로 손가락을 움직여 가면서, 측정되는 거리 값을 기록해 봅니다. 11. 종이 피아노 건반 구현하기 4) 종이의 흰 건반 위로 손가락을 움직여 가면서, 측정되는 거리 값을 기록해 봅니다. 음계 도 레 미 파 솔 라 시 센서값 (예시) 300 350 400 450 500 550 600 위의 예시 값은 참고용으로 입력한 값이며, 학생이 스스로 센서값을 측정하여 값을 구해야 합니다.
5) 아래의 표를 참조하여, 도, 레, 미, 파, 솔, 라, 시 의 주파수를 확인합니다. 11. 종이 피아노 건반 구현하기 5) 아래의 표를 참조하여, 도, 레, 미, 파, 솔, 라, 시 의 주파수를 확인합니다.
if ( A == true && B == true ) 11. 종이 피아노 건반 구현하기 6) If 조건 비교에서 두 개의 조건이 모두 참(True)인지 확인하려면 다음과 같이 명령을 입력합니다. 두 개의 조건이 모두 참인지 비교하는 경우 (AND 비교) if ( A == true && B == true ) 두 개의 조건중 어느 하나라도 참인지 비교하는 경우 (OR 비교) if ( A == true || B == true )
if ( a0 > 290 && a0 < 310 ) 7) 거리 센서값이 음계중 “도”에 해당하는 지 비교하는 방법 10. 종이 피아노 건반 구현하기 7) 거리 센서값이 음계중 “도”에 해당하는 지 비교하는 방법 피아노 건반 중 “도”에 해당하는 거리가 300 이라고 할 때 if ( a0 > 290 && a0 < 310 ) 즉, 측정된 센서 값이 대략 290 ~ 310 사이에 있는 경우는 음계 “도”에 해당한다고 볼 수 있습니다. 위의 조건이 참(true)이 되면 도에 해당하는 진동수로 소리를 내 주면 됩니다.
8) 거리 센서 값이 음계중 “도”에 해당하는 지 비교하는 방법 11. 종이 피아노 건반 구현하기 8) 거리 센서 값이 음계중 “도”에 해당하는 지 비교하는 방법 센서 거리값은 각자마다 측정된 값을 기준으로 변경해 주어야 합니다
9) 거리 센서 값이 음계중 “레”에 해당하는 지 비교하는 방법 11. 종이 피아노 건반 구현하기 9) 거리 센서 값이 음계중 “레”에 해당하는 지 비교하는 방법 센서 거리값은 각자마다 측정된 값을 기준으로 변경해 주어야 합니다
10) 거리 센서 값이 음계중 “미”에 해당하는 지 비교하는 방법 11. 종이 피아노 건반 구현하기 10) 거리 센서 값이 음계중 “미”에 해당하는 지 비교하는 방법
11) 나머지 음계에 대한 프로그램도 추가해 줍니다. 11. 종이 피아노 건반 구현하기 11) 나머지 음계에 대한 프로그램도 추가해 줍니다.
아날로그 거리 센서를 이용한 자동차 후방 감지기 만들기
자동차의 후방 범퍼에 장착되어 후진할 때 장애물과의 거리 정보를 소리 정보로 변환해서 보여주는 장치를 만들어 봅니다. 12. 자동차 후방 감지기 만들어 보기 자동차의 후방 범퍼에 장착되어 후진할 때 장애물과의 거리 정보를 소리 정보로 변환해서 보여주는 장치를 만들어 봅니다. 장애물 PSD 거리 센서 거리 정보를 이용하여 소리의 점멸 주기를 변화시켜 줍니다.
2) 거리 센서 값을 읽어오는 프로그램을 작성합니다. 12. 자동차 후방 감지기 만들어 보기 2) 거리 센서 값을 읽어오는 프로그램을 작성합니다.
매핑 함수를 이용하면, 값의 범위를 다른 형태로 변환시킬 수 있습니다. 12. 자동차 후방 감지기 만들어 보기 3) 매핑 함수의 기능 매핑하기 전 0, 1, 2, …, 1022, 1023 매핑한 후 1023, 1022, …, 2, 1, 0 매핑 함수를 이용하면, 값의 범위를 다른 형태로 변환시킬 수 있습니다.
위의 명령어는 a0에 읽혀진 값의 범위를 반대로 뒤집어서 변환시키라는 의미입니다. 12. 자동차 후방 감지기 만들어 보기 4) 매핑 함수의 기능 입력값 위의 명령어는 a0에 읽혀진 값의 범위를 반대로 뒤집어서 변환시키라는 의미입니다. 즉, 값 0은 1023으로 바뀌고, 1023 값은 0으로 바뀝니다. 그리고 1 값은 1022로 바뀝니다. 바뀐 값은 다시 a0 변수에 저장됩니다.
5) 거리 센서 값의 범위를 반대로 뒤집기 위해 맵 함수를 적용합니다. 12. 자동차 후방 감지기 만들어 보기 5) 거리 센서 값의 범위를 반대로 뒤집기 위해 맵 함수를 적용합니다.
12. 자동차 후방 감지기 만들어 보기 6) 변환된 센서값을 출력해 봅니다. 프로그램을 실행하여 결과를 확인해 봅니다.
7) 변환된 센서값을 소리의 점멸 주기로 이용합니다. 12. 자동차 후방 감지기 만들어 보기 7) 변환된 센서값을 소리의 점멸 주기로 이용합니다. 프로그램을 실행하여 결과를 확인해 봅니다.
자동차 후방감지의 성능을 개선시켜 모둠별로 발표해 봅니다. 13. 프로젝트 자동차 후방감지의 성능을 개선시켜 모둠별로 발표해 봅니다. 실제 자동차 후방 감지기 소리처럼 발생시켜 봅니다. - if 명령어를 이용하여, 센서가 작동되는 범위를 지정해 봅니다. - 센서값을 더 짧게 변환시켜 점멸음이 더 짧게 만들어 지도록 해봅니다.
아날로그 키패드 센서
센서값 확인 아날로그 키패드 센서의 센서 값을 확인해 봅니다.
실습: 5음계 연주 장치 만들기 키패드 센서를 활용해 5음계 연주 장치를 만들어 봅니다.
실습: 가청 주파수 테스터기 만들기 버튼으로 주파수를 올리거나 내리는 기능을 추가해 봅니다. 진동수가 100씩 올라갑니다. 내려갑니다.
실습: LED 밝기 조절장치 만들기 버튼으로 LED의 밝기를 조절하는 장치를 만들어 봅니다. 밝기가 10씩 밝기가 10씩 올라갑니다. 밝기가 10씩 내려갑니다.