pdf     svg




pdf   svg


#define   sw    6
#define   led   11
int din;
void setup(){
  pinMode(sw,INPUT);
  pinMode(led,OUTPUT);
}
void loop(){
  din=digitalRead(sw); //讀取D6的狀態
  if (din==HIGH)    
     digitalWrite(led,LOW); //如果D6為高電位(沒按) 則 LED 不亮
  else     
     digitalWrite(led,HIGH); //否則LED 亮
}







請將10K歐姆的電阻拔掉 試試
將程式碼更改如下,再試試


#define   sw   6
#define   led   11
int din;
void setup(){
  pinMode(sw,INPUT_PULLUP);
  pinMode(led,OUTPUT);
}
void loop(){
  din=digitalRead(sw); //讀取D6的狀態
  if (din==HIGH)    
     digitalWrite(led,LOW); //如果D6為高電位(沒按) 則 LED 不亮
  else     
     digitalWrite(led,HIGH); //否則LED 亮
}




pdf    svg


水銀開關




pdf   svg




磁簧開關(reed switch)



pdf     svg



















pdf     svg


邏輯 且 (AND)       &&


#define  sw1  8
#define  sw2  A1
#define  led  11
int din1;
int din2;
void setup() {
 pinMode(sw1,INPUT_PULLUP);
 pinMode(sw2,INPUT_PULLUP);
 pinMode(led,OUTPUT);
}
void loop() {
   din1=digitalRead(sw1);
   din2=digitalRead(sw2);
   if (din1==LOW && din2==LOW)  
     digitalWrite(led,HIGH);
  else
    digitalWrite(led,LOW);
}



pdf   svg


接線如上圖,程式怎麼寫?







邏輯 或 (OR)       ||


#define  sw1  6
#define  sw2  A1
#define  led  11
int din1;
int din2;
void setup() {
 pinMode(sw1,INPUT_PULLUP);
 pinMode(sw2,INPUT_PULLUP);
 pinMode(8,OUTPUT);
 pinMode(led,OUTPUT);
 digitalWrite(8,LOW);
}
void loop() {
   din1=digitalRead(sw1);
   din2=digitalRead(sw2);
   if (din1==LOW || din2==LOW)  
     digitalWrite(led,HIGH);
  else
    digitalWrite(led,LOW);
}




記憶性開關






#define  sw  6
#define  led  11
int din0;
int din1;
int out=0;
void setup() {
 pinMode(sw,INPUT_PULLUP);
 pinMode(led,OUTPUT);
}

void loop() {
din0=digitalRead(sw);
delay(10);
din1=digitalRead(sw);
if (din0==LOW && din1==HIGH)   //出現上升緣
out=!out;//反相
digitalWrite(led,out);
}

以上作法,是否有問題?







#define  sw   6
#define  led  11
int din;
int dinL=HIGH;
int out=0;
void setup(){
pinMode(sw,INPUT_PULLUP);
pinMode(led,OUTPUT);
digitalWrite(led,out);
}
void loop(){
  din=digitalRead(sw);

  if(din!=dinL)
  {
     if (din==HIGH)
       {
          out=~out;
          digitalWrite(led,out);
       }
   }

  dinL=din;
  delay(10);
}






切換開關




雙切開關