打造您的 pH 計
跟隨這些步驟,組裝您專屬的科學儀器。
程式碼上傳與說明
這是您 pH 計的「大腦」。這段程式碼告訴 Arduino 如何讀取感測器、計算 pH 值並將其顯示在螢幕上。
必要函式庫:LiquidCrystal_I2C
上傳前,您需要安裝一個函式庫來控制 LCD。在 Arduino IDE 中,前往
工具 > 管理函式庫...。搜尋「LiquidCrystal I2C」by Frank de Brabander 並點擊「安裝」。完整程式碼
複製此完整程式碼區塊並貼到您的 Arduino IDE 的新草稿碼中。
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// 將 LCD 位址設為 0x27,適用於 16 字元 x 2 行的顯示器
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define SensorPin A0 // pH 計類比輸出至 Arduino 類比引腳 0
#define VREF 5.0 // 電壓參考,通常為 5.0V
unsigned long int avgValue; // 儲存感測器回饋的平均值
float b;
int buf[10], temp;
void setup() {
Serial.begin(9600);
lcd.begin(); // 初始化 lcd
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("PhytoLogica Meter");
delay(1500);
}
void loop() {
// 採樣 10 次以獲得更穩定的讀數
for(int i=0; i<10; i++) {
buf[i] = analogRead(SensorPin);
delay(10);
}
// 對樣本進行排序以找到中位數
for(int i=0; i<9; i++) {
for(int j=i+1; j<10; j++) {
if(buf[i] > buf[j]) {
temp = buf[i];
buf[i] = buf[j];
buf[j] = temp;
}
}
}
// 取中間 6 個樣本的平均值
avgValue = 0;
for(int i=2; i<8; i++) {
avgValue += buf[i];
}
// 將類比值轉換為電壓,然後再轉換為 pH 值
float pHVol = (float)avgValue * VREF / 1024 / 6;
// 這是一個簡化的轉換。需要進行校準以確保準確性!
float phValue = -5.70 * pHVol + 21.34;
// 顯示結果
lcd.clear();
lcd.setCursor(0,0);
lcd.print("pH Value: ");
lcd.print(phValue, 2); // 顯示 2 位小數
Serial.print("Voltage:");
Serial.print(pHVol, 2);
Serial.print(" pH value: ");
Serial.println(phValue, 2);
delay(1000);
}
程式碼說明
#include
這些行匯入必要的函式庫:
Wire.h用於 I2C 通訊,LiquidCrystal_I2C.h用於控制我們的特定 LCD。變數宣告
我們定義感測器連接的引腳(
A0)、設定電壓參考,並建立變數來儲存感測器讀數。setup()
此函數在啟動時只運行一次。它會初始化序列埠監控視窗(用於除錯)和 LCD 螢幕,然後顯示一條啟動訊息。
loop()
這是程式的主要部分,會永遠循環運行。它會不斷執行以下操作:
- 從 pH 感測器快速讀取 10 次數據。
- 對讀數進行排序並取中間值的平均值,以減少雜訊並獲得穩定的訊號。
- 將原始類比讀數(0-1023)轉換為電壓。
- 使用線性公式將電壓轉換為 pH 值。注意:此公式僅為起始點。校準步驟對於使其準確至關重要!
- 清除 LCD 並顯示最終的 pH 值。
- 等待一秒後重複。
(虛擬下載按鈕)