因為武漢肺炎要多洗手(應該平時就要養成這個習慣),所以來做個自動給皂機,減少接觸物品。
- 零件:
sg90伺服馬達*2,紅外線感測器*1,(Arduino Nano + 擴充板)*1
- 接線:
| 左邊馬達 | 右邊馬達 | 紅外線感測器 | Arduino |
| 橘 | 5S | ||
| 紅 | 5V | ||
| 棕(或黑) | 5G | ||
| 橘 | 3S | ||
| 紅 | 3V | ||
| 棕(或黑) | 3G | ||
| OUT | 7S | ||
| VCC | 7V | ||
| GND | 7G |
- 程式碼:
#include <Servo.h> // <>改為半形,用全形網頁才能顯示,但是 arduino ide 編譯不過
Servo myservoR, myservoL; // 建立Servo物件,控制伺服馬達
int servoRPin = 3;
int servoLPin = 5;
int irPin = 7;
void setup()
{
Serial.begin(9600);
myservoR.attach(servoRPin); // 連接數位腳位servoRPin,伺服馬達的訊號線
myservoL.attach(servoLPin); // 連接數位腳位servoLPin,伺服馬達的訊號線
myservoR.write(170); // 一開始先170度
myservoL.write(10); // 一開始先10度
pinMode(irPin, INPUT);
}
void loop()
{
int moist;
moist = digitalRead(irPin);
Serial.println(moist);
// 靠近時,轉動馬達
if (moist == 0)
{
myservoR.write(10);
myservoL.write(170);
delay(20);
}
else // 遠離時,恢復馬達
{
myservoR.write(170);
myservoL.write(10);
delay(20);
}
}
- 注意事項:
- 馬達的角度需要視馬達的情況而調整,sg90的馬達扭力不足,改為其他扭力更強的馬達,效果會更好。
- 馬達間的線,需要固定,在停止狀態時,最好是緊繃的。現用縫衣服的線,若改用釣魚用水線,效果可能會更好。
- 結果影片:
