Paso 6: Software: el menú de punto de referencia
Como un marinero, sé lo difícil que es escribir correctamente un número de puntos de referencia.Por lo tanto, busqué una forma de copiar pegar waypoints directamente desde Google maps. Puntos de referencia se componen como latitud (N o S) y logitude (E o W). Se parece a una entrada típica: 50.846669,4.352514 (= Bruselas, Grote Markt). Las latitudes sur y longitudes oeste son valores negativos
Cómo copiar de Google maps:
- Abrir Google maps, tipo en el ambiente deseado
- Navegar en el mapa hasta el punto exacto
- Clic derecho sobre la ubicación exacta, elija qué es aquí?"
- Latitud de copia (CTRL-C), información de la longitud del Google mapas cuadro de entrada.
- Pegue este cuadro de coordenadas en el Arduino serial de entrada
Decidí hacer un punto aparte del bosquejo. Funciona vía el monitor de Arduino serial y es impulsado por menú.
Mapa de la memoria:
Cada waypoint ocupa 10 bytes:
- flotador de 2 x 4 bytes (latitud y longitud)
- un entero de 2 bytes (reenviar el enlace a la siguiente dirección waypoint).
Detalles:
Byte 0 a 7 contienen el título de la lista de waypoints.
Bytes 8 y 9 almacenar un entero, que apunta a la primera dirección de waypoint.
La primera latitud es byte 10-13, la primera longitud de 14-17.
Octeto 18 y 19 almacenar el enlace a la siguiente waipoint nuevo.
Capacidad máxima es de 99 puntos.
General: latitudes comienzan en 10k, longitudes en 10 k + 4, los enlaces a la latitud próxima a 10 k + 8.
Un '-1' en el enlace indica el último waypoint de la lista.
En el inicio, el boceto muestra después de menú (no es tan bonito aquí, pero está bien alineada en el monitor)
******************************************
* *
* Elegir una acción: *
* *
* Mostrar todos los waypoints: s *
* Entrar en una nueva lista de waypoint: n *
* CAMBIAR un punto de referencia: v *
* BORRAR un waypoint: d *
* Añadir un waypoint: un *
* *
* HELP: h *
* *
******************************************
Acciones:
- NUEVO: todos los enlaces anteriores se sobrescriben con '-2'. Entonces el usuario es solicitado para copiar un número de puntos de referencia en el cuadro de entrada de monitor serie. La lista se cierra introduciendo "#", que inserta '-1' en el campo vínculo.
- DEMOSTRACIÓN: se muestra la lista de waypoints. En el monitor, cada waypoint es precedido por un número para permitir que aún más. Tenga en cuenta que estos números no son necesariamente consecutivos después de agregar y eliminar acciones.
- BORRAR: se saca un waypoint de la lista.
- Agregue: puede insertarse un punto extra después de un número de punto de ruta elegido.
- CAMBIO: acción permite para cambiar el contenido de punto de referencia a un número elegido.
- AYUDA: muestra la forma de copiar puntos de GoogleMaps.
Detalles de la programación:
El bosquejo comprueba mal entradas de menú y los waypoint números.
No hay ninguna comprobación sobre el contenido del punto de referencia, como se supone que para copiar de Google.
Hay rutinas para leer y escribir de carrozas y números enteros a y de Eeprom.
A continuación se muestran las rutinas para el manejo de valores float (4 bytes) en la EEprom (que consiguió ayuda de un experto aquí).
Rutinas similares fueron utilizadas para los números enteros (2 bytes).
{
Float f;
bytes Byte [4];
};
void EepromWriteFloat (int dirección, float valor) {}
FloatBinary temp;
Temp.f = valor;
para (int i = 0; i < 4; i ++) {}
EEPROM.write (dirección + i, temp.bytes[i]);
}
}
Float EepromReadFloat(int adres) {}
FloatBinary temp;
de flotador
para (int n = 0; n < 4; n ++) {}
Temp.bytes[n] = EEPROM.read(adres+n);
}
a = temp.f;
volver }