Arduino Mega GPS met LCD en SD logboekregistratie (5 / 9 stap)

Stap 5: Met behulp van de SD-kaart in gps2.ino


Het opzetten van de sd-kaart:

De standaard chip select pin en de werkelijke chipSelect pin moeten worden ingesteld om uit te voeren.

De SD-kaart is toegankelijk met een begin-instructie waarin de pinnen gebruikt door de kaart op het bord van de gps.

De kaart-snelheid is ingesteld op SPI_Full_SPEED.

In het geval van een fout die de led knippert een fout signaal-details in de kop van de schets.

Als foutopsporing is ingesteld op true in config, seriële monitor berichten worden ook verzonden.

Als de kaart vooruitgangsbalk ok de variabele hascard ingesteld op true.

.

Zorg ervoor dat de standaard chip select pin is ingesteld op
uitgang, zelfs als u niet gebruiken:

pinMode(SS,OUTPUT); standaard mega Selecteer pin

pinMode(chipSelect,OUTPUT);

digitalWrite(chipSelect,LOW);

Zie als de kaart aanwezig is en kan worden geïnitialiseerd:

if (!. SD.begin(chipSelect, 11, 12, 13)) {}

if(debug) Serial.println (F ("Card init. mislukt!"));

error(1);

} else {}

Als (! card.init (SPI_FULL_SPEED, chipSelect, 11, 12, 13)) {}

error(2);

if(debug) {}

Serial.println (F ("initialisatie is mislukt. Dingen te controleren: "));

Serial.println (F ("* is een kaart wordt ingevoegd?"));

Serial.println (F ("* klopt uw bedrading?"));

Serial.println (F ("* heb je de pincode van de chipSelect zodat deze overeenkomen met uw schild of module veranderen?"));

}

} else {}

hascard = true;

if(debug) Serial.println (F ("Card init. geslaagd"));

}

}

De SD-bestand te selecteren voor aanmelding:

Wanneer de openfile subroutine rechtse knop is ingedrukt wordt aangeroepen.

Dit inspecteert de map van de gps op zoek naar een ongebruikt bestandsnaam in de reeks GPSLOGnn.TXT, waarbij nn = 0 tot en met 99.

Als een bestand wordt gevonden, stelt u foundit in op true.

Als (! hascard) {terugkeer;} / / ga niet verder als een kaart niet bestaat of niet beschikbaar is

byte i;

char bestandsnaam [18];

strcpy (filename, "/ gps/GPSLOG00. TXT");

bestandsnaam [17] = char(0);

Boole foundit = false;

voor (ik = 0; ik < 100; i ++) {}

bestandsnaam [11] = '0' + i / 10;

bestandsnaam [12] = '0' + i % 10;

if (!. SD.exists(filename)) {}

foundit = true; breken;

}

}

Als alle van de bestandsnamen in gebruik zijn, foundit zullen valse en wordt de gebruiker gevraagd als de eerste 50 moet worden gewist. Als dit niet ok is, is hascard ingesteld op false zodat er kan geen verdere pogingen tot logboekregistratie plaatsvinden.

Als (! foundit) {}
int thisbutton = -1;

LCD.Clear();

LCD.Print ("Dir volledig wissen?");

lcd.setCursor(0,1);

LCD.Print ("Sel:Ok recht: No");

{}

thisbutton = read_LCD_buttons();

} while(thisbutton == btnNONE);

LCD.Clear();

Als (thisbutton == btnSELECT) {}

LCD.Print("deleting");

voor (ik = 0; ik < 50; i ++) {}

bestandsnaam [11] = '0' + i / 10;

bestandsnaam [12] = '0' + i % 10;

Als (SD.exists(filename)) SD.remove(filename);

}

Ik = 0;
bestandsnaam [11] = '0' + i / 10;

bestandsnaam [12] = '0' + i % 10;

} else {}

error(4);

hascard = false;

terugkeer;

}

}

Het bestand kan worden geopend:

In het geval van een fout seriële informatie wordt uitgevoerd en de fout code kenbaar gemaakt via de status geleid.

Als dat lukt, wordt de eerste regel van het bestand uitgevoerd. Dit is de kolomkoppen.

Let op het gebruik van logfile.flush(). Dit zorgt ervoor dat alle uitvoer wordt verzonden naar de SD-bestand voordat u verdergaat.

logfile = SD.open (filename, FILE_WRITE);
Als (! logfile) {}

if(debug) {}

Serial.Print niet kon ("aanmaken");

