Arduino Mega GPS med LCD och SD loggning (5 / 9 steg)

Steg 5: Använda SD-kort i gps2.ino



Ställa in sd-kortet:

Standard chip Välj stift och den faktiska chipSelect PIN-kod måste anges till utgång.

SD-kortet är tillgängligt med ett begin uttalande som innehåller stiften används av kortet på gps ombord.

Kort hastigheten ligger på SPI_Full_SPEED.

Vid eventuella fel ut led blinkar en signal-felinformation i skiss-huvudet.

Om debug anges till true i config, Serial monitor meddelanden skickas också.

Om kortet initialises ok den variabla hascard är satt till true.

.

se till att den standard chip välja stiftet är inställd
utgång, även om du inte använder det:

pinMode(SS,OUTPUT); standard mega Välj pin

pinMode(chipSelect,OUTPUT);

digitalWrite(chipSelect,LOW);

se om kortet är närvarande och kan initieras:

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

IF(debug) Serial.println (F ("kort init. misslyckades!"));

error(1);

} annat {

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

error(2);

IF(debug) {

Serial.println (F ("initieringen misslyckades. Saker att kontrollera: "));

Serial.println (F ("* är ett kort sätts?"));

Serial.println (F ("* stämmer ditt ledningar?"));

Serial.println (F ("* har du ändrat chipSelect PIN-koden för att matcha din sköld eller modul?"));

}

} annat {

hascard = sant;

IF(debug) Serial.println (F ("kort init. lyckades"));

}

}

Att välja filen SD för loggning:

När högra knappen trycks subrutin openfile kallas.

Detta inspekterar gps mappen letar du efter en oanvänd filnamn i ordning GPSLOGnn.TXT, där nn = 0 till 99.

Om en fil finns, ange foundit till true.

om (! hascard) {return;} / / Fortsätt inte om ett kort finns inte eller finns un-

byte i.

char filnamn [18].

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

filnamn [17] = char(0);

booleska foundit = false;

för (jag = 0; jag < 100; i ++) {

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

filnamn [12] = '0' + i % 10.

IF (!. SD.exists(filename)) {

foundit = sant; bryta;

}

}

Om alla filnamnen är i bruk, foundit kommer att vara falsk och användaren tillfrågas om de första 50 skall raderas. Om detta inte är ok, är hascard inställd på false så att det kan finnas några ytterligare försök att loggning.

om (! foundit) {
int thisbutton = -1;

LCD.Clear();

LCD.Print ("Dir radera?");

lcd.setCursor(0,1);

LCD.Print ("Sel:Ok rätt: ingen");

göra {

thisbutton = read_LCD_buttons();

} while(thisbutton == btnNONE);

LCD.Clear();

om (thisbutton == btnSELECT) {

LCD.Print("deleting");

för (jag = 0; jag < 50; i ++) {

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

filnamn [12] = '0' + i % 10.

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

}

Jag = 0;
filnamn [11] = '0' + i / 10;

filnamn [12] = '0' + i % 10.

} annat {

error(4);

hascard = false;

hemkomst.

}

}

Filen kan öppnas:

Vid ett fel seriella information matas ut och fel kod signalerat via status ledde.

Om det lyckas, är den första raden i filen. Detta är kolumnrubrikerna.

Observera användningen av logfile.flush(). Detta säkerställer att alla utdata skickas till SD-filen innan du fortsätter.

Logfile = SD.open (filnamn, FILE_WRITE);
om (! loggfil) {

IF(debug) {

Serial.Print kunde inte ("skapa");

Serial.println(filename);

}

error(3);

hascard = false;

} annat {

Logga = sant;

MinFil = filnamn.

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 uthärda");

logfile.flush();

IF(debug) {Serial.print ("skriftligen till"); Serial.println(filename);}

}

.

lpad och pad är text stoppning funktioner:

.

