Arduino 方波發生器

Ammar Ali 2023年10月12日
Arduino 方波發生器

本教程將討論使用 Arduino 中的 digitalWrite() 函式生成方波。

Arduino 方波發生器

方波由最大值和最小值組成,這些值之間的轉換是瞬時的。方波中的最大值和最小值持續時間相同。

例如,方波的最小值為 0,最大值為 1,每個值的持續時間為 1 秒。方波如下圖所示。

Arduino 方波

方波還具有特定的頻率,該頻率指定方波在一秒內的週期數。60 Hz 的頻率值意味著波在一秒鐘內完成 60 個週期。

我們可以使用 digitalWrite() 函式在 Arduino 中生成方波。

語法:

digitalWrite(pin_num, value)

上述語法將 pin_num 變數指定的給定 PIN 設定為 value 變數指定的 HIGHLOW。在 Arduino 中,LOW 引腳狀態表示 0 伏,而 HIGH 引腳狀態表示 5 伏或 3.3 伏,具體取決於 Arduino 板。

為了產生方波,我們必須將數字引腳的值設定為 LOW,經過一些延遲後,我們必須將數字引腳的值設定為 HIGH。在設定數字引腳的值之前,我們必須為類似 INPUTOUTPUT 的引腳設定模式,因為每個數字引腳都有一個上拉電阻,如果我們不這樣做會降低電壓值’ t 設定數字引腳的模式。

我們可以使用 pinMode() 函式來設定引腳的模式。我們必須將 PIN 作為第一個引數傳遞,並將諸如 OUTPUTINPUT 之類的 pin 模式作為 pinMode() 函式內的第二個引數傳遞,以設定數字引腳的模式。

我們還必須在設定數字引腳的值後新增延遲,我們可以使用 delay()delayMicroseconds() 函式在 Arduino 程式碼中新增延遲。delay() 函式將以毫秒為單位設定給定的延遲,而 delayMicroseconds() 函式將以微秒為單位設定給定的延遲。

讓我們在 Arduino 中生成一個頻率為 10 Hz 的方波。

程式碼:

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 語句來檢查經過的時間,如果經過的時間等於或大於時間段,我們將改變數字引腳的狀態。

檢視這個網站瞭解關於 millis() 函式的更多細節,以及這個網站瞭解 delayMicroseconds() 函式。點選這個連結瞭解關於 delay() 函式的詳細資訊,點選這個連結瞭解 digitalWrite() 函式。

我們也可以使用 analogWrite() 函式來建立方波,但我們無法定義它的頻率。頻率已經定義,主要是 499 Hz,或者在某些引腳的情況下,頻率是 1000 Hz。

我們必須將 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