Arduino筆記(62):震動感測模組 SW-420

SW-420震動感測模組是無方向性振動傳感器,一般可用在各種震動觸發,例如:防盜,智慧小車,地震等。當震動感測模組靜止時,電路開啟,輸出為高電位。當發生運動或振動時,電路將短暫斷開並輸出低電平。模組上有一個藍色十字形的電位器調節,可以根據自己的需要調整靈敏度。

[材料]

  • Arduino Uno x 1
  • 震動感測模組 SW-042 x 1
  • 麵包板 x 1
  • LED x 1
  • 220K 電阻 x 1
  • 蜂鳴器 x 1
  • 連接線 x 7條


[接線與電路圖]

接腳圖如下:
Arduino接腳SW-420接腳
+5V(VCC)VCC
GNDGND
Pin 3D0


[程式]

程式一:讀取D0是否為0或1,來判斷是否發生震動?
int vibr = 3;  // 震動感測器 D0
int led = 9;   // LED 輸出接腳
int buzzer = 12; // 蜂鳴器輸出接腳

void setup() {
  pinMode(vibr,INPUT);
  pinMode(led,OUTPUT);
  pinMode(buzzer,OUTPUT);
}

void loop() {
  int val;
  // 從 D3讀取感測值
  val=digitalRead(vibr);
  
  if(val==1)   {
    digitalWrite(led,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(2000);
   }
   else {
    // 關閉蜂鳴器及LED
    digitalWrite(led,LOW);
    digitalWrite(buzzer,LOW);
    delay(1000);
   }
} 
程式二:用pulseIn() 函式,讀取接腳D0上的脈衝(高電位或低電位)。例如,如果值是HIGH,pulseIn()等待引腳變為高電平,開始計時,然後等待引腳變為LOW和停止計時。如超時間內沒有收到完整的脈衝,則返回脈衝的長度(以微秒為單位)或0。
int vibr =3;  // 震動感測器 D0
int led = 9;  // LED 輸出接腳
int buzzer = 12; // 蜂鳴器輸出接腳

void setup() {
  pinMode(vibr,INPUT);
  pinMode(led,OUTPUT);
  pinMode(buzzer,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int val;
  // 從 D3讀取感測值
  long measurement =TP_init();
  delay(50);
  Serial.println(measurement);
 
  if (measurement > 500){
    digitalWrite(led,HIGH);
    digitalWrite(buzzer,HIGH);
    delay(2000);
   }
   else {
    // 關閉蜂鳴器及LED
    digitalWrite(led,LOW);
    digitalWrite(buzzer,LOW);
    delay(1000);
   }
}

long TP_init(){
  delay(10);
  long measurement=pulseIn (vibr, HIGH);  // 等待 D0 輸入高電壓,並回傳值
  return measurement;
}

[實作結果]



[參考資料]

Post a Comment

較新的 較舊