Serial monitöre yazdırılan veriyi eeproma kaydetmek

black3556

Yeni Üye
Katılım
29 Eylül 2022
Mesajlar
2
Sayın arkadaşlar foruma yeni üye oldum.Neo 6gprs arduino modülünden RX,TXpinleri ile seri monütere yazdırdığım enlem ve boylam değerini sistemin ilk çalıştığında eeproma kaydetmek istiyorum aşağıdaki kodda bunu yapmaya çalıştım ama başaramadım internetteki bilgiler belirli bir pin moddan gelen verilerin kaydedilmesi üzerine bu konuda bana yardımcı olursanız sevinirim.Teşekkürler.


Kod:
#include <SoftwareSerial.h>
#include <TinyGPS++.h>
#include <SPI.h>              // include libraries
#include <EEPROM.h>

static const int RXPin = 9, TXPin = 8;
static const uint32_t GPSBaud = 9600;

 
 float addres1=0;
 float addres2=10;

 float veri1=0.0000;
 float veri2=0.0000;
 float veritipi1;
 float veritipi2;

 TinyGPSPlus gps;
 SoftwareSerial ss(RXPin, TXPin); // RX 8,TX 9


float latitude,longitude;

//--------------------------------------------------------------
float initialLatitude =EEPROM.get(addres1,veritipi1);
float initialLongitude =EEPROM.get(addres2,veritipi2);
 

char buff[10];
String mylong = ""; // for storing the longittude value
String mylati = ""; // for storing the latitude value





float distance;


void setup()
{
  Serial.begin(9600);
  Serial.println("NEO6M serial initialize");
    ss.begin(GPSBaud);

   veri1=latitude;
 veri2=longitude;


  
 
  EEPROM.put(addres1,veri1);
  EEPROM.put(addres2,veri2);
  delay(100);
   Serial.print(EEPROM.get(addres1,veritipi1));
   Serial.print(EEPROM.get(addres2,veritipi2));
}

void loop()
{
 
  while (ss.available() > 0)
    if  ( gps.encode(ss.read() ) )
    {
 
 latitude = gps.location.lat(), 4 ;
 longitude = gps.location.lng(), 4;

 

 
  mylati = dtostrf(latitude, 3, 4, buff);
  mylong = dtostrf(longitude, 3, 4, buff);
  distance = getDistance(latitude, longitude, initialLatitude, initialLongitude);



  Serial.print("Latitude= "); Serial.println(latitude, 4);
  Serial.print("Longitude= "); Serial.println(longitude, 4);
  Serial.print(F("Speed:"));
  Serial.println(gps.speed.kmph());
  Serial.print(F("Course:"));
 Serial.println(gps.course.deg());
  delay(500);
{


 
}
   
 
  
    }
}
// Calculate distance between two points
float getDistance(float flat1, float flon1, float flat2, float flon2) {
 
  // Variables
  float dist_calc=0;
  float dist_calc2=0;
  float diflat=0;
  float diflon=0;
 
  // Calculations
  diflat  = radians(flat2-flat1);
  flat1 = radians(flat1);
  flat2 = radians(flat2);
  diflon = radians((flon2)-(flon1));
 
  dist_calc = (sin(diflat/2.0)*sin(diflat/2.0));
  dist_calc2 = cos(flat1);
  dist_calc2*=cos(flat2);
  dist_calc2*=sin(diflon/2.0);
  dist_calc2*=sin(diflon/2.0);
  dist_calc +=dist_calc2;
 
  dist_calc=(2*atan2(sqrt(dist_calc),sqrt(1.0-dist_calc)));
 
  dist_calc*=6371000.0; //Converting to meters
 
  Serial.print("DİSTANCE = ");
  Serial.println(distance);
 
  return dist_calc;


}
 
Last edited by a moderator:
Ben bir yerde şöyle kullanmışım.

Kod:
float toplam = EEPROM.get(0, veritipi);
  toplam += gelen_para;
 
  EEPROM.put(0, toplam);

Yani temelde çalışması lazım. Önce tek satırı ekle. O çalıştıktan sonra ikinci eklemeyi denersin. Birde adres1 ve 2 değişkenlerinin tipi float olmamalı. int yap onları. Hatta bence değişkene gerek yok. Benim gibi 0 ve 10 koy direk.
 
Ben bir yerde şöyle kullanmışım.

Kod:
float toplam = EEPROM.get(0, veritipi);
  toplam += gelen_para;
 
  EEPROM.put(0, toplam);

Yani temelde çalışması lazım. Önce tek satırı ekle. O çalıştıktan sonra ikinci eklemeyi denersin. Birde adres1 ve 2 değişkenlerinin tipi float olmamalı. int yap onları. Hatta bence değişkene gerek yok. Benim gibi 0 ve 10 koy direk.
yanıtınız için çok teşekkür ederim maalesef çalışmıyor yazılıma değerleri elle girersem kaydediyor.
 
Yazdığınız program mikrokontrolör üzerinde çalışırken önce setup() fonksiyonu BİR kere çalışır. Sonra güç kapatılana kadar loop() fonksiyonu tekrar tekrar çalışır.

Siz setup() fonksiyonun daha en başına henüz gps okunup latitude ve logtitude değişkenleri dolmadan eproma yazmışsınız. sonra da aynı şeyi okumuşsunuz. Sonra loop() içerisinde gps koordinatını okutmaya ve seri porta yazdırmaya başlamışsınız.

EEPROMa yazdırdığınız yer;

latitude = gps.location.lat(), 4 ;
longitude = gps.location.lng(), 4;


satırlarından sonra olmalı.
 

Forum istatistikleri

Konular
7,236
Mesajlar
122,430
Üyeler
2,924
Son üye
aytu

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top