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 |
GND | GND |
Pin 3 | D0 |
[程式]
程式一:讀取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; }
張貼留言