S08_Linear_Hall_Sensor(線性霍爾)

【說明】

線性霍爾感應器當磁鐵(磁場)接近時會產生電壓,可以透過類比輸出可取得電壓的值,用此得知磁場強度的值,或由數位輸出取得 HIGH/LOW 值。

以下的範例為:當磁鐵接近感應器時,會於 LCD 上顯示類比輸出(AO)取得的值(< 512),及數位輸出(DO)的值(1 -> HIGH),並會將 LED(D13) 點亮,反之磁鐵離開感應器時 , AO > 512、DO = 0 -> LOW、LED 會熄滅。

【零件表】

No.零件名稱數量
1LCD1602_I2C1
2Linear_Hall_Sensor1

【零件接腳】

請參考 「LCD1602_I2C 顯示器」 接腳。

No.零件接腳UNO R3 接腳
1AO (Analog Output)A0
2G (Ground)GND
3+ (Vcc)Vcc
4DO (Digital Output)D2

【按線圖】

Keys: S08_Linear_Hall_Sensor 接線圖

【程式碼】

/*
 * 示範線性霍爾 (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("    ");
}
下載程式碼

 ※  分享結束  ※


發佈留言