#include <TinyGPS++.h>
#include <stdlib.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <JY901.h>
#include <SPI.h>
#include <SD.h>
File myfile;
float angle1,angle2;
byte buffer1[5],buffer2[5];
unsigned int t0,t1,velocity,velocitykmhr,location1,location2;
float ax1,ay1,az1,vx1,vy1,vz1,vx11,vy11,vz11,v,v_final,t;
int x=0,y=0;
unsigned int FS,RS,FRS,RRS,FS1,FS2,FS3,FS4,RS1,RS2,RS3,RS4,FRS1,FRS2,RRS1,RRS2;
SoftwareSerial ss(11,10);////Tx:51,Rx:50
TinyGPSPlus gps;
void setup() {
Serial.begin(9600);
Serial1.begin(9600);//JY901
Serial2.begin(9600);//CAR1
Serial3.begin(9600);//CAR2
JY901.StartIIC();
ss.begin(9600);
pinMode(53,OUTPUT);
if (SD.begin()) {
Serial.println("initialization done!");
}
else{
Serial.println("initialization failed.");
return;
}
}
void loop() {
t0=millis();
if(Serial3.available()>0 or Serial2.available()>0 or Serial1.available()>0 or ss.available()>0 ){
//Serial.println(ss.read());
///////GPS/////
if(gps.encode(char)ss.read()){
velocity=gps.speed.mps();///m per s
velocitykmhr=gps.speed.kmph();///km per hr
location1=gps.location.lat();
location2=gps.location.lng();
Serial.println("==========================");
Serial.println(location1);
Serial.println(location2);
}
Serial2.readBytes(buffer2,5);
Serial3.readBytes(buffer1,5);
if(buffer1[0]==0xEE and buffer2[0]==0xEE){
Serial.println("CAR2 Refspeed:");
Serial.print(buffer1[1], HEX);
Serial.println(buffer1[2], HEX);
RRS1=buffer1[1]<<8;
RRS2=buffer1[2]&0xFF;
RRS=RRS1+RRS2;
Serial.println("CAR2 Speed:");
Serial.print(buffer1[3], HEX);
Serial.println(buffer1[4], HEX);
RS1=buffer1[3]<<8;
RS2=buffer1[4]&0xFF;
RS=RS1+RS2;
Serial.println("CAR1 Refspeed:");
Serial.print(buffer2[1], HEX);
Serial.println(buffer2[2], HEX);
FRS1=buffer2[1]<<8;
FRS2=buffer2[2]&0xFF;
FRS=FRS1+FRS2;
Serial.println("CAR1 Speed:");
Serial.print(buffer2[3], HEX);
Serial.println(buffer2[4], HEX);
FS1=buffer2[3]<<8;
FS2=buffer2[4]&0xFF;
FS=FS1+FS2;
/////JY901 (SDA-SCL)/////(for angle1)
JY901.GetAcc();
JY901.GetGyro();
JY901.GetAngle();
angle1=JY901.stcGyro.w[2];///z axis = yaw = steering angle
angle1=angle1/32768*2000;
if(angle1<0)
angle1=-angle1;
/////JY901/////(for angle2)
JY901.CopeSerialData(Serial1.read());
angle2=JY901.stcAngle.Angle[1];/// y axis = roll = camber angle
angle2=angle2/32768*180;
if(angle2<0)
angle2=-angle2;
}
else{
if(x<7;x++)
{
buffer1[x] = 0;
}
if(y<7;y++)
{
buffer2[y] = 0;
}
}
myfile = SD.open("test.txt", FILE_WRITE);
myfile.print(location1);
myfile.print(",");
myfile.print(location2);
myfile.print(",");
myfile.print(RS);
myfile.print(",");
myfile.print(RRS);
myfile.print(",");
myfile.print(FRS);
myfile.print(",");
myfile.print(FS);
myfile.print(",");
myfile.print(velocitykmhr);
myfile.print(",");
myfile.print(angle1);
myfile.print(",");
myfile.print(angle2);
}
myfile.close();
}
Thanks for your reply!!