[IoT] 아두이노 이론

meek·2023년 4월 5일
1

/*elice*/

목록 보기
16/21

아날로그 데이터를 읽어오는 방법

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없이 주기적인 작업을 수행시킬 수 있음
profile
hello, world!

0개의 댓글