Robofun 機器人論壇

標題: 請問led要開Serial監看才能明暗嗎?[已解決] [打印本頁]

作者: joejoe2829    時間: 2014-11-12 20:20
標題: 請問led要開Serial監看才能明暗嗎?[已解決]
本帖最後由 joejoe2829 於 2014-11-20 14:51 編輯

若不開監看視窗來看Serial.println的執行結果
UNO上的led(pin 13腳)就不會正常的動作

但,開啟監看視窗led燈就又正常的依照程式所寫的動作
是我哪裡有寫錯嗎??還是我哪裡的邏輯有問題??


  1. #include <SPI.h>
  2. #include <SD.h>
  3. const int chipSelect = 4;
  4. String dataString = "", fileName = "";
  5. File dataFile;
  6. int analogPin, sensor, i;
  7. const int led = 13;
  8. unsigned long startTime, duration;
  9. void setup()
  10. {
  11.   Serial.begin(9600);
  12.   pinMode(led, OUTPUT);
  13.   pinMode(10, OUTPUT);

  14.   if (!SD.begin(chipSelect)) {
  15.     return;
  16.   }
  17. }

  18. void loop()
  19. {
  20.    if (analogRead(0) > 520) {
  21.      digitalWrite(led, HIGH);
  22.      Serial.println("LED ON");
  23.      delay (500);digitalWrite(led, LOW);
  24. Serial.println("LED OFF");
  25. delay (500);
  26.      dataFile = SD.open("datalog.csv", FILE_WRITE);
  27.      if (dataFile) {
  28.        dataFile.println("Analog 0,Analog 1");
  29.        startTime = millis();
  30.        while (analogRead(0) > 520) {
  31.          for (analogPin = 0; analogPin < 2; analogPin++) {
  32.            sensor = analogRead(analogPin);
  33.            dataString += String(sensor);
  34.            if (analogPin < 1) {
  35.              dataString += ",";
  36.            }
  37.          }
  38.          dataFile.println(dataString);
  39.          dataString = "";        
  40.        }
  41.        duration = millis() - startTime;
  42.        dataFile.print("Duration(ms): ");
  43.        dataFile.println(duration);
  44.        }
  45.    } else {
  46.      dataFile.close();
  47.      digitalWrite(led, LOW);
  48.      Serial.println("LED OFF");
  49.      delay (500);
  50.    }
  51. }
複製代碼


AIDatalog.ino (2.59 KB, 下載次數: 1056)
作者: io64227    時間: 2014-11-12 23:26
digitalWrite(led, HIGH);
     Serial.println("LED ON");
     delay (500);digitalWrite(led, LOW);
Serial.println("LED OFF");

時間太短暫  你可能眼睛看不到亮 就關閉
     digitalWrite(led, LOW);
    Serial.println("LED OFF");
這先抽掉看看
作者: joejoe2829    時間: 2014-11-13 11:32
可是,我只要開Serial監看"LED ON"或是"LED OFF"的狀態,LED燈的明滅就正常了
就算我是寫成
digitalWrite(led, HIGH);
Serial.println("LED ON");
delay (250);
digitalWrite(led, LOW);
Serial.println("LED OFF");
delay (250);
250ms還是可以看到LED燈的快速閃爍

重點就是只要開啟Serial監看視窗,LED燈的狀態就是照程式寫的方式跑
沒開來監看,電源重新拔插就不行了,或是隨機的正常閃爍。
作者: sss210146    時間: 2014-11-18 15:49
小的愚見,看大大的code似乎是將SD card利用SPI去溝通,而PSI SCK 和 LED 的PIN腳是同一支,或許是造成LED無法正常運作的原因,用其他PIN當作LED的燈號狀態試試。

另外請問一下,你的datalog有記錄到SD card裡嗎?

希望有幫助^^
作者: joejoe2829    時間: 2014-11-20 09:35
回復 4# sss210146

哦!!等等來試試看,是不是led腳位的問題。可以哦!可以正常的寫入SD Card中,沒問題。


謝謝你提供的資訊。
作者: sss210146    時間: 2014-11-20 12:33
有一點我蠻好奇的,如果不用digitalWrite()去控制D13 LED的明滅,以SPI SCK的時脈4MHz,不知道D13 LED會不會亮?




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