Arduino Mega GPS avec écran LCD et enregistrement SD (5 / 9 étapes)

Étape 5: Utilisation de la carte SD dans gps2.ino

Configuration de la carte sd :

L’accès select de puce par défaut et la broche chipSelect réelles doivent être définis à la sortie.

La carte SD est accessible avec une instruction begin qui inclut les broches utilisées par la carte sur la carte gps.

La vitesse de la carte est fixée à SPI_Full_SPEED.

En cas d’erreur, le voyant lumineux clignote sortie un signal-détails de l’erreur dans l’en-tête de l’esquisse.

Si debug est défini sur true dans la config, Serial monitor également, les messages sont envoyés.

Si la carte s’initialise ok la variable hascard est définie sur true.

.

Assurez-vous que l’accès select de puce par défaut est définie sur
sortie, même si vous ne l’utilisez pas :

pinMode(SS,OUTPUT) ; goupille de select mega par défaut

pinMode(chipSelect,OUTPUT) ;

digitalWrite(chipSelect,LOW) ;

voir si la carte est présente et peut être initialisée :

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

if(Debug) Serial.println (F ("carte init. a échoué!")) ;

Error(1) ;

} else {}

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

Error(2) ;

{if(Debug)}

Serial.println (F (« échouée de l’initialisation. Choses à vérifier: ")) ;

Serial.println (F (« * est une carte est insérée? ")) ;

Serial.println (F (« * est votre câblage correct? ")) ;

Serial.println (F (« * avez-vous changé la broche chipSelect pour correspondre à votre bouclier ou module? ")) ;

}

} else {}

hascard = true ;

if(Debug) Serial.println (F ("carte init. a réussi")) ;

}

}

Sélectionner le fichier SD pour la journalisation :

Lorsque l’openfile sous-routine main droite touche est appelée.

Il inspecte le dossier gps à la recherche d’un nom de fichier inutilisé dans la séquence GPSLOGnn.TXT, où nn = 0 à 99.

Si un fichier est trouvé, foundit la valeur true.

Si (! hascard) {return;} / / ne pas continuer si une carte n’existe pas ou est non disponible

octet i ;

char nom [18] ;

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

NomFichier [17] = char(0) ;

foundit booléen = false ;

pour (i = 0; i < 100; i ++) {}

NomFichier [11] = « 0 » + i / 10 ;

NomFichier [12] = « 0 » + i % 10 ;

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

foundit = true ; rupture ;

}

}

Si tous les noms de fichiers sont en cours d’utilisation, foundit aura la valeur false et l’utilisateur est demandé si les 50 premiers doit être effacé. Si ce n’est pas ok, hascard a la valeur false afin qu’il peut y avoir aucune autre tentatives d’exploitation forestière.

Si (! foundit) {}
int Ceboutonsélectionnel = -1 ;

LCD.Clear() ;

LCD.Print ("Dir plein-Erase?") ;

lcd.setCursor(0,1) ;

LCD.Print (« Sel:Ok droit : aucune ") ;

{}

Ceboutonsélectionnel = read_LCD_buttons() ;

} while(thisbutton == btnNONE) ;

LCD.Clear() ;

Si (Ceboutonsélectionnel == btnSELECT) {}

LCD.Print("Deleting") ;

pour (i = 0; i < 50; i ++) {}

NomFichier [11] = « 0 » + i / 10 ;

NomFichier [12] = « 0 » + i % 10 ;

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

}

i = 0 ;
NomFichier [11] = « 0 » + i / 10 ;

NomFichier [12] = « 0 » + i % 10 ;

} else {}

Error(4) ;

hascard = false ;

retour ;

}

}

Le fichier peut être ouvert :

Dans le cas d’une erreur des informations séries sont sorties et l’erreur code signalé par l’intermédiaire de l’État a conduit.

En cas de succès, la première ligne du fichier est sortie. Il s’agit des en-têtes de colonne.

