下面是實驗常開開關雙鍵控制的應用範例:
功能說明:
1.按下 PB0 按鈕 LED 亮。
2.按下 PB1 按鈕 LED 滅。
   

#define LED 9
#define PB0 6
#define PB1 7

void setup() {
      pinMode(LED,OUTPUT);
      digitalWrite(LED,HIGH);
}

void loop() {
      //若 PB0 按下,則 LED 滅
      if( digitalRead(PB0)==LOW ) digitalWrite( LED , HIGH );
      //若 PB1 按下,則 LED 亮
      if( digitalRead(PB1)==LOW ) digitalWrite( LED , LOW );
}

下面是實驗常開開關單鍵控制的應用範例:
功能說明:
1.按下 PB0 按鈕 LED 亮。
2.在按一次 PB0 按鈕 LED 滅。
3.依功能 1. 、2. 反覆動作,可控制 LED 亮滅。
     

#define LED 9
#define PB0 7

void setup() {
      pinMode(LED,OUTPUT);
      digitalWrite(LED,HIGH);
}

void loop() {
      static int y = false;
      if(digitalRead(PB0)==LOW){
           if(y){
                 digitalWrite(LED,HIGH);
                 delay(500); //防彈跳
                 y=false;
           }
           else{
                 digitalWrite(LED,LOW);
                 delay(500); //防彈跳
                 y=true;
           }
      }
}



下面是實驗多個單選擇開關的組合應用範例:
功能說明:
1.撥動 SW1 開關為 On , LED1 亮,Off 為滅。
2.撥動 SW2 開關為 On , LED2 亮,Off 為滅。
3.撥動 SW3 開關為 On , LED3 亮,Off 為滅。
一個開關獨立控制 1 個 LED,互相不影響。

  

#define LED1 2
#define LED2 3
#define LED3 4
#define SW1 11
#define SW2 12
#define SW3 13

void setup() {
      pinMode( LED1 , OUTPUT);digitalWrite( LED1 , HIGH);
      pinMode( LED2 , OUTPUT);digitalWrite( LED2 , HIGH);
      pinMode( LED3 , OUTPUT);digitalWrite( LED3 , HIGH);
}

void loop() {
      digitalWrite(LED1 , digitalRead(SW1));
      digitalWrite(LED2 , digitalRead(SW2));
      digitalWrite(LED3 , digitalRead(SW3));
}

下面是實驗多個單選擇開關的組合控制應用範例:
功能說明:
1.將 sw3、sw2、sw1分別為 3 bits 的整數資料,
   On 表示1,Off 表示0, 因此 sw3 Off、sw2 Off、sw1 Off
   表示 000,sw3 Off、sw2 Off、sw1 On 表示 001,依此類推 。
2.若 sw3、sw2、sw1,組合數字為 000,表示 LED 全滅。
3.若 sw3、sw2、sw1,組合數字為 110,表示 6 號 LED 亮。

 

#define LED_L 7 #define SW1 11
#define SW2 12
#define SW3 13

int Led[LED_L] = {2,3,4,5,6,7,8};

void setup() {
      for(int i=0;i<<LED_L;i++){
            pinMode( Led[i] , OUTPUT);
            digitalWrite(Led[i] , HIGH);
      }
}

void loop() {
      static int y;
      int x;
      x = ( (!digitalRead(SW3))<<2 ) | ( (!digitalRead(SW2))<<1 ) | ( (!digitalRead(SW1)) );
      if(x==0)
            for(int i=0;i<LED_L;i++)
                  digitalWrite(Led[i] , HIGH);
      else
      if(x!=y){
            for(int i=0;i<LED_L;i++)
                  digitalWrite(Led[i] , HIGH);
            if(x!=0)
                  digitalWrite(Led[x-1] , LOW);
      }
      y = x;
}