아날로그 데이터를 읽어오는 방법
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(A0);
Serial.println(val);
}
- 아날로그 신호를 읽어와서 저장할 변수를 정수형으로 선언
- A0번 핀으로부터 아날로그 신호 값을 읽어온다.
- 읽어온 신호 값을 출력
아날로그 데이터가 0~1023의 값으로 입력되는 이유
- 아두이노에는
10비트의 ADC
가 내장되어 있기 때문
🐢 가변저항
전압 분배
- 전압을 낮추어야 할 경우 저항을 직렬로 연결해서 전압을 분배
가변 저항
- 전자회로에서 저항 값을 임의로 바꿀 수 있는 저항기
- 저항을 바꿈으로써 조정 가능한 전압 분배기를 구성
- 가변 저항을 사용해 출력 전압을 0~5V 사이의 값으로 바꾸게 되고, 아두이노 ADC로 이 전압 값을 0~1023 사이의 값으로 변환
전압 값을 유추하는 방법
- 전압 값 = 센서 값 * (5.0/1023.0)
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(A0);
float vol = val * (5.0/1023.0);
// 가변 저항을 돌림에 따라 변하는 전압 값을 확인
Serial.println(vol);
}
값의 범위 바꾸기
toValue = map (fromValue, fromLow, fromHigh, toLow, toHigh)
변환한 값 = map(변경할 값, 현재 범위 값의 하한과 상한, 목표 범위 값의 하한과 상한)
🐢 아날로그 신호
아날로그 신호 출력방법
analogWrite(핀 번호, 출력 신호);
PWM
- Pulse Width Modulation
- 디지털 신호의 폭을 조절함으로써 아날로그 신호를 표현하는 것
- duty cycle을 조절함으로써 HIGH/LOW 양극 간의 양 적인 정보를 표현할 수 있게 해줌
🐢 인체 감지 센서
PIR 신호 출력방법
int pir = 2;
void setup() {
Serial.begin(9600);
pinMode(pir, INPUT);
}
void loop() {
int val = digitalRead(pir);
if (val == HIGH) {
Serial.println("Motion detected.");
}
delay(100);
}
millis() 메서드
unsigned long currTime = millis();
// 현재 시간(ms) = millis();
- 아두이노 보드가 현재 프로그램을 돌리기 시작한 후 경과된 시간을 밀리 초 단위로 반환
- delay없이 주기적인 작업을 수행시킬 수 있음