Notez l’utilisation de logfile.flush(). Cela garantit que toutes les sorties sont envoyé dans le fichier de la SD avant de continuer.

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

{if(Debug)}

Serial.Print ("Impossible de créer") ;

Serial.println(fileName) ;

}

Error(3) ;

hascard = false ;

} else {}

exploitation forestière = true ;

MyFile = filename ;

logfile.println (pad ("Time", 13) + lpad ("Date", 9) + lpad("Longitude",10)
+ lpad("Latitude",10) + lpad("Altitude",9) + "m" + lpad("Geoid",9) + "m" + lpad("Speed",7) + "mi/h portant") ;

logfile.Flush() ;

if(Debug) {Serial.print ("écrit à") ; Serial.println(fileName);}

}

.

LPAD et pad sont fonctions de remplissage du texte :

.

Chaîne lpad (octet String de temp, L) {}
mylen octets = temp.length() ;

Si (mylen > (L - 1)) return temp.substring(0,L-1) ;

pour (octet j’ai = 0; i < (L-mylen); i ++) temp = » "+ temp ;

Return temp ;

}

.

String pad (octet String de temp, L) {}
mylen octets = temp.length() ;

Si (mylen > (L - 1)) return

Temp.Substring(0,L-1) ;

pour (octet j’ai = 0; i < (L-mylen); i ++) temp = temp + "" ;

Return temp ;

}

.

Écriture dans le fichier :

La boucle principale lit le gps et affiche les valeurs dans un fichier si la journalisation est en cours. (Un « L » s’affiche en bas à droite de l’écran LCD).

.

Les valeurs sont formatés pour produire les colonnes à largeur fixe.

.

Dtostrf(float,w,dp,buf) fonction est une fonction de bibliothèque Arduino qui prend une variable float et le convertit en une chaîne, de largeur w avec dp décimales. buf est un tampon char qui doit être assez grand pour gérer la conversion.

J’ai défini buf avec "char buf [20];" dans l’en-tête de l’esquisse.

Le fichier est vidé avant de continuer.

.

ogfile.Print(PAD(Mytime,13)) ; comprend milli secondes
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() ;

.

Fermeture du dossier :

Si la carte n’est pas disponible retour, sinon rincer toutes les autres sorties de la carte avant de fermer le fichier.

void closefile() {}

Si (! hascard) return ;

logfile.Flush() ;

logfile.Close() ;

exploitation forestière = false ;

if(Debug) Serial.println (« Fichier » myfile + « fermé ») ;

}

Articles Liés

Netduino GPS avec écran LCD

Netduino GPS avec écran LCD

Vue d'ensembleJ'ai trouvé une carte Netduino V1 non utilisée dans ma boîte de pièces, donc voulu trouver quelque chose que je pourrais lui dédie. Il était déjà connecté à un Nokia 5110 LCD pour un projet inachevé auparavant. Allumer, j'ai trouvé que
Arduino HC-SR04 (avec écran LCD)

Arduino HC-SR04 (avec écran LCD)

SalutDans ce tutoriel, je vais vous montrer comment 1. Connecter le HC-SR04 à un arduino et imprimer la distance et le serial monitor, 2. Connecter un écran LCD et d'imprimer les résultats là au lieu de cela. Le capteur fonctionne en cinglant sur un
Arduino temperature/HUMIDITE avec écran LCD et Interface Web

Arduino temperature/HUMIDITE avec écran LCD et Interface Web

j'ai aidé récemment un client installer leur bureau qui comprenait la mise en place d'une nouvelle salle de l'ordinateur.Je voulais qu'ils soient en mesure de vérifier la température et l'humidité de la pièce tant en vérifiant un écran LCD dans la ch
Portable Arduino Uno température et capteur d’humidité avec écran LCD

Portable Arduino Uno température et capteur d’humidité avec écran LCD

