bluetooth üzerinden veri geldiğinde zamanı sıfırlamam gerekiyor ama eeproma kaydettiğim için sıfırlama yapamıyorum

G-Smart

Üye
Katılım
9 Aralık 2022
Mesajlar
24
C++:
#include <TimerOne.h>

#include <virtuabotixRTC.h>
virtuabotixRTC saat(7,8,9);
#include <EEPROM.h>
#include <SoftwareSerial.h>
SoftwareSerial bt(2,3);
char data;
#include <Arduino.h>
#include <FastLED.h>
#define NUM_LEDS 5 //Led Sayısı
#define DATA_PIN 4 //Led Din giriş pini

CRGB leds[NUM_LEDS]; //Led Dizisi oluşturduk
int addr =0;

#define kacaksensor A0
int buzzer = 13;
int zamanfarki,sonokuma=0;
int leddurum;
double simdikizaman = 0;
double sonzaman = 0;

void setup() {
Serial.begin(115200);
bt.begin(115200);
pinMode(DATA_PIN,OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(kacaksensor,INPUT);
digitalWrite(buzzer,HIGH);
digitalWrite(buzzer,LOW);

//saat.setDS1302Time(00,00,00,1,01,01,2023);

FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS); //Fastlede led dizimizi ekledik
FastLED.setBrightness(255); //Parlaklık ayarı 0-255

for(int i = 0 ; i < 60 ; i++)
{
EEPROM.get(addr,saat.minutes);
Serial.println(F("EEPROM yazıldı : "));
  Serial.println(EEPROM.get(addr, saat.minutes));
  delay(100);
if(addr==60)
{
  addr=0;
}
}

FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS); //Fastlede led dizimizi ekledik
FastLED.setBrightness(255); //Parlaklık ayarı 0-2
for(int i=0;i<5;i++)
{
leds[0].setRGB(0, 0, 255); //ilk 5 ledi MAVİ
FastLED.show();
leds[1].setRGB(0, 0, 255); //yakıyoruz
FastLED.show();
leds[2].setRGB(0, 0, 255);
FastLED.show();
leds[3].setRGB(0, 0, 255);
FastLED.show();
leds[4].setRGB(0, 0, 255);
FastLED.show();     
 }

 attachInterrupt(1,  data, CHANGE);
 attachInterrupt(0,  data, CHANGE);

//saat.setDS1302Time(00,00,00,1,01,01,2023);
}

void loop(){
rtc();
gorev();
bluetooth();
}

void rtc()
{
saat.updateTime();
Serial.println(" ");
  Serial.print(saat.hours);  //Saat
  Serial.print(":");
  Serial.print(saat.minutes);  //Dakika
  Serial.print(":");
  Serial.print(saat.seconds);  //Saniye
  Serial.print(" ");
  Serial.print(saat.dayofmonth); //Gün
  Serial.print("/");
  Serial.print(saat.month);  //Ay
  Serial.print("/");
  Serial.println(saat.year); //Yıl

 for ( addr = 0 ; addr < 60 ; addr++)
 {
  EEPROM.put(addr,saat.minutes);
  Serial.println(EEPROM.get(addr, saat.minutes));
  delay(50);
  if(addr==60)
  {addr=0;
  }
 }
}

void gorev(){
 saat.updateTime();
zamanfarki=saat.minutes-sonokuma;

if(bt.available())
{
Serial.write(bt.read());
data = bt.read();
Serial.println(data);
data!=data;

if(data=='a')
{
sonokuma=(saat.minutes==sonokuma);
leds[0].setRGB(0, 0, 255); //ilk 5 ledi MAVİ
 FastLED.show();
 leds[2].setRGB(0, 0, 255); //ilk 5 ledi MAVİ
 FastLED.show();
digitalWrite(buzzer,LOW);
}
}

if(zamanfarki>=5)
{
 leds[0].setRGB(255, 0, 0); //ilk 5 ledi MAVİ
 FastLED.show();
 leds[2].setRGB(255, 0, 0); //ilk 5 ledi MAVİ
 FastLED.show();
 digitalWrite(buzzer,HIGH);
 delay(1000);
 digitalWrite(buzzer,LOW);
 delay(1000);
}
 
Last edited by a moderator:
kodum düzenli olmayabilir kusura bakmayıjn ama çalışıyor aslında eepromdan okunan veriyi sıfırlayamadım bluetooth dan gelen veriyle zamanı sıfırlıyor baştan okuyor kodu bu kez eeprom kaldığı yerden devam ettiriyor
 
değişkeni sıfırlıyorsun ama eepr içeriği hala saklı kalıyor.
sıfırlama yaptığın yerde eeproma tekrar yazdır 0lanmış halini.
 
C:
for (int i = 0; i < 60; i++) {
    EEPROM.get(addr, saat.minutes);
    Serial.println(F("EEPROM yazıldı : "));
    Serial.println(EEPROM.get(addr, saat.minutes));
    delay(100);
    if (addr == 60) {
      addr = 0;
    }
  }

C:
   attachInterrupt(1,  data, CHANGE);
   attachInterrupt(0,  data, CHANGE);

setup() fonksiyonundaki bu kodların amacı nedir acaba?
 
C:
for (int i = 0; i < 60; i++) {
    EEPROM.get(addr, saat.minutes);
    Serial.println(F("EEPROM yazıldı : "));
    Serial.println(EEPROM.get(addr, saat.minutes));
    delay(100);
    if (addr == 60) {
      addr = 0;
    }
  }

C:
   attachInterrupt(1,  data, CHANGE);
   attachInterrupt(0,  data, CHANGE);

setup() fonksiyonundaki bu kodların amacı nedir acaba?
attachinterrupt bulututtan verigöndermek için aldığım dış kesme diğeride elektirikler kesildiğinde eepromdan 1 kerelik yazması için
 
değişkeni sıfırlıyorsun ama eepr içeriği hala saklı kalıyor.
sıfırlama yaptığın yerde eeproma tekrar yazdır 0lanmış halini.
denedim onu da yazadırıyorum ama onu kaydetmiyor sanki elektiriğini kesmiş gibi setup dan başlıyor tekrar bu kez eeprom kaldığı yerden devam ediyor
 
Son düzenleme:
burada son okumayı anlık zamanla nasıl eşleştirebilirim o da çözer sorunumu
 
Kusura bakmayın, ama ben gerçekten anlayamadım kodunuzu ve açıklamaları. Örneğin; 60 dakika demişsiniz ama 60 kere hep aynı adresi okuyorsunuz. sadece i değişiyor ama onu hiç kullanmıyorsunuz. adr hep 0 ama 60 olmuşsa 0 yapıyorsunuz.


Kod da yarım olunca ne amacınız ne de probleminiz anlaşılmıyor.

Önerim önce kodu düzenleyip biraz anlaşılır hale getirmeniz, yorumlar eklemeniz, sonra da projenizin amacını ve yaşadığınız problemi etraflıca anlatmanız olur.
O zaman daha fazla yardımcı olabilecektir okurlar. Diğer türlü çok çaba ve zaman gerekiyor.

Bir de şuradan faydalanmanızı öneririm:
 

Forum istatistikleri

Konular
5,777
Mesajlar
98,821
Üyeler
2,460
Son üye
ByMalicious

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top