아날로그 핀은 어떻게 제어하나요? 아날로그 쓰기와 아날로그 읽기로 컴포넌트를 제어하려면 어떻게 해야 하나요?

아날로그 핀을 쓰거나 읽으면 구성 요소를 제어하고 센서의 측정값을 읽을 수 있습니다.

이 강좌에서 살펴볼 내용은 다음과 같습니다:

  • 컴포넌트 제어하기(analogWrite)
  • 센서의 전압 읽기(analogRead)
  • 얻은 값 또는 원하는 값 변환하기(맵)

다음은 analogWrite와 analogRead로 제어하는 아날로그 핀입니다:

아날로그를 사용하면 PWM을 사용하여 핀을 제어할 수 있습니다. 디지털 핀 [3,5,6,9,10,11]을 제어할 수도 있습니다. 이 핀에는 파형이 있으며 pwm 및 digitalWrite를 사용하여 제어할 수 있습니다.

디지털 핀과 달리 아날로그 핀은 입력 또는 출력 여부를 나타내는 핀모드가 필요하지 않습니다.

아날로그와 디지털의 차이점은 무엇인가요?

디지털 신호는 HIGH 또는 LOW의 두 가지 값을 취할 수 있는 전압입니다. HIGH는 5V, LOW는 0V에 해당합니다. 이 신호는 푸시 버튼의 상태를 감지하거나 LED를 켜는 데 매우 유용합니다.

그러나 절반의 전력으로 LED를 켜려면 아날로그 신호가 필요합니다.

이 신호는 0V에서 5V 사이의 무한한 값을 취할 수 있습니다. 이 신호는 디지털 신호에서처럼 0V와 5V 대신 0.45V와 같이 훨씬 더 정밀한 값을 측정하고 전송하는 데 유용합니다.

아날로그-디지털 변환기를 사용하여 신호를 변환할 수 있습니다.

analogWrite ()

아날로그 쓰기는 LED와 서보모터와 같은 부품을 제어하는 데 사용할 수 있습니다. 서보 모터의 위치나 LED의 전원을 공급하는 등 부품을 정밀하게 제어할 수 있는 아날로그Write는 PWM을 탑재하고 있습니다.

analogWrite(pin, value);

PWM에 대한 강좌에서 설명했듯이 가능한 값은 0에서 255까지입니다. 0V는 0, 5V는 255입니다. 따라서 전압의 일부를 얻기 위해 이 두 값 사이에서 숫자를 선택할 수 있습니다. 변환 섹션에서 원하는 값을 선택하는 방법을 살펴보겠습니다.

다음은 A3 핀의 아날로그 쓰기 함수의 예입니다:

analogWrite(A3, 122);

analogRead ()

센서에서 측정값을 검색하려면 analogRead() 함수가 필요합니다! 다음은 :

analogRead(pin)

핀: A0에서 A5까지의 핀

이 함수는 0에서 1023 사이의 값인 아날로그 핀의 값을 반환합니다. 이를 변환하는 방법을 살펴보겠습니다.

가치 전환

맵은 이전 값의 범위와 변환된 값이 속할 범위를 지정하여 값을 변환하는 수학적 함수입니다.

map(VALUE_TO_CONVERT, OLD_LOW_VALUE, OLD_HIGH_VALUE, NEW_LOW_VALUE, NEW_HIGH_VALUE)
  • analogWrite () : 값을 % 또는 0에서 255 사이의 도수로 변환합니다.

앞서 말했듯이 아날로그 쓰기 함수는 0에서 255 사이의 값을 매개변수로 사용합니다. 하지만 서보 모터는 0°에서 180° 사이의 값으로 제어할 수 있고 LED는 0%에서 100% 사이의 값으로 제어할 수 있습니다.

따라서 지도 함수를 사용하여 이 값들을 아날로그 쓰기 함수에 대응하도록 변환해 보겠습니다.

예를 들어 핀 7에 액추에이터의 90° 위치를 지정하려면 을 작성합니다:

int servomotor_value=90;
servomotor_value=map(servomotor_value,0,180,0,255);
analogWrite(7,servomotor_value);
  • analogRead () : 0에서 1023 사이의 값을 0에서 5V 사이의 전압으로 변환합니다.

0과 1023 사이의 값은 큰 의미가 없으므로 0V와 5V 사이에서 변환하는 방법을 살펴 보겠습니다. 이를 위해 지도 함수를 사용하여 얻은 값을 변환할 수 있습니다:

int value =analogRead(pin);
value=map(value,0,1023,0,5);