Sträng lpad (String temp, byte L) {
byte mylen = temp.length();

om (Charlotta > (L - 1)) återvända temp.substring(0,L-1);

för (byte jag = 0; jag < (L-Charlotta); i ++) temp = "" + temp;

returnera härda;

}

.

Sträng pad (sträng temp, byte L) {
byte mylen = temp.length();

om (Charlotta > (L - 1)) tillbaka

Temp.substring(0,L-1);

för (byte jag = 0; jag < (L-Charlotta); i ++) temp = temp + "";

returnera härda;

}

.

Skrivning till filen:

Huvudloop läser gps och utgångar värdena till en fil om loggning sker. (Ett "L" visas i det nedre högra hörnet av LCD-skärmen.)

.

Värdena är formaterade för att producera fast bredd kolumner.

.

Funktionen dtostrf(float,w,dp,buf) är en Arduino bibliotek funktion som tar en float variabel och omvandlar den till en textsträng, bredd w med dp decimalpunkter. BUF är en char buffert som måste vara tillräckligt stor för att hantera omvandlingen.

Jag definierade buf med "char buf [20]." i rubriken skiss.

Filen är spolas innan du fortsätter.

.

ogfile.Print(pad(mytime,13)); inkluderar milli sekunder
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();

.

Stängning av filen:

Om kortet inte är tillgänglig avkastning, annars spola alla återstående utdata till kortet innan du stänger filen.

void closefile() {

om (! hascard) återvända;

logfile.flush();

logfile.Close();

Logga = false;

IF(debug) Serial.println ("Fil" + minfil + "stängd");

}

Se Steg
Relaterade Ämnen

Arduino Temp/fukt med LCD och webbgränssnitt

jag nyligen hjälpt en kund flyttar sitt kontor som inkluderade att inrätta ett nytt datorrum.Jag ville ha dem för att kunna kontrollera temperaturen och luftfuktigheten i rummet både genom att kontrollera en LCD-display i rummet och även via en webbs...

Arduino HC-SR04 (med LCD)

HejI denna tutorial jag ska visa dig hur man 1. Ansluta HC-SR04 till en arduino och skriva ut avståndet till seriell övervaka, 2. Anslut en LCD-skärm och skriva ut resultaten där istället. Sensorn fungerar genom att pinga ut ett ultraljud som vi inte...

Ultrasonic linjal med LCD och Arduino

du behöverEn LCD-skärmEn Arduino Uno (jag har en Ethernet-shield på min, det gör inte någon sak i detta projekt, men det är en smärta att ta på och av)En Ultrasonic Sensormodul20 - 30 hoppare ledningarDetta är en ganska enkel projekt som jag kom med,...

Arduino solar storma controller + effektreglering och data loggning online med Xbee WiFi

För ett tag sedan jag började arbeta på en sol laddningsregulatorn, det var baserat på en PIC mikrokontroller, en 20 x 4 tecken display och koden är skriven i assembler. Det fungerade bra och arbetade fortfarande när jag bestämde mig att lägga mer ti...

Netduino GPS med LCD-skärm

ÖversiktJag hittade ett oanvänt Netduino V1-kort i min delar låda, så ville hitta något jag kunde ägna den till. Det var redan ansluten till en Nokia 5110 LCD-skärm för ett tidigare oavslutade projekt. Driver den upp, hittade jag båda arbetande böter...

Arduino Joystick bakbord med LCD-utgång

vill kunna styra ett par servon med en tumme-joystick? Men vet inte var du ska börja?Jag har servon, men jag kan sätta dig på rätt spår om hur man gör saker när du flyttar med styrspak.Detta instructable kommer att lära dig att mata riktning med styr...

Arduino Powered temperatursensor med LCD-utdata första gången författaren posten

Aldrig varit en tävling kinda kille men jag gick vidare och in i för den första tid författare tävlingen, om du gillar min intructable eller bara lärt sig något nytt och tror jag har tjänat din röst gör! =]Hej till alla! Vänligen bare med mig efterso...

Arduino - Ultrasonic Sensor med lysdioder och Summer

