Robofun 機器人論壇

標題: 請問Aruduino用電腦輸入並顯示的問題 [打印本頁]

作者: pipi74319    時間: 2014-4-25 08:55
標題: 請問Aruduino用電腦輸入並顯示的問題
各位前輩好小弟最近剛開始接觸
買了一本入門書來學習
其中有兩個習題
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題的要求呢?
謝謝各位
作者: sinyotsai    時間: 2014-5-4 04:38
測試過了 都有達到您的要求囉 :)
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);
}
  

}
作者: pipi74319    時間: 2014-5-5 09:38
感謝S大 終於解決了 謝謝~




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