[Ardunio] Switch output for a delay time

[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來輔助外面的電路更換正負極,就像這樣:

20170703-01

這兩個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);
    }
}

然後硬體也處理好

a91cfa0d444ece81-photo

會有兩種不一樣的電源RELAY是因為一個是給Arduino用的5V,以及另外一個是我的輸出用的24V

最後把CODE燒錄進去就完成了!

 

這裡要小小的紀錄一下Arduino MINI (PRO)的燒錄方式是要按住RESET按鈕,等到成是顯示UPLOAD(上傳中)的時候要馬上放手,這樣才能夠燒錄進去

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料