Hi guys detta är min första tutorial, jag har precis börjat för några månader sedan lära sig elektronik (tidigare jag har bara visste hur man programmerar i C och Python). När jag avslutat projektet (tog mig ca 5 timmar eller något) har jag beslutat...

Spåra din position utan att använda GPS (med LAC och CID)

HejVi behöver alla en enhet vid något tillfälle att hålla reda på våra vänner, familj eller våra tillhörigheter (fordon... min dyrbara!) etc. men inte alla av oss har råd med kostnaden för en GPS-enhet. Så, jag bestämde mig att hitta på internet om d...

Skicka SMS från Arduino över Internet med ENC28J60 och Thingspeak

Detta Instructable förklarar hur du skickar ett SMS från en Arduino använder Internet. Det finns många sätt att närma sig detta och jag kommer att förklara ett av de olika metoder som används för att utföra denna uppgift.Några viktiga punkter som beh...

Arduino Pickup Truck med ljus och avstånd Sensor

I denna tutorial kommer jag förklara hur man bygger denna Arduino kartong plocka upp lastbil med hinder skatteundandragande och cool rött ljus. Det är låg kostnad och har mer än bara robot rörelse.En annan fördel är strömförbrukning: endast 4 AA-batt...

Arduino klocka (med LCD och Stepper Motor)

Detta instructable skapades enlighet projektet kravet på Makecourse vid University of South Florida (www.makecourse.com)Detta instructable kommer att ge information om:1. klockan bostäder / andra delar2. Beskrivning av kretsen3. kommenterade kod (för...

Barometertrycket Sensor Breakout gränssnitt med LCD och Arduino

Denna tutorial lär grunderna om hur du använder barometertrycket sensor breakout.Steg 1: IntroduktionBarometriskt tryck Sensor Breakout modul (BMP180) används för att mäta det absoluta trycket av luften runt dem (lufttryck). Det gör också altitude (h...

Arduino mark sond med DS18B20 och DIY fukt hårdvara

Som en fanatisk trädgårdsmästare eller professionella jordbrukare att veta miljömässiga villkoren i vår jord är ovärderlig. Självklart, vi kan inte mäta antalet maskar eller bitar av organiska humus, men vi kan mäta temperatur och fukt innehåll verkl...

Arduino tryckgivare (FSR) med LCD-skärm

Detta instructable (förhoppningsvis) kommer att visa hur man konstruerar en Arduino-baserad trycksensor som visar det uppmätta trycket på en liten LCD-skärm. Jag in element, både hårdvara och mjukvara, från olika källor (jag kommer att ge referenser...

Komma igång med LCD och mikroprocessorer

i detta Instructable, ta reda på hur man styr LCD med en ATmega8 och Bascom.Du behöver:-Skärbräda-Tråd-ATmega8-Programmerare-Bascom AVR (det finns även en demoversion gratis)-10 k motstånd-100 k motstånd-10 k varierande resistor-7805 spänningsregulat...

ARDUINO stegmotor kontrollerad med rotationsencoder och l293d eller SN754410NE chip

Stepper motor är mycket användbara för massor av diy-projekt. I de flesta fall mikrokontroller styra alla förflyttningar av nummerlistan, men i vissa fall kan du manuellt styra stegmotor för att ange en startpunkt, rotera en kamera eller finjustera n...

Arduino Bluetooth-Bot med Android och LED-

Hej alla,Låt oss göra en bluetooth robot kontrollerad av android.Dess en instructable stegvisa med några bilder och självklart arduino koden, om du har frågor vänligen fråga mig. Tack!Steg 1: Komponenter i projektet:1. en, Arduino (Arduino 2560 i mit...

Språket i regn - An Arduino-baserad regnrock med ljud och LED

Vi kommer att göra en magisk regnrock som kunde översätta språket i regnet med hjälp av en LED stripe och ett ljudkort.Människor har en blandning av känslomässiga reaktioner till regnet. Vissa människor njuta av det, medan andra inte gör. Men om du a...