Arduino 구형파 발생기

Ammar Ali 2024년2월15일
Arduino 구형파 발생기

이 튜토리얼에서는 Arduino의 digitalWrite() 함수를 사용하여 구형파를 생성하는 방법에 대해 설명합니다.

Arduino 구형파 발생기

구형파는 최대값과 최소값으로 구성되며 이 값 사이의 전환은 순간적입니다. 최대값과 최소값 지속 시간은 구형파에서 동일합니다.

예를 들어, 구형파는 각 값에 대해 1초의 지속 시간으로 최소값 0과 최대값 1을 가질 수 있습니다. 구형파는 아래 다이어그램에 나와 있습니다.

Arduino 구형파

구형파에는 1초 지속 시간 동안 구형파가 가질 주기 수를 지정하는 특정 주파수도 있습니다. 60Hz의 주파수 값은 파동이 1초에 60사이클을 완료한다는 것을 의미합니다.

digitalWrite() 함수를 사용하여 Arduino에서 구형파를 생성할 수 있습니다.

통사론:

digitalWrite(pin_num, value)

위의 구문은 pin_num 변수로 지정된 PIN을 value 변수로 지정된 HIGH 또는 LOW로 설정합니다. Arduino에서 LOW 핀 상태는 0볼트를 의미하고 HIGH 핀 상태는 Arduino 보드에 따라 5볼트 또는 3.3볼트를 의미합니다.

구형파를 생성하려면 디지털 핀의 값을 LOW로 설정해야 하고 약간의 지연 후에 디지털 핀의 값을 HIGH로 설정해야 합니다. 디지털 핀의 값을 설정하기 전에 핀과 같은 INPUT 또는 OUTPUT에 대한 모드를 설정해야 합니다. 각 디지털 핀에 풀업 저항이 있기 때문에 그렇지 않으면 전압 값이 낮아집니다. t 디지털 핀의 모드를 설정합니다.

pinMode() 함수를 사용하여 핀의 모드를 설정할 수 있습니다. 디지털 핀의 모드를 설정하려면 pinMode() 함수 내에서 OUTPUT 또는 INPUT과 같은 핀 모드를 첫 번째 인수로 전달하고 핀 모드를 두 번째 인수로 전달해야 합니다.

또한 디지털 핀 값을 설정한 후 지연을 추가해야 하며 delay() 또는 delayMicroseconds() 함수를 사용하여 Arduino 코드에 지연을 추가할 수 있습니다. delay() 함수는 주어진 지연을 밀리초 단위로 설정하고 delayMicroseconds() 함수는 주어진 지연을 마이크로초 단위로 설정합니다.

Arduino에서 10Hz 주파수의 구형파를 생성해 보겠습니다.

암호:

int f_hz = 10;

double delay_time = 1000 / (f_hz * 2);

void setup() { pinMode(11, OUTPUT); }
void loop() {
  digitalWrite(11, LOW);
  delay(delay_time);

  digitalWrite(11, HIGH);
  delay(delay_time);
}

위 코드에서 1/f 공식을 사용하여 지연 시간을 계산했습니다. 여기서 f는 구형파 주파수입니다. 지연을 밀리초 단위로 설정하고 시간을 초에서 밀리초로 변환하기 위해 시간 기간에 1000을 곱하는 delay() 함수를 사용했기 때문에 기간에 1000을 곱했습니다.

출력 파형과 주파수를 확인하려면 오실로스코프를 사용하거나 주파수가 낮으면 깜박이는 핀 11이 있는 LED를 사용할 수 있습니다. 오실로스코프를 사용하려면 핀 11에 오실로스코프의 양극 단자를 연결하고 Arduino의 접지에 음극 단자를 연결해야 합니다.

또한 단일 주기에 두 개의 펄스가 있기 때문에 시간 주기를 2로 나누었으며 디지털 핀을 LOW로 설정한 후 지연 값을 총 시간 주기의 절반과 같게 설정하고 나머지 절반 시간 주기는 다음과 같이 설정합니다. 디지털 핀을 HIGH로 설정한 후 지연을 설정하는 데 사용됩니다. 위의 코드에서 delay() 함수를 두 번 사용한 것을 볼 수 있습니다.

delay() 함수의 입력 값 데이터 유형은 unsigned long이며 1밀리초 미만의 지연을 추가하려면 delayMicroseconds() 함수를 사용해야 합니다. 마이크로초 단위로 지연을 추가할 수 있습니다. delayMicroseconds() 함수를 사용하여 고주파수 구형파를 생성할 수 있습니다.

delay()delayMicroseconds() 함수는 부동 소수점 숫자를 지원하지 않으므로 기간을 부동 소수점 숫자로 생성하지 않아야 하는 빈도 값을 설정해야 합니다. Arduino 코드에 지연을 추가하면 Arduino가 지연 시간이 끝날 때까지 다음 코드 줄로 이동하지 않기 때문에 Arduino의 다른 작업도 중지되지만 PWM 및 인터럽트는 계속 작동합니다.

구형파를 생성하고 동시에 다른 작업을 수행하려면 millis() 함수를 사용할 수 있습니다. 이 함수는 프로그램 실행이 시작된 후 시간을 밀리초 단위로 반환합니다. millis() 함수와 if 문을 사용하여 경과 시간을 확인할 수 있으며, 경과 시간이 해당 시간보다 크거나 같으면 디지털 핀의 상태를 변경합니다.

milliseconds() 함수에 대한 자세한 내용은 이 site을 참조하십시오.delay Microseconds() 함수에 대한 자세한 내용은 이 site를 참조하십시오. “digital write()” 기능에 대한 자세한 내용을 보려면 이 link를 클릭하고 “digital write()” 기능에 대한 자세한 내용을 보려면 이 link를 클릭합니다.

analogWrite() 함수를 사용하여 구형파를 생성할 수도 있지만 주파수를 정의할 수는 없습니다. 주파수는 이미 정의되어 있으며 대부분 499Hz이며 일부 핀의 경우 주파수가 1000Hz입니다.

PIN을 첫 번째 인수로 전달하고 웨이브의 듀티 사이클(127이어야 함)을 analogWrite() 함수 내부의 두 번째 인수로 전달하여 구형파를 생성해야 합니다. 구형파를 생성하는 데 필요한 듀티 사이클을 절반으로 설정하기 때문에 127을 두 번째 인수로 전달해야 합니다.

PWM 핀의 주파수 세부 정보와 analogWrite() 기능에 대한 자세한 정보를 보려면 이 링크를 클릭하십시오.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook