第2堂-LED紅綠燈進階程式

登入Classroom,填寫座位表


本堂利用紅綠燈繼續深入類C語言程式境地…

啥?又是紅綠燈!

別小看紅綠燈,完全一樣的程式,
把LED換成繼電器,馬上可以控制各種大型電器。

寫程式為何厲害?因為打開一座城市的電力,跟打開一顆小小LED,用的是同樣的邏輯。

今天你能控制一台自製的小小機器人,用相同的邏輯,你也能控制幾百萬等級的機器人。


既然知道開關LED可以演變到如此強大,我們就來用LED紅綠燈來練習程式邏輯,今天程式有以下學習目標

  1. 變數宣告(int…)
  2. while迴圈
  3. if 條件式(if…)
  4. 打開Serial監控(Serial…)

練習一
將腳位11~13改為變數

int pin=11;
int delayTime=300;


void setup() {
  while(pin<=13){
    pinMode(pin, OUTPUT);
    pin++;
  }
  pin=13;
}


void loop() {
  digitalWrite(pin, HIGH);
  delay(delayTime);
  digitalWrite(pin, LOW );
  delay(delayTime);

  if (pin==13){
    pin=11;
  }else{
    pin++;
  }
}

練習二
燈泡剛開始慢慢閃,接著越閃越快

int pin=11;
int delayTime=1000;


void setup() {
  while(pin<=13){
    pinMode(pin, OUTPUT);
    pin++;
  }
  pin=13;
}


void loop() {
  digitalWrite(pin, HIGH);
  delay(delayTime);
  digitalWrite(pin, LOW );
  delay(delayTime);
  if (pin==13){
    pin=11;
  }else{
    pin++;
  }

  if (delayTime>100){
    delayTime=delayTime-100;
  }

}

練習三
越來越快之後,接著又越來越慢,周而復始

先自己試試看
**************************























int pin=11;
int delayTime=1000;
int i=0;


void setup() {
  while(pin<=13){
    pinMode(pin, OUTPUT);
    pin++;
  }
  pin=13;
  Serial.begin(9600);
}




void loop() {
  digitalWrite(pin, HIGH);
  delay(delayTime);
  digitalWrite(pin, LOW );
  delay(delayTime);
  if (pin==13){
    pin=11;
  }else{
    pin++;
  }


  if (i==0){
    if (delayTime>100){
      delayTime=delayTime-100;
    }else{
      i=1;
    }
  }else{
    if (delayTime<1000){
      delayTime=delayTime+100;
    }else{
      i=0;
    }
  }
  Serial.println(delayTime);
}

打開Serial Monitor,對電腦施展 “讀心術”

 Serial.begin(9600);




 Serial.println();

輸入裝置

光線感測器


開始爆發第一個創意吧,”光感應路燈”

void setup(){
  Serial.begin(9600);

  pinMode(11, OUTPUT);
}


void loop(){
  Serial.println(analogRead(A5));
  delay(100);

  if (analogRead(A5)>400){
    digitalWrite(11,LOW);
  }else{
    digitalWrite(11,HIGH);
  }
}

您可能也會喜歡…

發佈留言