Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2168|回復: 2
打印 上一主題 下一主題

請問Aruduino用電腦輸入並顯示的問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2014-4-25 08:55:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位前輩好小弟最近剛開始接觸
買了一本入門書來學習
其中有兩個習題
1.一顆led,電腦鍵盤輸入0>led關, 輸入1>led開 , 輸入2>led快閃 , 輸入3>led慢閃.
2.同上,加上顯示提示訊息.(就是Serial Monitor要顯示提示)

目前小弟寫了一個可以達成1的程式如下:
int led=13,Key;
void setup()
{
   Serial.begin(9600),pinMode(13,OUTPUT);
}
void loop()
{
  if (Serial.available()>0)
  Key=Serial.read(),Key=Key-'0';
  if (Key==0)
  {
    digitalWrite(led,LOW);
  }
  else if (Key==1)
  {
    digitalWrite(led,HIGH);
  }

  else if (Key==2)
  {
    digitalWrite(led,HIGH),delay(100);
    digitalWrite(led,LOW),delay(100);
  }

  else if (Key==3)
  {
    digitalWrite(led,HIGH),delay(1000);
    digitalWrite(led,LOW),delay(1000);
  }


}

但是小弟在第二題遇到問題
如果把Serial.println()插入 會有重複不斷顯示的情況
沒辦法只顯示一次 因為它是loop
請問各位前輩我該怎麼寫程式才能解決第2題的要求呢?
謝謝各位
2#
發表於 2014-5-4 04:38:18 | 只看該作者
測試過了 都有達到您的要求囉 :)
Serial也只會顯示一次

void setup() {
  Serial.begin(9600);
  pinMode(13,OUTPUT);
}
char SerialValue=' ';
void loop(){
  if(Serial.available()){
    SerialValue=Serial.read();
    Serial.print("Value: ");
    Serial.println(SerialValue);
  }
if(SerialValue=='1'){
  digitalWrite(13,LOW);
}
else if(SerialValue=='2'){
  digitalWrite(13,HIGH);
}
else if(SerialValue=='3'){
  digitalWrite(13,HIGH);
  delay(100);
  digitalWrite(13,LOW);
  delay(100);
}
else if(SerialValue=='4'){
  digitalWrite(13,HIGH);
  delay(1000);
  digitalWrite(13,LOW);
  delay(1000);
}
  

}
3#
 樓主| 發表於 2014-5-5 09:38:25 | 只看該作者
感謝S大 終於解決了 謝謝~
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-9-30 16:23 , Processed in 0.155433 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表