Hey tout le monde. J'ai acquis beaucoup de bonnes idées d'instructables au fil des ans. Comme il s'agit de mon premier ' ible, je me dis que je voudrais partager quelque chose que j'ai fait aussi bien. Je suis cela concluez le plein spectre Laser con
Règle à ultrasons avec écran LCD et Arduino

Règle à ultrasons avec écran LCD et Arduino

vous aurez besoinUn écran LCDUne Arduino Uno (j'ai un bouclier ethernet sur le mien, il ne fait pas quelque chose dans ce projet, mais c'est une douleur pour prendre les sous et hors tension)Un Module de capteur à ultrasons20 - 30 fils de raccordemen
LED T-Shirt avec écran LCD et Bluetooth

LED T-Shirt avec écran LCD et Bluetooth

Maison LED T-Shirt avec 324 adressable WS2812B LED. Contrôlé par Arduino pro micro lié à écran LCD tactile et Bluetooth pour téléphone Android App. tout faits dans la maison (carte de Circuit imprimé, code de chemise, application pour téléphone, mise
Capteur à ultrasons avec écran LCD

Capteur à ultrasons avec écran LCD

Hé Makers,Il s'agit de mon premier instructables, Désolé si je plaisante pas sortir avec quelque chose. Pendant très longtemps j'ai pensé l'utilisation de capteurs ultrasons télémètre et pour afficher ses relevés sur l'écran LCD. Je suis tombé sur in
Capteur de température DS18B20 avec écran LCD

Capteur de température DS18B20 avec écran LCD

Le DS18B20 se présente sous une forme de sonde de température, qui est imperméable à l'eau. J'ai eu un temps réel dur essayer d'obtenir ce un travail et j'ai pensé que partager comment j'ai finalement obtenu qu'il fonctionne. Profitez !Étape 1: pièce
Auto équilibrage Robot avec écran LCD

Auto équilibrage Robot avec écran LCD

La version modifiée de mon mpu6050 équilibrage robot plus stable avec écran LCD et exemple de connecter 2 i2c sur le même NIPvidéo 1vidéo 2Étape 1: Étape 1: carte de ◾L298N moteur double dérivationCarte de ◾L298N moteur double dérivation12 V BATTARY9
Raspberry Pi + Serial Arduino avec écran LCD

Raspberry Pi + Serial Arduino avec écran LCD

IntroIl s'agit de mon LCD d'info Raspberry Pi, j'ai voulu essayer d'obtenir l'Arduino et Raspberry Pi parler les uns aux autres par le biais de USB serial et j'ai fait ce petit projet.Le Raspberry Pi utilise un script python pour obtenir les données
Douche Arduino moniteur avec écran LCD

Douche Arduino moniteur avec écran LCD

Bienvenue ! Pour notre classe environnementale Capstone (thèse) pour St. Olaf College nous avons construit un moniteur qui permettrait de surveiller efficacement la quantité d'eau utilise une douche. L'idée derrière ce varan est que si vous attachez
Arduino horloge (avec écran LCD et moteur pas à pas)

Arduino horloge (avec écran LCD et moteur pas à pas)

Cette instructable a été créée dans l'accomplissement de l'exigence de projet de la Makecourse à l'Université de Floride du Sud (www.makecourse.com)Cette instructable fournira des informations sur :1. horloge habitations / autres pièces2. description
Arduino-carré avec écran LCD couleur

Arduino-carré avec écran LCD couleur

B-places est une plate-forme électronique modulaire qui permet aux utilisateurs de créer, personnaliser et mettre continuellement à jour leurs propres applications électroniques.Dans cette application B-places, nous allons aborder comment assembler u
Arduino alimenté par sonde de température avec écran LCD sortie première fois auteur entrée

Arduino alimenté par sonde de température avec écran LCD sortie première fois auteur entrée

Jamais été un gars un peu de concours, mais j'ai avancé et entré dans pour le premier concours d'auteur de temps, si vous aimez mon intructable ou même d'apprendre quelque chose de nouveau et je pense j'ai gagné votre vote s'il vous plaît ! =]Bonjour