Arduino Mega GPS con pantalla LCD y SD Registro (5 / 9 paso)

Paso 5: Uso de la tarjeta SD en gps2.ino

Configuración de la tarjeta sd:

El defecto chip select patillas y el chipSelect real necesitan para la salida.

Se accede a la tarjeta SD con una instrucción de inicio que incluye los pines utilizados por la carta de la mesa de gps.

La velocidad de la tarjeta se encuentra en SPI_Full_SPEED.

En caso de error parpadea led hacia fuera una señal-detalles del error en el encabezado del bosquejo.

Si debug se establece en true en la configuración, monitor Serial también se envían los mensajes.

Si la tarjeta ok inicializa la variable hascard se establece en true.

.

Asegúrese que el pasador seleccione predeterminado chip es
de salida, incluso si no lo usas:

pinMode(SS,OUTPUT); Seleccione pin de defecto mega

pinMode(chipSelect,OUTPUT);

digitalWrite(chipSelect,LOW);

a ver si la tarjeta está presente y puede ser inicializada:

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

if(debug) Serial.println (F ("tarjeta init. no se pudo!"));

error(1);

} else {}

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

error(2);

{if(debug)}

Serial.println (F ("error de inicialización. Cosas para ver: "));

Serial.println (F ("* es una tarjeta?"));

Serial.println (F ("* es el cableado correcto?"));

Serial.println (F ("* cambió el pin chipSelect para que coincida con su escudo o módulo?"));

}

} else {}

hascard = true;

if(debug) Serial.println (F ("tarjeta init. tenido éxito"));

}

}

Seleccionar el archivo de la SD para el registro de:

Cuando se llama el openfile de subrutina se presiona el botón de la derecha .

Esto examina la carpeta gps en busca de un nombre de archivo no utilizados en la secuencia GPSLOGnn.TXT, donde nn = 0 a 99.

Si se encuentra un archivo, establezca foundit en true.

Si (! hascard) {vuelta;} / / no continúe si una tarjeta no existe o no existe

byte me;

char nombre [18];

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

nombre de archivo [17] = char(0);

Boolean foundit = false;

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

nombre de archivo [11] = '0' + i / 10;

nombre de archivo [12] = '0' + % 10;

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

foundit = true; rotura;

}

}

Si todos los nombres de archivo están en uso, foundit será false y el usuario se pregunta si debe borrarse la primera 50. Si esto no es aceptable, hascard se establece en false para que no puedan los intentos en el registro.

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

LCD.Clear();

LCD.Print ("Dir completa-borrar?");

lcd.setCursor(0,1);

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

{}

thisbutton = read_LCD_buttons();

} while(thisbutton == btnNONE);

LCD.Clear();

Si (thisbutton == btnSELECT) {}

LCD.Print("Deleting");

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

nombre de archivo [11] = '0' + i / 10;

nombre de archivo [12] = '0' + % 10;

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

}

i = 0;
nombre de archivo [11] = '0' + i / 10;

nombre de archivo [12] = '0' + % 10;

} else {}

error(4);

hascard = false;

retorno;

}

}

Puede abrir el archivo:

En el caso de un error en la salida de información Serial y el error código señalado por el estado de led.

Si tiene éxito, la primera línea del archivo es de salida. Se trata de los encabezados de columna.

Observe el uso de logfile.flush(). Esto asegura que toda la salida se envía en el archivo de la SD antes de continuar.

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

{if(debug)}

Serial.Print ("no se pudo crear");

Serial.println(FileName);

}

error(3);

hascard = false;

} else {}

registro = true;

MyFile = nombre de archivo;

logfile.println (pad ("tiempo", 13) + Depa ("fecha", 9) + lpad("Longitude",10)
+ lpad("Latitude",10) + lpad("Altitude",9) + "m" + lpad("Geoid",9) + "m" + lpad("Speed",7) + "millas por hora llevando");

logfile.Flush();

if(debug) {Serial.print ("escritura a"); Serial.println(FileName);}

}

.

el Depa y el cojín son texto acolchado funciones:

.

Lpad (cadena temp, de byte L) {} de la secuencia
mylen bytes = temp.length();

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

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

devolver a temp;

}

.

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

Si (mylen > (L - 1)) volver

Temp.substring(0,L-1);

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

devolver a temp;

}

.

Escribir en el archivo:

El bucle principal lee el gps y salidas de los valores a un archivo si el registro se lleva a cabo. (Una "L" se muestra en la parte inferior derecha de la pantalla LCD).

.

Formatean de los valores para producir columnas de ancho fijo.

.

Dtostrf(float,w,dp,buf) función es una función de biblioteca de Arduino que toma una variable float y la convierte en una cadena, de ancho w con dp decimales. buf es un buffer de caracteres que debe ser lo suficientemente grande como para manejar la conversión.

Definí buf con "char buf [20];" en el sketch de cabecera.

El archivo se vacía antes de continuar.

.

ogfile.Print(PAD(myTime,13)); incluye milisegundos
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();

.

Cierre el archivo:

Si la tarjeta no está disponible volver, de lo contrario lave todos los resultados restantes a la tarjeta antes de cerrar el archivo.

void closefile() {}

Si (! hascard) volver;

logfile.Flush();

logfile.Close();

registro = false;

if(debug) Serial.println ("El archivo" MiArchivo + "cerrada");

}

Artículos Relacionados

