第2堂-LED紅綠燈進階程式
登入Classroom,填寫座位表
本堂利用紅綠燈繼續深入類C語言程式境地…
啥?又是紅綠燈!
別小看紅綠燈,完全一樣的程式,
把LED換成繼電器,馬上可以控制各種大型電器。
寫程式為何厲害?因為打開一座城市的電力,跟打開一顆小小LED,用的是同樣的邏輯。
今天你能控制一台自製的小小機器人,用相同的邏輯,你也能控制幾百萬等級的機器人。
既然知道開關LED可以演變到如此強大,我們就來用LED紅綠燈來練習程式邏輯,今天程式有以下學習目標
- 變數宣告(int…)
- while迴圈
- if 條件式(if…)
- 打開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);
}
}