以下為合併後程式碼 
可是只能顯示gps,無法顯示DHT11 
麻煩高手解惑~~~ 
 
 
 
 
#include <DHT.h>   
#include "DHT.h" 
#include<SoftwareSerial.h> //匯入程式庫 
SoftwareSerial GPSModule(10, 11); // TX, RX 
#define dhtPin 8       
#define dhtType DHT11     
const int AOUTpin=0;//the AOUT pin of the alcohol sensor goes into analog pin A0 of the arduino 
const int DOUTpin=9;//the DOUT pin of the alcohol sensor goes into digital pin D8 of the arduino 
const int ledPin=13;//the anode of the LED connects to digital pin D13 of the arduino 
 
int limit; 
int value; 
 
 
int updates; 
int failedUpdates; 
int pos; 
int stringplace = 0; 
String timeUp; 
String nmea[15]; 
String labels[12] {"Time: ", "Status: ", "Latitude: ", "Hemisphere: ", "Longitude: ", "Hemisphere: ", "Speed: ", "Track Angle: ", "Date: "}; 
 
 
DHT dht(dhtPin, dhtType);  
 
 
 
void setup() { 
  Serial.begin(9600); 
  dht.begin(); 
 
pinMode(DOUTpin, INPUT);//sets the pin as an input to the arduino 
pinMode(ledPin, OUTPUT);//sets the pin as an output of the  
 
Serial.begin(57600); 
GPSModule.begin(9600); 
 
Serial.begin(115200);//sets the baud rate 
Serial .println(); 
Serial .println("感測器啟動"); 
} 
 
void loop() { 
  Serial.flush(); 
GPSModule.flush(); 
while (GPSModule.available() > 0) 
{ 
GPSModule.read(); 
 
} 
if (GPSModule.find("$GPRMC,")) { 
String tempMsg = GPSModule.readStringUntil('\n'); 
for (int i = 0; i < tempMsg.length(); i++) { 
if (tempMsg.substring(i, i + 1) == ",") { 
nmea[pos] = tempMsg.substring(stringplace, i); 
stringplace = i + 1; 
pos++; 
} 
if (i == tempMsg.length() - 1) { 
nmea[pos] = tempMsg.substring(stringplace, i); 
} 
} 
updates++; 
nmea[2] = ConvertLat(); 
nmea[4] = ConvertLng(); 
for (int i = 0; i < 9; i++) { 
Serial.print(labels[i]); 
Serial.print(nmea[i]); 
Serial.println(""); 
} 
 
} 
else { 
 
failedUpdates++; 
 
} 
stringplace = 0; 
pos = 0; 
} 
 
String ConvertLat() { 
String posneg = ""; 
if (nmea[3] == "S") { 
posneg = "-"; 
} 
String latfirst; 
float latsecond; 
for (int i = 0; i < nmea[2].length(); i++) { 
if (nmea[2].substring(i, i + 1) == ".") { 
latfirst = nmea[2].substring(0, i - 2); 
latsecond = nmea[2].substring(i - 2).toFloat(); 
} 
} 
latsecond = latsecond / 60; 
String CalcLat = ""; 
 
char charVal[9]; 
dtostrf(latsecond, 4, 6, charVal); 
for (int i = 0; i < sizeof(charVal); i++) 
{ 
CalcLat += charVal[i]; 
} 
latfirst += CalcLat.substring(1); 
latfirst = posneg += latfirst; 
return latfirst; 
} 
 
String ConvertLng() { 
String posneg = ""; 
if (nmea[5] == "W") { 
posneg = "-"; 
} 
 
String lngfirst; 
float lngsecond; 
for (int i = 0; i < nmea[4].length(); i++) { 
if (nmea[4].substring(i, i + 1) == ".") { 
lngfirst = nmea[4].substring(0, i - 2); 
//Serial.println(lngfirst); 
lngsecond = nmea[4].substring(i - 2).toFloat(); 
//Serial.println(lngsecond); 
 
} 
} 
lngsecond = lngsecond / 60; 
String CalcLng = ""; 
char charVal[9]; 
dtostrf(lngsecond, 4, 6, charVal); 
for (int i = 0; i < sizeof(charVal); i++) 
{ 
CalcLng += charVal[i]; 
} 
lngfirst += CalcLng.substring(1); 
lngfirst = posneg += lngfirst; 
return lngfirst; 
 
 
 
 
 
 
 
 
  float h = dht.readHumidity(); 
  float t = dht.readTemperature(); 
  float f = dht.readTemperature(true); 
  if (isnan(h) || isnan(t) || isnan(f)) { 
    Serial.println("無法從DHT傳感器讀取!   "); 
    return; 
  } 
  Serial.println(); 
  Serial.print("濕度: "); 
  Serial.print(h); 
  Serial.println("%\t"); 
  Serial.print("攝氏溫度: "); 
  Serial.print(t); 
  Serial.println("*C\t"); 
  Serial.print("華氏溫度: "); 
  Serial.print(f); 
  Serial.println("*F\n"); 
 
  delay(3000); 
 { 
value= analogRead(AOUTpin);//reads the analaog value from the alcohol sensor's AOUT pin 
limit= digitalRead(DOUTpin);//reads digital value from the alcohol sensor's DOUT pin 
Serial.print("酒精值 "); 
Serial.println(value);//prints the alcohol value 
Serial.print("Limit: "); 
Serial.print(limit);//prints the limit reached as either LOW or HIGH (above or underneath) 
delay(2000); 
 
 
if (limit == HIGH){ 
digitalWrite(ledPin, HIGH);//if limit has been reached, LED turns on as status indicator 
} 
else{ 
digitalWrite(ledPin, LOW);//if threshold not reached, LED remains off 
 
} 
 } 
 
 
} |