이글은 2017.12.07에 있었던 오프라인 강의 노트입니다.
아두이노는 사물인터넷에서 주요한 생태계를 이루고 있다.그 소프트웨어나 하드웨어는 오픈되어 있어서,주변에는 다양한 부속품이 개발되어 있고 이를 기반으로 수많은 사람들이 창의적인 작품을 만들고 있다.
아두이노의 유래
- 2005년 이탈리아의 IDII라는 예술대학에서 탄생
- 전자 비전공자인 학생들이 예술적 아이디어를 작은 프로세서를 이용해 빠르게 작품으로 만들수 있게 함
- 오픈 소스
- 오픈 하드웨어
아두이노가 성공한 이유?
주요 아두이노
- Arduino UNO
가장 대중적인 모델
다양한 쉴드를 적층할수 있다. - Arduino NANO
UNO와 기본 기능은 같다(오히려 핀은 2개 많다).
만능기판에 바로 꽂아서 사용하 수 있다. - Arduino Pro Mini
NANO와 기능은 같다.
PC와 USB연결을 위한 부속품(FTDI)이 필요하다.
전럭 소모가 상대적으로 적고 기판에 직접 올려서 작은 크기의 작품으로 만들기가 좋다. - Arduino LilyPad
웨어러블 작품을 만들 수 있다.
전자실을 이용해서 옷에 붙일 수도 있다. - Arduino Mega 2560
메모리가 크고 핀의 수가 많다.
3D 프린터나 로보트 등과 같은 비교적 복잡한 곳에 사용된다.
핀의 배열이 UNO 등과 다르므로 사용에 주의가 필요하다.
모델 | SRAM 프로그램 수행 | FLASH 프로그램 보관 | 디지털핀 | 아나로그핀 | 특징 |
---|---|---|---|---|---|
UNO | 2KB | 32KB | 14개 | 6개 | DC배럴 잭 프로그램 로드 모듈 포함 |
NANO | 2KB | 32KB | 14개 | 8개 | 프로그램 로드 모듈 포함 |
PRO MINI | 2KB | 32KB | 14개 | 8개 | 프로그램 로드 모듈 없음 |
MEGA2560 | 8K | 256K | 54개 | 16개 | DC배럴 잭 프로그램 로드 모듈 포함 |
통합개발 환경
IDE : Integrated Development Environment
프로그램 코딩,디버그,컴파일,배포 등을 쉽게 할 수 있도록 한 프로그래밍 환경
Arduino의 경우 USB로 아두이노와 연결만 하면
- 스케치 작성
- 바이너리 생성
- 보드에 바이너리 전송
- 시리얼 모니터 연결
- 보드에 전원 연결
등의 작업을 한꺼번에 할 수 있다.
아두이노 IDE 설치하기- Windows Installer>JUST DOWNLOAD
- arduino-1.8.5-windows.exe 실행
아두이노 핀
- 디지털핀
- 아나로그핀
- PWM(Pulse Width Modulation)
- 시리얼핀(RX,TX)
- I2C핀(Inter Integrated Circuit, 아이스퀘어씨)
아두이노핀 분류표
아두이노에 사용된 MCU핀맵
아두이노 나노 핀맵
아두이노 부트로더
칩에 미리 설치 해둔 아두이노용 프로그램 조각인데,전용 프로그래머 없이 USB로만 스케치 바이너리 전송이 가능하게 한다.
부트로더가 하는 일:
- USB가 연결되면 새로운 프로그램이 있는지 본다.
- 새로운 프로그램이 있으면 플래쉬에 쓰고 새 프로그램을 수행
- 새로운 프로그램이 없으면 옛 프로그램 수행
- 512kb 플래쉬 차지
첫 스케치
D4에 달려 있는 버튼을 누르면 D5핀에 5V 신호를 내보낸다.
5V 신호로 할 수 있는 일에 주목하자.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void setup() { // put your setup code here, to run once: pinMode(4,INPUT_PULLUP); pinMode(5,OUTPUT); } void loop() { // put your main code here, to run repeatedly: if (digitalRead(4) == LOW) digitalWrite(5,HIGH); else digitalWrite(5,LOW); } |
아두이노 핀 관련 함수
- pinMode(핀번호,형식);
INPUT
digitalRead하면(스위치연결 HIGH, 스위치 해제 LOW)
INPUT_PULLUP
digitalRead하면(스위치연결 LOW, 스위치 해제 HIGH)
OUTPUT - 값 = digitalRead(핀번호);
LOW 또는 HIGH값을 돌려준다. - 값 = analogRead(핀번호);
0~1023의 값을 돌려준다. 10BIT 해상도임 - digitalWrite(핀번호,HIGH/LOW);
HIGH: 5V 출력
LOW: 0V 출력 - analogWrite(핀번호,0~255);
0 : 0% duty (0V 출력 효과)
127: 50% duty (2.5 출력 효과)
255: 100% duty (5V 출력 효과)
세벌 님이 작성
좋은 글 고맙습니다. 그런데… 옥의 티가…
아두이노 핀 분류표에 오타? anlog Read 아니고 analog Read 겠죠?
산구루 님이 작성
감사합니다.
오타 수정했습니다^^