Serial.println(filename);

}

error(3);

hascard = false;

} else {}

logboekregistratie = true;

MyFile = bestandsnaam;

logfile.println (pad ("Time", 13) + lpad ("datum", 9) + lpad("Longitude",10)
+ lpad("Latitude",10) + lpad("Altitude",9) + "m" + lpad("Geoid",9) + "m" + lpad("Speed",7) + "mph Bearing");

logfile.Flush();

if(debug) {Serial.print ("schrijvend aan'); Serial.println(filename);}

}

.

lpad aan en het stootkussen zijn tekst opvulling functies:

.

String lpad (String temp, byte L) {}
byte mylen = temp.length();

Als (mylen > (L - 1)) terug van temp.substring(0,L-1);

voor (byte ik = 0; ik < (L-mylen); i ++) temp = "" + temp;

retourneren temp;

}

.

String pad (String temp, byte L) {}
byte mylen = temp.length();

Als (mylen > (L - 1)) terug

Temp.substring(0,L-1);

voor (byte ik = 0; ik < (L-mylen); i ++) temp = temp + "";

retourneren temp;

}

.

Schrijven naar het bestand:

De hoofdlus leest de gps en uitgangen de waarden naar een bestand als logboekregistratie plaatsvindt. (Een "L" wordt weergegeven in de rechterbenedenhoek van het LCD-scherm.)

.

De waarden zijn geformatteerd voor het produceren van kolommen met vaste breedte.

.

Functie dtostrf(float,w,dp,buf) is een Arduino library functie die ervoor zorgt dat een float-variabele wordt geconverteerd naar een tekenreeks, breedte w met dp decimaaltekens. BUF is een char-buffer die moet groot genoeg zijn om de conversie.

Ik heb gedefinieerd buf met "char buf [20];" in de kop van de schets.

Het bestand wordt leeggemaakt voordat u verdergaat.

.

ogfile.Print(pad(MyTime,13)); omvat milli-seconden
logfile.Print(pad(myyear,9));

logfile.Print(dtostrf(Longitude,10,5,BUF));

logfile.Print(dtostrf(Latitude,10,5,BUF));

logfile.Print(dtostrf(altitudem,9,1,BUF)); logfile.print ("m");

logfile.Print(dtostrf(GeoID,9,1,BUF)); logfile.Print ("m");

logfile.Print(dtostrf(speedmph,7,2,BUF)); logfile.Print ("mph");

logfile.Print(dtostrf(heading,6,1,BUF)); logfile.println ("deg");

logfile.Flush();

.

Sluiten van het bestand:

Als de kaart niet beschikbaar terugkeer, anders spoel alle resterende uitvoer naar de kaart voordat het bestand wordt gesloten.

ongeldig closefile() {}

Als (! hascard) terugkeer;

logfile.Flush();

logfile.Close();

logboekregistratie = false;

if(debug) Serial.println ("Bestand" MijnBestand + 'gesloten');

}

Gerelateerde Artikelen

Netduino GPS met LCD Display

Netduino GPS met LCD Display

OverzichtIk vond een ongebruikte Netduino V1 kaartje in mijn vak delen dus wilde iets die kon ik draag het te vinden. Het was al aangesloten op een Nokia 5110 LCD display voor een eerder onvoltooide project. Het omhoog het aandrijven, vond ik dat bei
Arduino HC-SR04 (met LCD)

Arduino HC-SR04 (met LCD)

HalloIn deze tutorial ga ik je laten zien hoe 1. De HC-SR04 verbinden met een arduino en afdrukken van de afstand tot de seriële monitor, 2. Verbind een LCD en de resultaten er in plaats daarvan afdrukken. De sensor werkt door pingen een ultrasone ge
Arduino druksensor (FSR) met LCD display

Arduino druksensor (FSR) met LCD display

Dit instructable zal (hopelijk) tonen hoe de bouw van een Arduino gebaseerde druksensor die de gemeten druk op een klein LCD-scherm wordt weergegeven. Ik opgenomen elementen, zowel hardware als software, uit verschillende bronnen (ik zal verstrekken
Arduino Temp/vochtigheid met LCD en webinterface

Arduino Temp/vochtigheid met LCD en webinterface

hielp ik onlangs een client verplaatsen hun kantoor, waaronder de oprichting van een nieuwe computer kamer.Ik wilde dat ze kunnen controleren van de temperatuur en de vochtigheid van de ruimte zowel door het controleren van een LCD-scherm in de kamer
Arduino aangedreven temperatuursensor met LCD Output eerste tijd auteur vermelding

Arduino aangedreven temperatuursensor met LCD Output eerste tijd auteur vermelding

Nooit geweest een kinda man van de wedstrijd, maar ik ging vooruit en ingevuld aan de eerste wedstrijd voor de auteur van de tijd, als u graag mijn intructable of zelfs alleen maar geleerd iets nieuws en denk ik heb verdiend uw stemming doe! =]Hallo
Arduino Joystick Breadboard met LCD uitgang

