arduino basic programming
TRANSCRIPT
ARDUINO
기초프로그래밍
contents
1. 아두이노 (ARDUINO)
2. 전자회로
3. 아두이노 ARDUINO 함수
4. 스위치로 DC 모터 제어
1. 아두이노 (ARDUINO)
Arduino( 아두이노 ) 는 오픈소스 기반의 피지컬 컴퓨터 플래폼
Arduino Uno
+
하드웨어 소프트웨어
Arduino IDE
Arduino Uno
마이크로 컨트롤러 ATmega328사용 전압 5V입력 전원 7 ~ 20V디지털 입력 / 출력 14 개아날로그 입력 6 개입력 / 출력 전류 40mA3.3V 출력 전류 50mASRAM 2KBEEPROM 1KB클럭 속도 16MHz
1. 아두이노 (ARDUINO) - 하드웨어
Arduino Uno
1. 아두이노 (ARDUINO) - 하드웨어
디지털 입 / 출력 핀
아날로그 입력 핀
USB 포트
전원 핀
아날로그 출력 핀 ~ 표시
Arduino IDE – 다운로드
1. 아두이노 (ARDUINO) - 소프트웨어
http://arduino.cc/en/Main/Software
컴파일 업로드
전역번수
최초 한번 실행
무한 반복
업로드 setup() loop()
2. 전자회로 – 브레드 보드 & LED
+, 5V
-, GND
+ -
브레드 보드
LED
3. Arduino 함수
Arduino
입력
출력
시리얼통신
디지털 입력
아날로그 입력
디지털 출력
아날로그 출력
• pinMode(pin, mode) – 핀 사용 전 핀 모드 설정
3. Arduino 함수
pin : 핀 번호mode : INPUT, OUTPUT, INPUT_PULLUP
• digitalWrite(pin, value) – 설정된 핀에 디지털 값 출력pin : 핀 번호value : HIGH, LOW
• delay(ms) – 지정된 시간동안 마이크로프로세서 동작 멈춤ms : 밀리세컨드
디지털 출력
3. Arduino 함수
• digitalRead(pin) – 설정된 핀에 디지털 값을 읽음pin : 핀 번호
디지털 입력
아날로그 입력
• analogRead(pin) – 설정된 핀에 0 ~ 1023 값을 읽음pin : 핀 번호
아날로그 출력
• analogWrite(pin, val) – 출력핀에 값을 출력pin : 핀 번호val : 출력값 0 ~ 255
3. Arduino 함수
• Serial.begin(speed)speed : 시리얼 통신속도 설정
시리얼통신
• Serial.available() – 시리얼 통신 수신버퍼에서 읽을 수 있는 바이트 수
• Serial.read() – 수신버퍼의 데이터를 읽어 옴
• Serial.print(val) – 데이터를 문자열로 전송
3. Arduino 함수
• Mil l is() 함수 – 프로그램이 시작된 시간부터 밀리 단위로 카운터 된 값을 반환
기타함수
• MsTimer2::set(unsigned long ms, void(*f)()) – 인터럽트 설정
• MsTimer2::start() – 인터럽트 시작
ms : 인터럽트 시간 , 밀리 초void(*f)() : 인터럽트 분기 함수명
• MsTimer2::stop() – 인터럽트 정지
※ MsTimer2 는 외부라이브러리 –
http://arduino.cc/en/Reference/Libraries 다운로드 후
C:\Program Files\Arduino\arduino-1.0.5-r2\libraries 에 폴더 복사
4. 스위치로 DC 모터 제어하기 - 회로
4. 스위치로 DC 모터 제어하기 - 소스
#define CW HIGH#define CCW LOW#define SPEED 100 // 0 ~ 255 사이의 값int swBuf;
void setup(){pinMode(9, OUTPUT);pinMode(8, OUTPUT);pinMode(7, OUTPUT);pinMode(2, INPUT_PULLUP);
}void loop(){
setMotor(SPEED, CW);}void setMotor(int motorSpeed, boolean motorDir){
if(digitalRead(2) == LOW && swBuf == 0){swBuf = 1;
}else if(digitalRead(2) == HIGH && swBuf == 1){swBuf = 0;analogWrite(9, motorSpeed);digitalWrite(8, motorDir);digitalWrite(7, !motorDir);
}}