Robofun 機器人論壇

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

請問各位arduino 數值上傳到手機app的相關問題!!

[複製鏈接]
跳轉到指定樓層
1#
發表於 2017-12-27 09:35:04 | 顯示全部樓層 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 qzec0910266 於 2017-12-27 09:42 編輯

請問各位 溫溼度搭配藍芽 手機app就可以順利接受到數值 空氣品質(pms3003)卻沒辦法,請各位幫我看一夏問題出在哪謝謝
以下是程式碼:
#include <SoftwareSerial.h>
#include <Wire.h>
#include "SparkFunHTU21D.h"

SoftwareSerial I2CBT(10,11); // TX:10, RX:11
byte serialA;
HTU21D myHumidity;


void setup(){
  Serial.begin(9600);
  I2CBT.begin(9600);
  myHumidity.begin();
}

void loop (){
//溫溼度
    int temp = myHumidity.readTemperature();
    int humd = myHumidity.readHumidity();
   
    Serial.print("Time:");
    Serial.print(millis());
    Serial.print("Temperature:");
    Serial.print(temp, 1);
    Serial.print("C");
    Serial.print(" Humidity:");
    Serial.print(humd, 1);
    Serial.println("%");
  delay(1000);
//溫溼度數值透過藍芽傳送到app
    byte Data[3];
    byte Data1[3];
   
    byte cmmd[20];
    int insize;
   
    serialA=I2CBT.read();
    Data[0]='a';
    Data[1]=temp/256;
    Data[2]=temp%256;
    Data1[0]='b';
    Data1[1]=humd/256;
    Data1[2]=humd%256;
   
     Serial.print(temp);
     Serial.print(" , ");
     Serial.println(humd);

     if (serialA == 1){
         for(int j=0;j<3;j++)
         I2CBT.write(Data[j]);
         serialA=0;
      }
     if (serialA == 2){
         for(int j=0;j<3;j++)
         I2CBT.write(Data1[j]);
         serialA=0;
      }

  //空氣
    while(Serial.available()){
    CopeSerialData(Serial.read());
  }

}

char CopeSerialData(unsigned char ucData){
  static unsigned char ucRxBuffer[250];
  static unsigned char ucRxCnt = 0;
  
  long  pmat25=0,pmat100=0;
  long  pmcount03=0,pmcount05=0,pmcount10=0;
  long  pmcount25=0,pmcount50=0,pmcount100=0;

  ucRxBuffer[ucRxCnt++]=ucData;
  
  if(ucRxBuffer[0]!=0x42&&ucRxBuffer[1]!=0x4D){
    ucRxCnt=0;
    return ucRxCnt;
  }
  if (ucRxCnt<24){
    return ucRxCnt;
  }
  else{
   
    pmat25=(int)ucRxBuffer[12]*256+(int)ucRxBuffer[13];
    Serial.print("PM2.5_AT:");  Serial.print(pmat25);    Serial.print("   ");   
    pmat100=(int)ucRxBuffer[14]*256+(int)ucRxBuffer[15];   
    Serial.print("PM10_AT:");   Serial.print(pmat100);   Serial.println("   ");
   
    ucRxCnt=0;
    return ucRxCnt;
  }
  //空氣數值透過藍芽傳送到app
    byte Data2[3];
    byte Data3[3];
    byte cmmd[20];
    int insize;

    serialA=I2CBT.read();
    Data2[0]='c';
    Data2[1]=pmat25/256;
    Data2[2]=pmat25%256;
    Data3[0]='d';
    Data3[1]=pmat100/256;
    Data3[2]=pmat100%256;
   
     Serial.print(pmat25);
     Serial.print(" , ");
     Serial.println(pmat100);

     if (serialA == 3){
         for(int j=0;j<3;j++)
         I2CBT.write(Data2[j]);
         serialA=0;
      }
     if (serialA == 4){
         for(int j=0;j<3;j++)
         I2CBT.write(Data3[j]);
         serialA=0;
      }
    delay(1000);
  
}

錯誤.jpg (32.61 KB, 下載次數: 276)

錯誤.jpg
2#
 樓主| 發表於 2017-12-27 11:34:18 | 顯示全部樓層
本帖最後由 qzec0910266 於 2017-12-27 11:35 編輯

1. 你的程式根本到不了
//空氣數值透過藍芽傳送到app 這一行
在這行之前, 副程式就 return 掉了
[/quote]

超新手大大你好 謝謝你的回覆
如果我直接把return 拿掉的話他可以繼續往下跑嗎??
我的手機app是用appinventor做得,能否請你幫我看一下,是否有錯誤
感謝

4.PNG (33.33 KB, 下載次數: 304)

4.PNG

3.PNG (37.29 KB, 下載次數: 281)

3.PNG

2.PNG (39.53 KB, 下載次數: 300)

2.PNG

1.PNG (39.21 KB, 下載次數: 271)

1.PNG
3#
 樓主| 發表於 2017-12-27 12:18:35 | 顯示全部樓層
超新手 發表於 2017-12-27 11:45
>>如果我直接把return 拿掉的話他可以繼續往下跑嗎
不行, 會漏掉命令
因為你在前面温濕度己經執行一次


超新手大大非常感謝你的回覆
想在請問你
app接收數值時
總是溫度接收最快
其他數值總會延遲
是因為arduino端的問題還是app端的問題
謝謝
4#
 樓主| 發表於 2017-12-27 16:17:17 | 顯示全部樓層
超新手大大感謝你的回覆
5#
 樓主| 發表於 2017-12-28 14:07:21 | 顯示全部樓層
超新手 發表於 2017-12-27 12:32
應該都有
1) app端
   這個程式下了一個 byte, 就馬上去讀

超新手大大 感謝你昨天給的建議
我把return一道loop最外層就成功了

想在請問你 因為我藍芽和空氣感測器都接5v但好像推不太動
藍芽的燈有時就不閃了
想請問你 有什麼建議可以解決嗎
謝謝!!
6#
 樓主| 發表於 2017-12-28 15:12:14 | 顯示全部樓層
超新手 發表於 2017-12-28 14:29
你應該有另外給 Vin 吧? 不是直接接 USB 吧?
有兩種可能
1. Vin 所能提供的電流太小

我的接法是
9v電池輸入arduino
再由arduino的5v輸出給兩個元件
應該是你說的第二點八
如果買個繼電器 有辦法解決嗎
謝謝!!
7#
 樓主| 發表於 2017-12-28 15:46:44 | 顯示全部樓層
超新手 發表於 2017-12-28 15:19
繼電器? 應該不行吧?
電池? 不會是碳鋅電池吧?
如果有變壓器,

好的謝謝
我再試試看
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-15 04:56 , Processed in 0.201407 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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