|
楼主 |
发表于 2014-11-12 22:16:24
|
显示全部楼层
带记忆、能校时,gps不接也行
- #include <MemoryFree.h>
-
- #include <LiquidCrystal.h>
- LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
- #include <SoftwareSerial.h>
- SoftwareSerial gps(8, 9);
- char tempx[17];
- char GPRMC[80];
- char GPGGA[80];
- int gpschangertest;
- boolean gpschanger;
- int weiduA;
- unsigned long weiduB,weiduC;
- int jingduA;
- unsigned long jingduB,jingduC;
- boolean GPGGAget=0;
- boolean GPRMCget=0;
- unsigned long gpstimes;
- boolean konghangpanduan;
- boolean gpsshuchuqiehuanB;
- int jsq1=0;
- int jsq2=0;
- int jsq3=0;
- int jsq4=0;
- int jsq5=0;
- int jsq6=0;
- int jsq7=0;
- int GPGGAlong=0;
- int GPRMClong=0;
- boolean jiaoyanjieguoA,jiaoyanjieguoC;
- float sudu;
- String jianyan="";
- int yihuoyunsuan;
- boolean dingweiok=0;
- boolean gpsxianguangA=0;
- boolean fangzhilianji=1;
- int lcdxianshi=0;
- /*---------------------GPS end---------------------------------*/
- int gpsshuchuqiehuanA;
-
- #include<EEPROM.h>
- int EEPROMvalue;
-
-
-
- const int chipSelect = 10;
-
- char TrackB0[8]="-0000.0";
- char TrackB1[11]="00.0000000";
- char TrackB2[12]="000.0000000";
- char TrackB4[20]="2000-00-00T00:00:00";
- char TrackB5[8]="0000.00";
- char TrackB6[7]="000.00";
-
- boolean weiduxuweitiao=0;
- boolean jingduxuweitiao=0;
- int weiduzhanwei,jingduzhanwei;
-
- int utc8s,utc8f,utc8m,utc8n,utc8y,utc8r;
- int xiaoyue[5]={4,6,9,11};
- boolean rijinwei,yuejinwei,nianjinwei,xiaoyueok;
- unsigned long fentodu;
- #include <OneWire.h>
- #include <DallasTemperature.h>
- OneWire oneWire(10);
- DallasTemperature sensors(&oneWire);
- #include <dht11.h>
- dht11 DHT11;
- #define DHT11PIN 11
- #include <Wire.h>
- #include <RTClib.h>
- void printDateTime(DateTime dateTime);
- RTC_DS1307 RTC;
- int nian,yue,ri,shi,fen,miao;
- boolean shoushiqidong;
- int gp2y1010dust=2;
- int gp2y1010led=15;
- int dustVal=0;
- int delayTime=280;
- int delayTime2=40;
- float offTime=9680;
- int dusti=0;
- float dustValPM25,averagedustVal;
- int AQI;
- int mySensVals [10];
- unsigned long time1=millis();
- void setup() {
- pinMode(gp2y1010led,OUTPUT);
- lcd.begin(16, 2);
-
- Wire.begin();
- RTC.begin();
- pinMode(12,INPUT);
- pinMode(14,INPUT);
-
-
-
- Serial.begin(9600);
- gps.begin(9600);
-
- EEPROMvalue= EEPROM.read(0);
- if(EEPROMvalue==0)gpsshuchuqiehuanB=0;
- else gpsshuchuqiehuanB=1;
-
- EEPROMvalue= EEPROM.read(10);
- if(EEPROMvalue==0)lcdxianshi=0;
- else if(EEPROMvalue==1)lcdxianshi=1;
- else if(EEPROMvalue==2)lcdxianshi=2;
- else if(EEPROMvalue==3)lcdxianshi=3;
- else {
- EEPROM.write(10,0);
- lcdxianshi=0;
- }
-
-
- }
- void loop() {
- if(lcdxianshi<3)ruanchuankou();
- else{
- fenchentou();
-
- sensors.requestTemperatures();
-
- jsq1=sensors.getTempCByIndex(0);
-
- DHT11.read(DHT11PIN);
-
- jsq2=DHT11.humidity;
-
- for(int col=0;col<16;col++)tempx[col]=0;
-
- DS1307tiquxiaodui();
-
-
-
- jsq3=jsq2*0.1;
- tempx[0] = jsq3+48;
- jsq3=jsq2%10;
- tempx[1] = jsq3+48;
-
- tempx[2]='%';
- tempx[3]=32;
-
-
- jsq3=jsq1*0.1;
- tempx[4] = jsq3+48;
- jsq3=jsq1%10;
- tempx[5] = jsq3+48;
- tempx[6]='C';
- tempx[7]=32;
-
- }
- if(millis()-gpstimes>10 && !konghangpanduan){
- konghangpanduan=1;
- gpsxianguangA=1;
-
- }
- if(gpsxianguangA && lcdxianshi<3){
- gpsxianguangA=0;
- gpsdechuli();
- if(!gpsshuchuqiehuanB){
- Serial.println(GPGGA);
- Serial.println(GPRMC);
- Serial.print("freeMemory=");
- Serial.println(freeMemory());
- Serial.println();
- }
- if(jiaoyanjieguoA)jiexiGPGGA();
- if(jiaoyanjieguoC){
- jiexiGPRMC();
-
- if(dingweiok && gpschanger) {
- gpschanger=0;
- }
- }
-
- now1602out();
-
- for(int col=0;col<80;col++)GPRMC[col]=0;
- for(int col=0;col<80;col++)GPGGA[col]=0;
- for(int col=0;col<16;col++)tempx[col]=0;
- jsq1=0;
- GPGGAget=0;
- GPRMCget=0;
- gpstimes=millis();
- }
-
-
- gpsshuchuqiehuanA =digitalRead(12);
- if (gpsshuchuqiehuanA==HIGH && fangzhilianji){
- fangzhilianji=0;
- gpstimes=millis();
- gpsshuchuqiehuanB=!gpsshuchuqiehuanB;
- EEPROM.write(0,gpsshuchuqiehuanB);
-
- }else if(gpsshuchuqiehuanA==HIGH)gpstimes=millis();
-
-
- gpsshuchuqiehuanA =digitalRead(14);
- if (gpsshuchuqiehuanA==HIGH && fangzhilianji){
-
- fangzhilianji=0;
- gpstimes=millis();
- if(!dingweiok){
-
- if(lcdxianshi<3)lcdxianshi=3;
- else lcdxianshi=0;
-
- }else lcdxianshi++;
-
- lcdxianshi=lcdxianshi%4;
- EEPROM.write(10,lcdxianshi);
- }else if(gpsshuchuqiehuanA==HIGH)gpstimes=millis();
-
- if(millis()-gpstimes>450 && !fangzhilianji){
- gpstimes=millis();
- fangzhilianji=1;
- }
-
-
-
- if(lcdxianshi==3) now1602out();
-
-
-
- }
- void fenchentou()
- {
- if (millis() - time1 > 1000){
- time1=millis();
-
- /*粉尘头控制代码*/
- digitalWrite(gp2y1010led,LOW);
- delayMicroseconds(delayTime);
- dustVal=analogRead(gp2y1010dust);
- delayMicroseconds(delayTime2);
- digitalWrite(gp2y1010led,HIGH);
-
- /*邻采样10次平均averagedustVal的计算*/
- mySensVals [dusti]=dustVal;
- dusti++;
- dusti=dusti%10;
- averagedustVal=0;
- for(int col=0;col<10;col++)averagedustVal=averagedustVal+mySensVals[col];
- averagedustVal=averagedustVal*0.1;
-
-
-
- /*计算pm2.5的数值 电压阀值以上用:(v*0.172-0.0999)*1000,阀值以下用线性,参考国外帖子,认为输出最低17,对应粉尘5000*/
-
-
- if(averagedustVal>184.5)dustValPM25=0.83984375*averagedustVal-99.9;
- else dustValPM25=averagedustVal*0.298373984;
-
-
- /*AQI的计算,美国标准*/
-
- if(dustValPM25<15.4) AQI=(50-0)/(15.4-0)*(dustValPM25-0)+0;
- else if(dustValPM25<40.4) AQI=(100-51)/(40.4-15.5)*(dustValPM25-15.5)+51;
- else if(dustValPM25<65.4) AQI=(150-101)/(65.4-40.5)*(dustValPM25-40.5)+101;
- else if(dustValPM25<150.4) AQI=(200-151)/(150.4-65.5)*(dustValPM25-65.5)+151;
- else if(dustValPM25<250.4) AQI=(300-201)/(250.4-150.5)*(dustValPM25-150.5)+201;
- else if(dustValPM25<350.4) AQI=(400-301)/(350.4-250.5)*(dustValPM25-250.5)+301;
- else AQI=(500-401)/(500.4-350.5)*(dustValPM25-350.5)+401;
-
-
- lcd.setCursor(0, 0);
- lcd.print(dustValPM25);
- lcd.print("ug AQI:");
- lcd.print(AQI);
- lcd.print(" ");
-
- }
-
-
-
- if (millis() < time1){
- time1=millis();
- }
- }
- void ruanchuankou()
- {
- while (gps.available() > 0) {
- gpstimes=millis();
- konghangpanduan=0;
- if(GPRMCget){
- GPRMC[jsq1]=gps.read();
- if(gpsshuchuqiehuanB)Serial.print(GPRMC[jsq1]);
- if(GPRMC[jsq1-3]=='*'){
- GPRMClong=jsq1;
- GPRMCget=0;
- jsq1=0;
- }else if(jsq1<79)jsq1++;
- }else if(GPGGAget){
- GPGGA[jsq1]=gps.read();
- if(gpsshuchuqiehuanB)Serial.print(GPGGA[jsq1]);
- if(GPGGA[jsq1-3]=='*'){
- GPGGAlong=jsq1;
- GPGGAget=0;
- jsq1=0;
- }else if(jsq1<79)jsq1++;
- }else{
- tempx[jsq1]=gps.read();
- if(gpsshuchuqiehuanB)Serial.print(tempx[jsq1]);
- if(jsq1<6)jsq1++;
- }
- if(jsq1==6){
-
-
- if(tempx[4]=='M' && tempx[5]=='C'){
- GPRMCget=1;
- GPGGAget=0;
- for(int col=0;col<6;col++)GPRMC[col]=tempx[col];
- for(int col=0;col<6;col++)tempx[col]=0;
- }else if(tempx[jsq1-2]=='G' && tempx[jsq1-1]=='A'){
- GPGGAget=1;
- GPRMCget=0;
- for(int col=0;col<6;col++)GPGGA[col]=tempx[col];
- for(int col=0;col<6;col++)tempx[col]=0;
- }else{
- for(int col=0;col<5;col++)tempx[col]=tempx[col+1];
- jsq1=5;
- }
-
- }
- }
- }
-
- void gpsdechuli()
- {
- for(int col=1;col<GPRMClong-3;col++){
- if(col==1)yihuoyunsuan=GPRMC[col];
- else yihuoyunsuan=yihuoyunsuan ^ GPRMC[col];
- }
- if(yihuoyunsuan==0){
- jianyan="00";
- }else if(yihuoyunsuan>15){
- jianyan = String(yihuoyunsuan,HEX);
- }else{
- jianyan = "0";
- jianyan += String(yihuoyunsuan,HEX);
- }
- jianyan.toUpperCase();
- if(jianyan[0]==GPRMC[GPRMClong-2] && jianyan[1]==GPRMC[GPRMClong-1] ){
- jiaoyanjieguoC=1;
- }else{
- jiaoyanjieguoC=0;
- }
- jianyan="";
- for(int col=1;col<GPGGAlong-3;col++){
- if(col==1)yihuoyunsuan=GPGGA[col];
- else yihuoyunsuan=yihuoyunsuan ^ GPGGA[col];
- }
- if(yihuoyunsuan==0){
- jianyan="00";
- }else if(yihuoyunsuan>15){
- jianyan = String(yihuoyunsuan,HEX);
- }else{
- jianyan = "0";
- jianyan += String(yihuoyunsuan,HEX);
- }
- jianyan.toUpperCase();
- if(jianyan[0]==GPGGA[GPGGAlong-2] && jianyan[1]==GPGGA[GPGGAlong-1] ){
- jiaoyanjieguoA=1;
- }else{
- jiaoyanjieguoA=0;
- }
- jianyan="";
- }
-
-
- void jiexiGPGGA()
- {
-
- jsq2=0;
- jsq3=0;
- jsq4=0;
- jsq5=0;
- for(int col=1;col<GPGGAlong-3;col++){
- if(GPGGA[col]==',')jsq2++;
- if(jsq2==10){
- jsq3=col;
- col=GPGGAlong-3;
- }
-
-
- if(jsq2<9)jsq4=col;
-
- if(jsq2<7)jsq5=col;
-
- }
-
-
- if(GPGGA[jsq5]==49)dingweiok=1;
- else dingweiok=0;
-
-
- for(int col=0;col<8;col++)TrackB0[col]=0;
- memcpy(TrackB0,GPGGA+jsq4+2, jsq3-jsq4-2);
-
- }
-
-
- void jiexiGPRMC()
- {
-
- jsq2=0;
- jsq3=0;
- jsq4=0;
- jsq5=0;
- jsq6=0;
- jsq7=0;
-
- for(int col=1;col<GPRMClong-3;col++){
- if(GPRMC[col]==',')jsq2++;
- if(jsq2==9){
- jsq3=col;
- col=GPRMClong-3;
- }
-
- if(jsq2<8)jsq4=col;
- if(jsq2<6)jsq5=col;
- if(jsq2<4)jsq6=col;
- if(jsq2<2)jsq7=col;
- }
-
-
- if(GPRMC[jsq7+2]=='A')chinatime();
-
-
- if(dingweiok){
- jingweiduchuli();
- hangxiangyusudu();
-
- }else {
- weiduA=0;
- weiduB=0;
- weiduC=0;
- jingduA=0;
- jingduB=0;
- jingduC=0;
- }
-
-
- }
-
-
- void chinatime()
- {
-
-
- jianyan = String(GPRMC[7]);
- jianyan += GPRMC[8];
- utc8s=jianyan.toInt()+8;
-
-
- if(utc8s>23)rijinwei=1;
- utc8s=utc8s%24;
- jianyan = String(GPRMC[9]);
- jianyan += GPRMC[10];
- utc8f=jianyan.toInt();
-
-
- jianyan = String(GPRMC[11]);
- jianyan += GPRMC[12];
- utc8m=jianyan.toInt();
-
-
-
- jianyan = String(GPRMC[jsq3+1]);
- jianyan += GPRMC[jsq3+2];
- utc8r=jianyan.toInt();
-
-
-
- jianyan = String(GPRMC[jsq3+3]);
- jianyan += GPRMC[jsq3+4];
- utc8y=jianyan.toInt();
-
-
- jianyan = String(GPRMC[jsq3+5]);
- jianyan += GPRMC[jsq3+6];
- utc8n=jianyan.toInt();
-
-
-
-
- if(rijinwei){
- if(utc8y==2 && utc8r==28){
- if(utc8n % 400 == 0 || utc8n % 100 != 0 && utc8n % 4 == 0)utc8r=29;
- else {
- utc8r=1;
- yuejinwei=1;
- }
- }else{
- for(int col=0;col<4;col++){
- if(xiaoyue[col]==utc8y)xiaoyueok=1;
- }
- if(xiaoyueok && utc8r==30){
- utc8r=1;
- yuejinwei=1;
- }else if(!xiaoyueok && utc8r==31){
- utc8r=1;
- yuejinwei=1;
- }else{
- utc8r++;
- }
- }
- }
- if(yuejinwei && utc8y==12){
- utc8y=1;
- nianjinwei=1;
- }else if(yuejinwei){
- utc8y++;
- }
- if(nianjinwei)utc8n++;
-
-
-
- for(int col=0;col<16;col++)tempx[col]=0;
- if(utc8n>9){
- sprintf(tempx, "%d", utc8n);
- memcpy(TrackB4+2,tempx, 2);
- }else{
- TrackB4[2]=48;
- TrackB4[3]=utc8n+48;
-
- }
-
- for(int col=0;col<16;col++)tempx[col]=0;
- if(utc8y>9){
- sprintf(tempx, "%d", utc8y);
- memcpy(TrackB4+5,tempx, 2);
- } else{
- TrackB4[5]=48;
- TrackB4[6]=utc8y+48;
-
- }
- for(int col=0;col<16;col++)tempx[col]=0;
- if(utc8r>9){
- sprintf(tempx, "%d", utc8r);
- memcpy(TrackB4+8,tempx, 2);
- }else{
- TrackB4[8]=48;
- TrackB4[9]=utc8r+48;
-
- }
-
- for(int col=0;col<16;col++)tempx[col]=0;
- if(utc8s>9){
- sprintf(tempx, "%d", utc8s);
- memcpy(TrackB4+11,tempx, 2);
- }else{
- TrackB4[11]=48;
- TrackB4[12]=utc8s+48;
-
- }
- for(int col=0;col<16;col++)tempx[col]=0;
- if(utc8f>9){
- sprintf(tempx, "%d", utc8f);
- memcpy(TrackB4+14,tempx, 2);
- }else{
- TrackB4[14]=48;
- TrackB4[15]=utc8f+48;
- }
-
- for(int col=0;col<16;col++)tempx[col]=0;
- if(utc8m>9){
- sprintf(tempx, "%d", utc8m);
- memcpy(TrackB4+17,tempx, 2);
- }else{
- TrackB4[17]=48;
- TrackB4[18]=utc8m+48;
- }
-
-
- }
-
- void jingweiduchuli()
- {
-
-
- for(int col=0;col<16;col++)tempx[col]=0;
- memcpy(tempx,GPRMC+jsq7+4, 2);
- jianyan =tempx;
- gpschangertest=jianyan.toInt();
- if(weiduA!=gpschangertest){
- weiduA=gpschangertest;
- gpschanger=1;
- }
-
-
- if(GPRMC[jsq6+2]==83)weiduxuweitiao=1;
- if(GPRMC[jsq5+2]==87)jingduxuweitiao=1;
-
-
- memcpy(TrackB1,GPRMC+jsq7+4, 2);
-
- if(gpschangertest<10) {
- TrackB1[0]=32;
- weiduzhanwei=1;
- }else weiduzhanwei=2;
-
-
- for(int col=0;col<16;col++)tempx[col]=0;
-
- memcpy(tempx,GPRMC+jsq7+6, 2);
- jianyan =tempx;
- gpschangertest=jianyan.toInt();
- if(weiduB!=gpschangertest){
- weiduB=gpschangertest;
- gpschanger=1;
- }
-
-
-
- for(int col=0;col<16;col++)tempx[col]=0;
-
- memcpy(tempx,GPRMC+jsq7+9, 4);
- if(jsq6-jsq7==12) memcpy(tempx,GPRMC+jsq7+9, 4);
- else if(jsq6-jsq7==13)memcpy(tempx,GPRMC+jsq7+9, 5);
-
-
- jianyan =tempx;
- gpschangertest=jianyan.toInt();
- if(weiduC!=gpschangertest){
- weiduC=gpschangertest;
- gpschanger=1;
- }
-
- fentodu=weiduB*100000+weiduC*10;
- fentodu=fentodu/6;
-
- for(int col=0;col<16;col++)tempx[col]=0;
- dtostrf(fentodu,6,0,tempx);
-
-
- if(fentodu>99999){
- memcpy(TrackB1+3,tempx, 6);
- }else if(fentodu>9999){
- TrackB1[3]=48;
- memcpy(TrackB1+4,tempx, 5);
- }else if(fentodu>999){
- TrackB1[3]=48;
- TrackB1[4]=48;
- memcpy(TrackB1+5,tempx, 4);
-
- }else if(fentodu>99){
- TrackB1[3]=48;
- TrackB1[4]=48;
- TrackB1[5]=48;
- memcpy(TrackB1+6,tempx, 3);
-
- }else if(fentodu>9){
- TrackB1[3]=48;
- TrackB1[4]=48;
- TrackB1[5]=48;
- TrackB1[6]=48;
- memcpy(TrackB1+7,tempx, 2);
- }else{
- TrackB1[3]=48;
- TrackB1[4]=48;
- TrackB1[5]=48;
- TrackB1[6]=48;
- TrackB1[7]=48;
- memcpy(TrackB1+8,tempx, 1);
-
- }
-
-
-
-
- if(weiduxuweitiao){
- weiduxuweitiao=0;
-
- if(weiduzhanwei==2){
-
-
- for(int col=0;col<16;col++)tempx[col]=0;
- tempx[0]=45;
- memcpy(tempx+1,TrackB1, 9);
- memcpy(TrackB1,tempx, 10);
-
- }else{
-
- TrackB1[0]=45;
-
- }
-
- }
-
-
-
-
- for(int col=0;col<16;col++)tempx[col]=0;
-
- memcpy(tempx,GPRMC+jsq6+4, 3);
- jianyan =tempx;
- gpschangertest=jianyan.toInt();
- if(jingduA!=gpschangertest){
- jingduA=gpschangertest;
- gpschanger=1;
- }
-
-
-
-
- memcpy(TrackB2,GPRMC+jsq6+4, 3);
- jingduzhanwei=3;
-
- if(gpschangertest<100) {
- TrackB2[0]=32;
- jingduzhanwei=2;
- }
-
- if(gpschangertest<10) {
- TrackB2[1]=32;
- jingduzhanwei=1;
- }
-
- for(int col=0;col<16;col++)tempx[col]=0;
-
- memcpy(tempx,GPRMC+jsq6+7, 3);
- jianyan =tempx;
- gpschangertest=jianyan.toInt();
- if(jingduB!=gpschangertest){
- jingduB=gpschangertest;
- gpschanger=1;
- }
-
- for(int col=0;col<16;col++)tempx[col]=0;
-
- if(jsq5-jsq6==13)memcpy(tempx,GPRMC+jsq6+10, 4);
- else if(jsq5-jsq6==14)memcpy(tempx,GPRMC+jsq6+10, 5);
-
- jianyan =tempx;
- gpschangertest=jianyan.toInt();
- if(jingduC!=gpschangertest){
- jingduC=gpschangertest;
- gpschanger=1;
- }
-
- jianyan="";
-
- fentodu=jingduB*100000+jingduC*10;
- fentodu=fentodu/6;
-
- for(int col=0;col<16;col++)tempx[col]=0;
- dtostrf(fentodu,6,0,tempx);
-
-
-
- if(fentodu>99999){
- memcpy(TrackB2+4,tempx, 6);
- }else if(fentodu>9999){
- TrackB2[4]=48;
- memcpy(TrackB2+5,tempx, 5);
- }else if(fentodu>999){
- TrackB2[4]=48;
- TrackB2[5]=48;
- memcpy(TrackB2+6,tempx, 4);
-
- }else if(fentodu>99){
- TrackB2[4]=48;
- TrackB2[5]=48;
- TrackB2[6]=48;
- memcpy(TrackB2+7,tempx, 3);
-
- }else if(fentodu>9){
- TrackB2[4]=48;
- TrackB2[5]=48;
- TrackB2[6]=48;
- TrackB2[7]=48;
- memcpy(TrackB2+8,tempx, 2);
- }else{
- TrackB2[4]=48;
- TrackB2[5]=48;
- TrackB2[6]=48;
- TrackB2[7]=48;
- TrackB2[8]=48;
- memcpy(TrackB2+9,tempx, 1);
-
- }
-
-
-
-
- if(jingduxuweitiao){
- jingduxuweitiao=0;
-
- if(jingduzhanwei==3){
-
-
- for(int col=0;col<16;col++)tempx[col]=0;
- tempx[0]=45;
- memcpy(tempx+1,TrackB2, 10);
- memcpy(TrackB2,tempx, 11);
-
- }else if(jingduzhanwei==2){
-
- TrackB2[0]=45;
-
- }else{
- TrackB2[1]=45;
- }
-
- }
-
-
- }
-
-
- void hangxiangyusudu()
- {
-
- for(int col=0;col<16;col++)tempx[col]=0;
- memcpy(tempx,GPRMC+jsq5+4,jsq4-jsq5-3);
- for(int col=0;col<jsq4-jsq5-3;col++){
- if(tempx[col]==46){
- if(col==1)fentodu=(tempx[0]-48)*1000;
- else if(col==2)fentodu=(tempx[0]-48)*10000+(tempx[1]-48)*1000;
- else if(col==3)fentodu=(tempx[0]-48)*100000+(tempx[1]-48)*10000+(tempx[2]-48)*1000;
- if(jsq4-jsq5-col==5)fentodu=fentodu+(tempx[col+1]-48)*100;
- else if(jsq4-jsq5-col==6)fentodu=fentodu+(tempx[col+1]-48)*100+(tempx[col+2]-48)*10;
- else if(jsq4-jsq5-col==7)fentodu=fentodu+(tempx[col+1]-48)*100+(tempx[col+2]-48)*10+tempx[col+3]-48;
-
- fentodu=fentodu*1852*0.0001;
- col=jsq4-jsq5-3;
- }
- }
- sudu=fentodu*0.01;
- for(int col=0;col<8;col++)TrackB5[col]=0;
- dtostrf(sudu,1,2,TrackB5);
-
- for(int col=0;col<7;col++)TrackB6[col]=0;
- memcpy(TrackB6,GPRMC+jsq4+2, jsq3-jsq4-2);
-
-
- }
-
-
- void printDateTime(DateTime dateTime) {
-
- nian=dateTime.year(), DEC;
-
-
- yue=dateTime.month(), DEC;
-
- ri=dateTime.day(), DEC;
-
- shi=dateTime.hour(), DEC;
-
- fen=dateTime.minute(), DEC;
-
- miao=dateTime.second(), DEC;
-
-
- }
-
-
- void DS1307tiquxiaodui()
- {
-
-
-
- DateTime now = RTC.now();
-
- printDateTime(now);
- if(dingweiok){
- if(yue != utc8y) shoushiqidong=1;
- if(ri != utc8r) shoushiqidong=1;
- if(shi != utc8s) shoushiqidong=1;
- if(fen != utc8f) shoushiqidong=1;
- if(miao-utc8m>2 || utc8m-miao>2) shoushiqidong=1;
- if(shoushiqidong){
- shoushiqidong=0;
-
- RTC.set(RTC_YEAR, utc8n);
-
- RTC.set(RTC_MONTH, utc8y);
-
- RTC.set(RTC_DAY, utc8r);
-
- RTC.set(RTC_HOUR, utc8s);
-
- RTC.set(RTC_MINUTE, utc8f);
-
- RTC.set(RTC_SECOND, utc8m);
- }
- }
- /*
- jsq3=nian*0.1;
- jsq3=jsq3%10;
- temp2[7] = jsq3+48, DEC;
- jsq3=nian%10;
- temp2[8] = jsq3+48, DEC;
-
-
- jsq3=yue*0.1;
- temp2[10] = jsq3+48, DEC;
- jsq3=yue%10;
- temp2[11] = jsq3+48, DEC;
-
-
- jsq3=ri*0.1;
- temp2[13] = jsq3+48, DEC;
- jsq3=ri%10;
- temp2[14] = jsq3+48, DEC;
-
- */
-
- jsq3=shi*0.1;
- tempx[8] = jsq3+48, DEC;
- jsq3=shi%10;
- tempx[9] = jsq3+48, DEC;
- tempx[10]=':';
-
- jsq3=fen*0.1;
- tempx[11] = jsq3+48, DEC;
- jsq3=fen%10;
- tempx[12] = jsq3+48, DEC;
- tempx[13]=':';
-
-
- jsq3=miao*0.1;
- tempx[14]= jsq3+48, DEC;
- jsq3=miao%10;
- tempx[15] = jsq3+48, DEC;
- }
-
-
- void now1602out()
- {
- /*GPS模式下的显示情况说明
- char TrackB0[8]="-0000.0";
- char TrackB1[11]="00.0000000";
- char TrackB2[12]="000.0000000";
- char TrackB4[20]="2000-00-00T00:00:00";
- char TrackB5[8]="0000.00";
- char TrackB6[7]="000.00";
- lcdxianshi=0显示内容如下
- LAT. 00.0000000
- 0123456789012345
- LON. 000.0000000
-
- lcdxianshi=1显示内容如下
- ASL(G): -0000.0M
- 0123456789012345
- YAW(GPS): 000.00
- lcdxianshi=2显示内容如下
- 00-00T00:00:00
- 0123456789012345
- speed:000.00km/h
- I'm so sorry but
- 0123456789012345
- now the GPS lost
- */
- if(!dingweiok && lcdxianshi<3){
- lcd.setCursor(0, 0);
- lcd.print("I'm so sorry but");
- lcd.setCursor(0, 1);
- lcd.print("now the GPS lost");
- }else{
- if(lcdxianshi==0){
- lcd.setCursor(0, 0);
- lcd.print("LAT. ");
- lcd.print(TrackB1);
- lcd.setCursor(0, 1);
- lcd.print("LON. ");
- lcd.print(TrackB2);
-
- }else if(lcdxianshi==1){
- lcd.setCursor(0, 0);
- lcd.print("ASL(G): ");
- lcd.print(TrackB0);
- lcd.print("M ");
- lcd.setCursor(0, 1);
- lcd.print("YAW(GPS): ");
- lcd.print(TrackB6);
- lcd.print(" ");
- }else if(lcdxianshi==2){
- for(int col=0;col<16;col++)tempx[col]=0;
- for(int col=0;col<14;col++)tempx[col]=TrackB4[col+5];
- lcd.setCursor(0, 0);
- lcd.print(" ");
- lcd.print(tempx);
- lcd.setCursor(0, 1);
- lcd.print("speed:");
- lcd.print(TrackB5);
- lcd.print("km/h ");
- }else if(lcdxianshi==3){
- lcd.setCursor(0, 1);
-
-
- lcd.print(tempx);
- }
- }
-
- }
-
-
-
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|