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();
}
須要搭配如此電路: