Robofun 機器人論壇

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

Arduino藍芽問題(十萬火急)

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-6-5 16:22:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以下是小弟程式碼
目的:利用藍芽與手機(Android)藍芽通訊,手機傳數值2,1,0;
而Arduino收到2要執行感光偵測,大於臨界點會發出警報(蜂鳴器)且Led燈會亮;
收到1要自行一直跑感光並偵測值,大於臨界點會發出警報(蜂鳴器)且Led燈會亮,
收到0則關閉Arduino。
面臨問題:
當App結束關掉或是藍芽因距離過遠斷掉連接Arduino無法判斷出來!!!!
再跑模式1(收到1),會無窮迴圈,原本功能是希望能再跑迴圈的時候若輸入另外一個值(ex:2或1),則Arduino會執行2或1該有的功能。
請大大幫個忙,感恩
int potPin = 2;
int val = 0;
int speakerPin = 7;
int sval = 1318;
int ledPin = 9;
void setup(){
  Serial.begin(9600);
  pinMode(speakerPin,OUTPUT);
  pinMode(ledPin, OUTPUT);
}
void loop(){
  if(Serial.available()){
    unsigned char charreceived = Serial.read();
     switch(charreceived){
      case '2':
        Serial.println("can not open and far");
        val = analogRead(potPin);
        Serial.println(val);
        digitalWrite(ledPin,LOW);
        if(val>25){
          digitalWrite(ledPin,HIGH);
          digitalWrite(speakerPin,HIGH);
          delayMicroseconds(sval);
        }delay(1000);
  break;
  case '1':
        do{
        Serial.println("can not open");
        val = analogRead(potPin);
        Serial.println(val);
        digitalWrite(ledPin,LOW);
        if(val>25){
          digitalWrite(ledPin,HIGH);
          digitalWrite(speakerPin,HIGH);
          delayMicroseconds(sval);
        }
        delay(1000);
        }while(charreceived=1);

    break;
    case '0':
    Serial.println("free mode");
    break;

    }
}
}
2#
發表於 2013-6-6 10:39:29 | 只看該作者
回復 1# a6141100

   

  1. case '1':
  2.         do{
  3.         Serial.println("can not open");
  4.         val = analogRead(potPin);
  5.         Serial.println(val);
  6.         digitalWrite(ledPin,LOW);
  7.         if(val>25){
  8.           digitalWrite(ledPin,HIGH);
  9.           digitalWrite(speakerPin,HIGH);
  10.           delayMicroseconds(sval);
  11.         }
  12.         delay(1000);
  13. charreceived = Serial.read();   //加這一行
  14.         }while(charreceived=1);

  15.     break;
複製代碼

這個迴圈主要是用charreceived=1來做判斷,但是當app端離開或藍芽斷線的時候,若最後的狀態停在charreceived=1的話則會進入do無限迴圈裡面,我想,在while的前面加上一行charreceived = Serial.read(); 若藍芽恢復連線時則do迴圈內也可以接收到訊號並改變charreceived的值也許就可以了。
3#
 樓主| 發表於 2013-6-7 14:00:55 | 只看該作者
回復 2# babyfish0226
大哥@@感恩。這問題已解!!!!
但還有一個大問題!!!!
藍芽斷掉連接Arduino是否有判斷式,我目的是要做出當藍芽斷掉連接Arduino會知道並發出警報(蜂鳴器會叫)!!
麻煩看到的大大能幫忙一下。
感恩。
4#
發表於 2013-6-8 00:13:28 | 只看該作者
手機每隔特定的時間傳送資料給Arduino,
Arduino端則可以計數接收到該資料的時間,
若時間超過你認為就是斷訊的秒數,
就可判定為藍芽斷線.
5#
 樓主| 發表於 2013-6-10 23:41:56 | 只看該作者
回復 4# pizg


   怎麼計數接收到該資料的時間!!?
6#
發表於 2013-6-13 18:13:40 | 只看該作者
本帖最後由 pizg 於 2013-6-13 18:25 編輯

回復 5# a6141100


   你可以參考Cooper Maa老師的這篇文章. http://coopermaa2nd.blogspot.tw/2011/04/millis-button.html
或是這一篇 http://coopermaa2nd.blogspot.tw/2011/04/pulsein-button.html
7#
發表於 2013-8-11 21:57:41 | 只看該作者
請問a6141100大大
你的android 端的程式是怎麼寫的??
小弟也再使用藍芽但看其他網站上的都看不太懂
能不能請大大給一下你android端的程式?
8#
發表於 2013-8-11 22:51:44 | 只看該作者
請問a6141100大大
你的android 端的程式是怎麼寫的??
小弟也再使用藍芽但看其他網站上的都看不太懂
能不 ...
faxg1991 發表於 2013-8-11 21:57


你 google 一下就有了,keyword > amarino
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-1-31 18:44 , Processed in 0.217750 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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