Hello,
I try to combine GPS shield with Biometric collecting data shield and Arduino uno together just like attached photo. But now it seems not work as a whole. The codes are below. I now want to collect biometric data like pulse and Oxygen in Blood, temperature, and airflow also with GPS data.The libraries come from different resources and components were bought from different seller. And the photo is about error when I click verify.
I should mention that the GPS and E-health work with UNO very well when I individually put them on UNO to test .
This is the error
SoftwareSerial\SoftwareSerial.cpp.o: In function
__vector_5': C:\Program Files (x86)\Arduino\libraries\SoftwareSerial/SoftwareSerial.cpp:319: multiple definition of__vector_5'
PinChangeInt\PinChangeInt.cpp.o:C:\Program Files
(x86)\Arduino\libraries\PinChangeInt/PinChangeInt.cpp:163: first defined here
Thanks for you help.
#include <eHealth.h>
#include <eHealthDisplay.h>
#include <PinChangeInt.h>
#include <PinChangeIntConfig.h>
#include <SoftwareSerial.h>
#include <TinyGPS.h>
int cont=0;
TinyGPS gps;
SoftwareSerial dline_gps(2, 3);
void getgps(TinyGPS &gps);
void setup(){
Serial.begin(115200);
//delay(1000);
eHealth.initPulsioximeter();
dline_gps.begin(4800);
//Attach the inttruptions for using the pulsioximeter.
PCintPort::attachInterrupt(6, readPulsioximeter, RISING);
}
void loop(){
//readPulsioximeter();
Serial.print("PRbpm : ");
Serial.println(eHealth.getBPM());
Serial.print(" %SPo2 : ");
Serial.println( eHealth.getOxygenSaturation());
//Serial.print("\n");
Serial.println("=============================");
delay(1000);
getTemperature();
delay(1000);
getAirFlow();
//delay(1000);
while(dline_gps.available()) // While there is data on the RX pin...
{
int c = dline_gps.read(); // load the data into a variable...
if(gps.encode(c)) // if there is a new valid sentence...
{
getgps(gps); // then grab the data.
}
}
}
//Include always this code when using the pulsioximeter sensor
//=========================================================================
void readPulsioximeter(){
cont ++;
if (cont == 50) { //Get only of one 50 measures to reduce the latency
eHealth.readPulsioximeter();
cont = 0;
}
}
void getTemperature(){
float temperature = eHealth.getTemperature();
Serial.print("Temperature (ºC): ");
Serial.print(temperature, 2);
Serial.println("");
}
void getAirFlow(){
for(int i=0; i<5; i++){
int air = eHealth.getAirFlow();
eHealth.airFlowWave(air);
delay(1000);
}
Serial.print("\n");
}
void getgps(TinyGPS &gps)
{
// To get all of the data into varialbes that you can use in your code,
// all you need to do is define variables and query the object for the
// data. To see the complete list of functions see keywords.txt file in
// the TinyGPS and NewSoftSerial libs.
// Define the variables that will be used
float latitude, longitude;
// Then call this function
gps.f_get_position(&latitude, &longitude);
// You can now print variables latitude and longitude
Serial.print("Lat/Long: ");
Serial.print(latitude,5);
Serial.print(", ");
Serial.println(longitude,5);
// Same goes for date and time
int year;
byte month, day, hour, minute, second, hundredths;
gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths);
// Print data and time
Serial.print("Date: "); Serial.print(month, DEC); Serial.print("/");
Serial.print(day, DEC); Serial.print("/"); Serial.print(year);
Serial.print(" Time: "); Serial.print(hour, DEC); Serial.print(":");
Serial.print(minute, DEC); Serial.print(":"); Serial.print(second, DEC);
Serial.print("."); Serial.println(hundredths, DEC);
//Since month, day, hour, minute, second, and hundr
// Here you can print the altitude and course values directly since
// there is only one value for the function
Serial.print("Altitude (meters): "); Serial.println(gps.f_altitude());
// Same goes for course
Serial.print("Course (degrees): "); Serial.println(gps.f_course());
// And same goes for speed
Serial.print("Speed(kmph): "); Serial.println(gps.f_speed_kmph());
// Serial.println();
// Here you can print statistics on the sentences.
unsigned long chars;
unsigned short sentences, failed_checksum;
gps.stats(&chars, &sentences, &failed_checksum);
//Serial.print("Failed Checksums: ");Serial.print(failed_checksum);
//Serial.println(); Serial.println();
}
In the photo, the top one is E-health, the middle one is GPS, and the bottom one is Ardunio.
