아두이노?
- 아두이노는 오픈 소스를 기반으로 한 단일 보드 마이크로컨트롤러로 완성된 보드와 관련 개발 도구 및 환경을 말한다.
아두이노 IDE
- 자바와 C를 기반으로 개발되는 크로스 플랫폼 응용 소프트웨어
- 아두이노 동작을 위해 C++ 언어 기반을 사용
- 컴파일러는 avr-gcc를 사용하므로, avr-gcc가 제공하는 많은 C언어의 표준라이브러리 함수를 사용할 수 있다
가로등을 만들어 보자
1. 변수 초기화
const int LED = 9;
int min = 255;
int max = 0;
2. setup 작성
- 아두이노의 내장함수
- 소스코드를 보드에 업로드 시 최초 1회 실행된다
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
3. loop 작성
- 아두이노의 내장함수
- setup 후 지속, 반복해서 실행될 함수
void loop() {
int light = analogRead(A0);
Serial.println(light);
delay(200);
light = getProcessedLight(light, 100, 500);
light = map(light, 100, 500, 0, 255);
if (light < 200) {
analogWrite(LED, 255);
} else {
analogWrite(LED, 0);
}
}
- loop 함수 안에서 delay를 주면 모든 loop에서 delay를 주므로 지양해야 하나, 아날로그 센서 감지 시 노이즈를 줄이기 위해 사용
- analogRead는 0부터 1023 사이의 값(uno를 사용하여 10비트 값), analogWrite는 0부터 255 사이의 값



4. 필요한 함수 만들어서 사용하기
- 센서가 감지한 값에 이상치가 있다면 min과 max 사이 값으로 변형
int getProcessedLight(int val, int min, int max){
int result;
if (val > max) {
result = max;
} else if (val < min) {
result = min;
} else {
result = val;
}
return result;
}