Netduino GPS con pantalla LCD

Netduino GPS con pantalla LCD

ResumenEncontré una tarjeta Netduino V1 inusitada en mi caja de piezas, así que quería encontrar algo a que pude dedicar. Ya estaba conectado a una pantalla LCD de Nokia 5110 para un proyecto sin terminar antes. Encender, he encontrado que ambos esta
Arduino Temp/humedad con pantalla LCD y la interfaz Web

Arduino Temp/humedad con pantalla LCD y la interfaz Web

recientemente ayudó al cliente moverse de su oficina que incluyó la creación de una nueva sala de informática.Yo quería que ser capaces de controlar la temperatura y la humedad de la habitación tanto marcando una pantalla LCD en la habitación y tambi
Portátil Arduino Uno temperatura y Sensor de humedad con pantalla LCD

Portátil Arduino Uno temperatura y Sensor de humedad con pantalla LCD

Hey todo el mundo. He conseguido un montón de grandes ideas de instructables sobre los años. Como este es mi primer ' ible, figura de compartir algo que yo hago así. Estoy entrando a esto en el completo espectro láser concurso 2016. Si tuviera que ga
Regla ultrasónica con pantalla LCD y Arduino

Regla ultrasónica con pantalla LCD y Arduino

debeUna pantalla LCDUn Arduino Uno (tengo un escudo de ethernet en la mía, que no cualquier cosa en este proyecto, pero es un dolor para tomar encendido y apagado)Un módulo de Sensor de ultrasonidos20 - 30 cables de puenteEste es un proyecto bastante
Medidor de distancia ultrasónico con pantalla LCD en el Arduino UNO

Medidor de distancia ultrasónico con pantalla LCD en el Arduino UNO

En este tutorial vamos a ver un uso distinto del módulo de ultrasonidos HC-SR04. Este módulo es de uso frecuente en coches de juguetes y robots para localizar obstáculos pero puede ser utilizado para medir distancias así.Distancias medidas por la HC-
Sensor de presión de Arduino (FSR) con pantalla LCD

Sensor de presión de Arduino (FSR) con pantalla LCD

Este instructable (esperemos) demostrar cómo construir un sensor de presión basados en Arduino que muestra la presión medida en una pantalla pequeña del LCD. Incorporé elementos, tanto de hardware como de software, de diversas fuentes (se proporciona
Arduino-Plaza con pantalla LCD de Color

Arduino-Plaza con pantalla LCD de Color

B-plazas es una plataforma de electrónica modular que permite a los usuarios crear, personalizar y actualizar continuamente sus propias aplicaciones de electrónica.En esta aplicación de B-plazas cubriremos cómo montar una sencilla aplicación de Color
Frambuesa Pi + Arduino Serial con pantalla LCD

Frambuesa Pi + Arduino Serial con pantalla LCD

IntroducciónEste es mi LCD de información frambuesa Pi, quería intentar y conseguir el Arduino y frambuesa Pi hablando entre sí a través de USB serial e hice este pequeño proyecto.El Raspberry Pi utiliza un script en python para obtener los datos y e
Regulador de función de múltiple de Arduino Mini con pantalla LCD

Regulador de función de múltiple de Arduino Mini con pantalla LCD

este instructivo se basa en el monitor de entorno Arduino mini y monitor de EEG de Arduino mini Instructables.Le permite controlar hasta 4 relés usando el tiempo, temperatura y/o luz, tu mente, o sensor de lo que le gustaría utilizar.Los ejemplos son
Arduino ultrasónico Distanciómetro, con pantalla lcd de I²C!

Arduino ultrasónico Distanciómetro, con pantalla lcd de I²C!

Hola,en este proyecto que quiero mostrar y explicar un sensor de gama con ultrasonidos y una pantalla de lcd de 20 x 04. Escribí el código para este proyecto yo y añadidos muchos comentarios, para que todo el mundo puede entenderlo y utilizarlo para
Arduino Powered Sensor de temperatura con pantalla LCD salida primera vez autor entrada

Arduino Powered Sensor de temperatura con pantalla LCD salida primera vez autor entrada

Nunca había sido un chico un poco de concurso pero siguió adelante y entró en el primer concurso de autor de tiempo, si te gusta mi intructable o simplemente aprender algo nuevo y creo que he ganado tu voto por favor! =]Hola a todos! Por favor pelado
Arduino con pantalla LCD 1602

Arduino con pantalla LCD 1602

La pantalla LCD sirve para poder tener una interfaz con el usuario, es decir, desplegar información, y usar botones para poder ejecutar acciones en el Arduino. En este proyecto cuántos la pantalla LCD 1602, es bastante útil, pues viene como «escudo»,
Sensor ultrasónico con pantalla LCD de

Sensor ultrasónico con pantalla LCD de

Hey los fabricantes,Este es mi primer instructables, lo siento si me lio hacia fuera con algo. Durante mucho tiempo he estado pensando de usando el sensor ultrasónico Distanciómetro y a mostrar sus lecturas en la pantalla LCD. Vine a través de muchos
Fuerza de regeneración con pantalla LCD

Fuerza de regeneración con pantalla LCD

En Instructable de hoy, te va sobre cómo controlar la corriente de un actuador y ajuste los valores con una pantalla LCD. Este Instructable es una continuación a la supervisión la regeneración de la carga de un actuador Instructable. Se va añadiendo