Robofun 機器人論壇

標題: 按鈕程式問題 [打印本頁]

作者: wayne831216    時間: 2014-1-23 23:51
標題: 按鈕程式問題
本帖最後由 wayne831216 於 2014-1-23 23:53 編輯

小弟剛接處 Arduino 沒多久最近想寫一個紅綠燈的程式
功能想跟一般路口一樣
目前已完成"自動變號"跟閃黃燈"
可是還有一個功能目前還失敗
就是"手動的功能"
小弟想按一下按鈕
可以從路口一(紅)路口二(綠轉黃)在來路口一(紅轉綠)路口二(黃轉紅)

以此類推

已在網路及書籍找過一些資料
但還是失敗
求各位高手給我一些解答
謝謝:)

以下程式是手動功能的程式
int BUTTON_PIN = 7;
int LEDYellow1 = 8;
int LEDGreen1 = 9;
int LEDRed1 = 10;
int LEDYellow2 = 11;
int LEDGreen2 = 12;
int LEDRed2 = 13;
int BUTTON_STSTE;

void setup(){
   pinMode(LEDGreen1,OUTPUT);
   pinMode(LEDGreen2,OUTPUT);
   pinMode(LEDYellow1,OUTPUT);
   pinMode(LEDYellow2,OUTPUT);
   pinMode(LEDRed1,OUTPUT);
   pinMode(LEDRed2,OUTPUT);
   pinMode(BUTTON_PIN,INPUT);
}
void loop(){

    BUTTON_STSTE = digitalRead(BUTTON_PIN);

   if(BUTTON_STSTE == HIGH){

     digitalWrite(LEDRed2, HIGH);
     digitalWrite(LEDGreen1, HIGH);
      }
}
作者: mzw2008    時間: 2014-1-25 02:00
路口一(紅)路口二(綠轉黃)在來路口一(紅轉綠)路口二(黃轉紅)
這句話就是解答了

路口一(紅)路口二(綠轉黃)
digitalWrite(LEDRed1, HIGH);
digitalWrite(LEDGreen2, HIGH);
delay(2000);
digitalWrite(LEDGreen2, LOW);
digitalWrite(LEDYellow2 , HIGH);

在來路口一(紅轉綠)路口二(黃轉紅)
digitalWrite(LEDRed1, LOW);
digitalWrite(LEDGreen1, HIGH);
digitalWrite(LEDYellow2 , LOW);
digitalWrite(LEDRed2, HIGH);

兩段加起來
    BUTTON_STSTE = digitalRead(BUTTON_PIN);

   if(BUTTON_STSTE == HIGH){

digitalWrite(LEDRed1, HIGH);
digitalWrite(LEDGreen2, HIGH);
delay(2000);
digitalWrite(LEDGreen2, LOW);
digitalWrite(LEDYellow2 , HIGH);

digitalWrite(LEDRed1, LOW);
digitalWrite(LEDGreen1, HIGH);
digitalWrite(LEDYellow2 , LOW);
digitalWrite(LEDRed2, HIGH);
}

這不是書中會有的答案,而是你得看懂書寫的東西
自己去想出來的流程
就好像課本只會教公式
遇到題目如何解你還是要自己想
作者: mzw2008    時間: 2014-1-25 02:03
至於裡面的DELAY要加哪裡
要看你對紅綠燈的想法
每個地方的紅綠燈不一樣

有些綠燈直接迅速就紅燈
有些綠燈要頓一陣,黃燈在頓一陣子才變紅燈
有些是黃燈頓很久... 有些是紅燈無敵久(往墾丁路上有999秒的XDD)
....

總之這程式還有很大改進空間哩
作者: wayne831216    時間: 2014-1-28 16:07
謝謝大大的答覆 : )




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2