lo schetc che ho fatto funziona , legge e scrive correttamente la eeprom, ma mi trovo in difficolta a trovare il modo per poter memorizzare la posizione attuale.
in tutto vorrei , se si puo' fare avere un max di 30\40 posizioni , arrivati alla fine si ferma di memorizzare.
poi per cancellarli n nel caso premo un altro tasto e cancello tutto.
l'unica difficolta' e' nel riuscire a memorizzare aumentando la posizione della sctruct a ogni pressione
ringrazio in anticipo a coloro mi possano dare una dritta
- Codice: Seleziona tutto
#include <EEPROM.h>
float distanceToDest[10];
float courseToDest[10];
byte a = 22;
int posto=0;
float piu_vicino=999923.54;
struct LatLon
{
float Lat;
float Lon;
};
LatLon LatLonList[] =
{
{38.210169, -75.689734},
{38.210169, -75.689734}, // United Arab Emirates
{44.383860, 9.2838777}, // mio44
{41.153332, 20.168331}, // Albania
{41.153332, 20.168331}, // Armenia
{43.153332, 24.168331}, // Armenia
};
const int LatLonCount = sizeof LatLonList / sizeof LatLonList[0];
byte Index = 0;
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
// The TinyGPS++ object
TinyGPSPlus gps;
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
// For stats that happen every 5 seconds
unsigned long last = 0UL;
int ledPin = 13;
void writeCoords(){
int address = 0;
for (int i = 0; i < LatLonCount; i++){
EEPROM.put(address, LatLonList[i].Lat);
address += sizeof(LatLonList[i].Lat);
EEPROM.put(address, LatLonList[i].Lon);
address += sizeof(LatLonList[i].Lon);
}
}
void readCoords(){
int address = 0;
for (int i = 0; i < LatLonCount; i++){
EEPROM.get(address, LatLonList[i].Lat);
address += sizeof(LatLonList[i].Lat);
EEPROM.get(address, LatLonList[i].Lon);
address += sizeof(LatLonList[i].Lon);
}
}
void setup()
{
Serial.begin(9600);
ss.begin(GPSBaud);
pinMode(ledPin, OUTPUT);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
//EEPROM.get(0, Index);
//if (Index >= LatLonCount)
// Index = 0;
}
void loop(){
if (digitalRead(7)==LOW) {
writeCoords();
Serial.print("scrivi");
}
if (digitalRead(8)==LOW) {
readCoords();
Serial.print("leggi");
}
float currentLat, currentLon;
// Dispatch incoming characters
while (ss.available() > 0)
gps.encode(ss.read());
if (gps.location.isUpdated() && millis() - last > 5000)
{
last = millis();
currentLat = gps.location.lat();
currentLon = gps.location.lng();
Serial.print(F(" Lat="));
Serial.print(currentLat, 6);
Serial.print(F(" Long= "));
Serial.println(currentLon, 6);
Serial.print(F(" course="));
Serial.println(gps.course.deg());
if (gps.location.isValid())
{
Serial.println("Fix is valid.");
Serial.println(LatLonCount);
}
else
{
Serial.println("Fix is not yet valid.");
return;
}
for (int x = 0; x <LatLonCount; x++) {
distanceToDest[x] =
TinyGPSPlus::distanceBetween(
currentLat,
currentLon,
LatLonList[x].Lat,
LatLonList[x].Lon);
courseToDest[x] =
TinyGPSPlus::courseTo(
currentLat,
currentLon,
LatLonList[x].Lat,
LatLonList[x].Lon);
Serial.print(F("Distance:"));
Serial.print(x); Serial.print(" km ");
Serial.print(distanceToDest[x] / 1000, 4); // *Prints distance to destination
Serial.print(" direzione : ");
Serial.print(courseToDest[x]);
Serial.println(F(" degrees"));
Serial.print(F("direzione cardinale ["));
Serial.print(TinyGPSPlus::cardinal(courseToDest[x]));
Serial.println(F("]"));
if (distanceToDest[x] < piu_vicino) {//creo valore
posto=x; // point
piu_vicino = distanceToDest[x]; //+ vicino
}
if (distanceToDest[x] / 1000 < 6.0500) { //
a = x; // imposto soglia limite distanza
}
}
Serial.print(piu_vicino/1000,3);
Serial.print(F(" km piu' vicino ")); Serial.println(posto);
if (a < 7) {
Serial.print("We have arrived.");
Serial.println(a);
digitalWrite(ledPin, HIGH);
Index++;
delay(1500);
if (Index >= LatLonCount)
Index = 0; // Start over when we run out of destinations
// EEPROM.put(0, Index);
a = 8;
}
else
{
digitalWrite(ledPin, LOW);
a = 8;
delay(1500);
}
}
if (gps.charsProcessed() < 10)
Serial.println(F("WARNING: No GPS data. Check wiring."));
}

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