Arduino Joystick Breadboard met LCD uitgang

wilt kunnen controleren een paar servo's met een duim-joystick? Maar weet niet waar te beginnen?Ik heb geen servo's, maar kan ik u op het juiste spoor over hoe om te dingen wanneer u de analoge stick verplaatst.Dit instructable leert u hoe om uit te
RS485 Seriële communicatie tussen Arduino Mega en Arduino Nano met Visuino

RS485 Seriële communicatie tussen Arduino Mega en Arduino Nano met Visuino

Soms moeten we aansluiten Arduino boards Arduino boards ligt ver weg van elkaar. De RS485 is een zeer handige manier om te verbinden de planken met slechts 2 draden, en kan werken tot een afstand van 1200 m (4000 ft). Het maakt het ook mogelijk meerd
Arduino Mega 8 x 8 x 8 RGB LED Cube

Arduino Mega 8 x 8 x 8 RGB LED Cube

"Dus, u wilt bouwen van een 8 x 8 x 8 RGB LED kubus"Ik been playing rond met elektronica en Arduino van voor een tijdje nu, met inbegrip van de bouw van een hoge amp switch-controller voor mijn auto en een zes lane Pinewood Derby rechter voor on
Goedkope Arduino WiFi schild met ESP8266

Goedkope Arduino WiFi schild met ESP8266

In mijn vorige Instructable heb ik beschreven hoe de ESP-01 module aansluit op een breadboard.Dit is slechts de eerste stap om een goedkope Arduino WiFi schild de ESP8266-module gebruiken. U kunt het met enkele meer elektronische componenten en de Wi
Arduino: Controle Servo met PS2 controller (programma met Visuino)

Arduino: Controle Servo met PS2 controller (programma met Visuino)

In dit Instructable leert u hoe te programmeren van de Arduino te controleren servomotor uit een Play Station 2 controller met behulp van Visuino - een makkelijk te gebruiken grafische ontwikkelomgeving voor Arduino.Houd er rekening mee dat de aantek
Hoe te gebruiken 2.4 inch TFT LCD SPFD5408 met arduino MEGA 2560

Hoe te gebruiken 2.4 inch TFT LCD SPFD5408 met arduino MEGA 2560

Dit instructable zal u tonen hoe het SPFD5408 2.4 Inch LCD-scherm aan de arduino MEGA interfaceStap 1:Stap 2: BibliothekenSommigen van u kunnen hebben gekocht deze LCD-scherm of het denken op het krijgen vaneen. Haar een groot scherm voor het weergev
Hoe te gebruiken 2,4" TFT LCD schild met Arduino Mega

Hoe te gebruiken 2,4" TFT LCD schild met Arduino Mega

Vandaag, ga ik je laten zien dat wij gebruiken 2,4" TFT LCD schild willen (er is mcufriend.com schrijft over dit schild) met Arduino Mega werkt, want het is niet zo makkelijk te lopen van elkaar. Maar met deze instructies kunt u uitvoeren en Wijzig c
Persoonlijke Black Box - Arduino Mega ultieme GPS-schild + LSM303

Persoonlijke Black Box - Arduino Mega ultieme GPS-schild + LSM303

persoonlijke Black Box gebruiken:-Arduino Mega 2560- Ultieme GPS datalogger schild- Triple-axis versnellingsmeter + Magnetometer (LSM303)Ik leerde al snel na de vele moeilijkheden met behulp van de gps-shield met een Arduino Uno, dat ik was ver boven
Afstand meten (en meer) apparaat met behulp van de Arduino en GPS

Afstand meten (en meer) apparaat met behulp van de Arduino en GPS

In mijn vorige Instructable, heb ik liet zien hoe essentiële gegevens ophalen uit een draagbare GPS, Holux M-1000 te converteren van UTC naar lokale tijd.  Vanmorgen (3 november), eindigde de zomertijd.  Ik heb het apparaat ingeschakeld zodra ik wakk