【說明】
線性霍爾感應器當磁鐵(磁場)接近時會產生電壓,可以透過類比輸出可取得電壓的值,用此得知磁場強度的值,或由數位輸出取得 HIGH/LOW 值。
以下的範例為:當磁鐵接近感應器時,會於 LCD 上顯示類比輸出(AO)取得的值(< 512),及數位輸出(DO)的值(1 -> HIGH),並會將 LED(D13) 點亮,反之磁鐵離開感應器時 , AO > 512、DO = 0 -> LOW、LED 會熄滅。
【零件表】
| No. | 零件名稱 | 數量 |
| 1 | LCD1602_I2C | 1 |
| 2 | Linear_Hall_Sensor | 1 |
【零件接腳】
請參考 「LCD1602_I2C 顯示器」 接腳。
| No. | 零件接腳 | UNO R3 接腳 |
| 1 | AO (Analog Output) | A0 |
| 2 | G (Ground) | GND |
| 3 | + (Vcc) | Vcc |
| 4 | DO (Digital Output) | D2 |
【按線圖】

【程式碼】
/*
* 示範線性霍爾 (Linear Hall Sensor) 的應用:
* 線性霍爾是一個類比感應器,當磁鐵(磁場)接近時會產生電壓,
* 可以透過類比輸出可取得電壓的值,用此得知磁場強度的值,
* 或由數位輸出取得 HIGH/LOW 值。
*/
// 使用 LCD1602 I2C 顯示器顯示結果
// 定義 LCD 元件(位置 0x27 及 16x2 的顯示)
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
byte ledPin = 13; // 定義 LED 的腳位
byte sensorAoPin = A0; // 定義霍爾 Ao 的接收腳位
byte sensorDoPin = 2; // 定義霍爾 Do 的接收腳位
int sensorAoValue = 0; // 儲存霍爾 Ao 的值
int sensorDoValue = 0; // 儲存霍爾 Do 的值
// 程式初化設定
void setup ()
{
lcd.begin(); // 開啟 LCD 元件
lcd.backlight(); // 開啟 LCD 背光
pinMode (ledPin, OUTPUT); // 設定 LED 為輸出模式
pinMode (sensorAoPin, INPUT); // 設定霍爾 Ao 為輸入模式
pinMode (sensorDoPin, INPUT); // 設定霍爾 Do 為輸入模式
}
// 主程式迴圈
void loop ()
{
sensorAoValue = analogRead(sensorAoPin); // 讀取霍爾 Ao 的值
sensorDoValue = digitalRead(sensorDoPin); // 讀取霍爾 Do 的值
displayAoValue(sensorAoValue); // 顯示霍爾 Ao 的值
displayDoValue(sensorDoValue); // 顯示霍爾 Do 的值
digitalWrite (ledPin, sensorDoValue); // 依霍爾 Do 的值開啟或關閉 LED
delay(100); // 暫停 100 ms
}
// 顯示 Ao 的值
void displayAoValue(int value) {
lcd.setCursor(0, 0); // 設定游標位置
lcd.print("Ao Value: ");
lcd.print(value); // 顯示霍爾 Ao 的值
lcd.print(" ");
}
// 顯示 Do 的值
void displayDoValue(int value) {
lcd.setCursor(0, 1); // 設定游標位置
lcd.print("Do Value: ");
lcd.print(value); // 顯示霍爾 Do 的值
lcd.print(" ");
}



