7/18/2014

使用Arduino的IDE開發程式

Arduino的IDE做的很好用,基本上就是AVR函式庫+編輯器+編譯器。你可以用它來寫任何不超過其內建EEPROM的程式。

Arduino的程式碼稱為Sketch(速描),其實就是把C/C++的語法包裝在函式庫內,只留下兩個入口,一個是void setup(void),一個是void loop(void)。主機板過電後,會先執行setup。所以設定腳位什麼的事,可以在setup內執行。其它需要反覆執行的程式碼,則放在loop函式裡。

以下是我的第一支程式:

const int ledPin=3;
const int switchPin=2;
int pushed=0, action=0;

void blinkAccordingAction(void) {
    switch(action) {
        case 1:    //Turn on LED
        digitalWrite(ledPin, HIGH);
        break;
      
        case 2:    //Blink, period is 200 ms
        digitalWrite(ledPin, HIGH);
        delay(200);
        digitalWrite(ledPin, LOW);
        delay(200);
        break;
      
        case 3:    //Blink, period is 100 ms
        digitalWrite(ledPin, HIGH);
        delay(100);
        digitalWrite(ledPin, LOW);
        delay(100);
        break;
      
        default:    //Turn off LED
        digitalWrite(ledPin, LOW);
    }
}

void setup(void ) {
    Serial.begin(115200);         //We need serial output to show debug message
    pinMode(ledPin, OUTPUT);
    pinMode(switchPin, INPUT);
}

void loop(void) {
    int level=digitalRead(switchPin);    //Read the level of switch pin
  
    if(!pushed && level==HIGH) {
        pushed=1;
        Serial.println("Button pressed.");
        goto run;
    }
  
    if(pushed==1 && level==LOW) {
        pushed=0;
        action=(action+1)%4;
        Serial.println("Button released.");
    }
  
    run:
    blinkAccordingAction();
}


須要搭配如此電路:

沒有留言: