[Ardunio] Switch output for a delay time
這個是因為在某個實驗的機器上要切換正負極(也就是說正極跟負極不是永遠都在同樣的位置上)
OK,接下來先是硬體設置,首先先讓PIN2當做切換的Trigger(觸發),所以在Arduino上的Code就是
const int TriggerPin = 2;
pinMode(TriggerPin, INPUT);
雖然有的人會很直接的寫
pinMode(2, INPUT);
但是這樣很不直覺,之後也會忘記你的PIN腳是拿來做甚麼用的,名子就是拿來輔助記憶用的!
接著會有兩個輸出的PIN,這兩個PIN來輔助外面的電路更換正負極,就像這樣:
這兩個PIN的CODE就像這樣:
const int ledPin1 = 11;
const int ledPin2 = 12;
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
接著,先設定一個Trigger的狀態,就是開機時起始用的
int TriggerState = 0;
接著在LOOP裡面讓它去監看PIN2到底是High還是Low
TriggerState = digitalRead(TriggerPin);
所以整支程式就可以寫下來了:
const int TriggerPin = 2;
const int ledPin1 = 11;
const int ledPin2 = 12;
int TriggerState = 0;void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(TriggerPin, INPUT);
}void loop(){
TriggerState = digitalRead(TriggerPin);
if (TriggerState == HIGH)
{
digitalWrite(ledPin2, LOW);
delay(300);
digitalWrite(ledPin1, HIGH);
}
else
{
digitalWrite(ledPin1, LOW);
delay(300);
digitalWrite(ledPin2, HIGH);
}
}
然後硬體也處理好
會有兩種不一樣的電源RELAY是因為一個是給Arduino用的5V,以及另外一個是我的輸出用的24V
最後把CODE燒錄進去就完成了!
這裡要小小的紀錄一下Arduino MINI (PRO)的燒錄方式是要按住RESET按鈕,等到成是顯示UPLOAD(上傳中)的時候要馬上放手,這樣才能夠燒錄進去