고교생을 위한 경기 꿈의 대학 "블루투스 RC카 제작":아두이노 코딩 입문 #2

in #kr5 years ago (edited)

noname01.png

첫 주에 고교생 15명을 만났지만 시간이 넉넉지 못해 아이컨택 한번 제대로 하지 못해 아쉬움을 남겼다. 어떤 종류의 교육일지라도 인간 대 인간의 만남이라면 컨택이 가장 중요하다. 아두이노에 관한 설문 조사 결과 4명의 학생이 들어 본 적이 있다는 경험자와 나머지 초보자로 구성이 되었다.
(※이 아두이노 코딩 입문을 실습하면 고교생이 아니더라도 누구든지 아두이노를 마스터 할 수 있습니다. )

2주면 포기할지도 모를 마의 2주차 교육이 다음 주 예정되어 있다. 아두이노 C/C++이 아무리 배우기가 쉽다지만 8회에 걸쳐 RC카를 만들어 블루투스로 조종하려면 세계 최고의 아두이노 C/C++ 속성 교육 기술이 필요한 것 같다.

목표 달성을 위해서 남은 7주차에 걸쳐 마술적인 향기가 풍길지도 모를 속성 교육을 상상해 보자.

  1. 아두이노 IDE 편집기
    아두이노는 키보드와 디스플레이가 없으며 USB 케이블에 의항 양방향을 통신을 사용하여 PC에서 아두이노IDE 즉 편집기에서 코드를 작성 빌드하여 업로딩 한다. 아울러 아두이노 CPU에서 실행되어 출력되는 결과는 편집기 시리얼 모니터 창을 열어서 볼 수 있으며, 출력 결과가 그래프라면 시리얼 플로터를 사용한다.

noname02.png

  1. 아두이노 편집기
    아두이노의 USB 케이블을 컴퓨터와 연결한다.
    시작 바에서 아두이노 로고를 눌러 편집기를 연다.
    예능인을 위해 출시된 아두이노의 코드를 스케치라 한다.
    다음은 편집기 창에서 가장 빈번하게 사용하는 메뉴들만을 박스 해 보았다.
    예제에서는 코딩 초보자를 위한 코드 사례를 제공. 하지만 배선은 각자 준비해야 한다.

noname03.png

  1. 새파일 생성, 입력, 저장 및 빌드
    새파일을 클릭하면 “bare minimum” 파일을 볼 수 있다.
    아두이노 코드의 기본 형태를 취하고 있으나 실제로 하는 일은 없음.
    문법적으로 OK 이므로 빌드가 가능하다.

noname04.png

bare라는 파일명으로 “다른이름으로 저장” 기능을 사용 하드 D: Arduino 내부의 prog_ex 폴더에 저장하자. 아두이노 코드의 확장자는 “ino”이며 항상 폴더가 만들어진다.

문법체크 아이콘(noname05.png)을 클릭하여 bare 파일 C/C++ 문법을 체크하자.
※bare 파일은 문법 에러가 없다.

그 다음 툴 메뉴에서 보드명과 포트번호를 지정하자.

noname06.png

빌드 아이콘 (noname07.png)을 클릭하자. 빌드 과정의 컴파일이란 코드를 실행 가능한 머신코드로 바꾸는 과정이며 아두이노 플래시 메모리에 업로딩 시킨다.
아두이노 플래시 메모리에 업로딩된 실행코드는 아두이노 전원을 꺼도 핸드폰 전화번호처럼 기억이 된다. 편집기에 의한 업로딩 과정을 통해서만 코드를 지우고 교체할 수 있다.

progress bar(noname08.png)가 100%가 될 때까지 기다린다.

  1. 아두이노 코딩 사인 함수계산 및 시리얼 모니터 출력

noname09.png

noname10.png

  1. 코딩에 의한 주기적 LED ON/OFF

빵판에 LED 와 전류제한 저항을 직력연결한 후 점퍼선 배선을 아두이노 우노 보드와 연결하자. 아래는 준비물 이다.

noname11.png

다음은 아두이노와 배선도이다.

noname12.png

실습문제: 다음과 같이 스케치를 작성하여 LED_ON 으로 저장 후 문법체크, 보드명 확인, 포트번호 확인 후 빌드하여라. 잘 작동이 되면 대기 시간을 1초에서 2초로 바꾼 후 결과를 관찰 하여라. 편집에서 사용하는 아두이노 명령들은 중간에 한 문자를 대문자로 사용하는 관행이 있다.

noname13.png

  1. 아날로그 전압 측정

LED + 양극 지점에서의 전압을 아날로그 핀 A0 로 읽어 보자. 아두이노의 전압 체계가 5.0V 이므로 이를 1024등분 하여 정수형으로 읽어 들인다. 즉 0.0V는 0 5.0V 는 1023 이 된다.
실제 측정해 보면 1023 보다 다소 작은 값임을 알 수 있다. 아두이노에서 전압은 약 5.0V를 기준으로 10% 오차를 가질 수 있다. 아래와 같이 배선을 추가한다.

noname14.png

코드는 digitalWrite 바로 다음에 아날로그 값을 읽도록 하자.
5.0V 가 1023 이면 읽어 들인 정수 값을 다음 공식에 의해서 환산할 수가 있으며 소숫점 이하 2자리까지 실수형 로컬 변수 v 로 선언한다.
시리얼 모니터 출력 결과를 보면 4.75볼트와 0.0볼트가 교대로 출력되고 있음을 알 수 있다.

noname15.png

  1. Fade와 아날로그 전압 측정

파일의 예제를 열면 아두이노에서 제공하는 기본적인 예제들이 들어 있다. 그 중에서 Fade를 열어 보자.

noname16.png

Fade 는 집안의 실내 등 중에서 서서히 켜졌다가 꺼질 째 다시 서서히 어두워지는 등이 있는데 Fade 라 한다.
이 예제 코드를 디지털 9번 핀에 LED가 배선되어 있는 아두이노 보드에서 빌드 후 LED 밝기 변화를 살펴보자.
LED 발기 변화를 일으키는 명령어는 analogWrite( led, brightness) 임에 유의하자. 핀 번호 led = 9 이며 밝기 brightness가 0부터 5씩 255까지 증가했다가 거꾸로 감소하며 그 값에 비례해서 밝기가 변한다.
아래의 코드에서 알고리듬을 생각해 보자.

noname17.png

※Fade 예제 코드의 // 내용을 읽어 보자.
The analogWrite() function uses PWM, so if you want to change the pin you're
using, be sure to use another PWM capable pin. On most Arduino, the PWM pins
are identified with a "~" sign, like ~3, ~5, ~6, ~9, ~10 and ~11.
PWM 핀이 아닌 2번 핀에서 Fade 효과가 재현되는지 실험해 보자.

이 내용을 Pass 했으면 교보문고에서 판매 중인 아래의 책들을 효과적으로 쉽게 그것도 단기에 속성으로 섭렵하실 수 있습니다.
표지모음.png

마나마인로고.png

Coin Marketplace

STEEM 0.27
TRX 0.11
JST 0.030
BTC 70971.83
ETH 3830.80
USDT 1.00
SBD 3.41