| 
 | 
 
 本帖最後由 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); 
   
} |   
 
 
 
 |