bluetooth dan gelen veri sıfırlama yapmıyor eepromu dahil etmeden önce sorun yoktu

G-Smart

Üye
Katılım
9 Aralık 2022
Mesajlar
24
C++:
void filtredegisimi(){
 
filtredurum != filtredurum;
 attachInterrupt(1,  data, CHANGE);
 attachInterrupt(0,  data, CHANGE);
 

 while(filtregun<=2) {

 
 
 for (saniye>-1;saniye<60;saniye++) {//kodumuzu saniye odaklı kuruyoruz.
delay(983);
if (saniye==59) saniye=-1, dakika=dakika+1;
if (dakika==2) dakika=0, saat=saat+1;
if (saat==2) saat=0, filtregun1=filtregun1+1;
if(filtregun1==6) filtregun1=0,filtregun=filtregun+1;
Serial.print(saniye);Serial.print(":");Serial.print(dakika);Serial.print(":");Serial.println(saat);
Serial.print(filtregun1);Serial.print("/"); Serial.println(filtregun);

EEPROM.update(filtregun,adr);

Serial.print("filtregun : ");Serial.println(filtregun);

 EEPROM.update(filtregun1,adr1);

Serial.print("filtregun1 : ");Serial.println(filtregun1);

   
 
 
   while(bt.available()>0)
{
  Serial.write(bt.read());
char data = bt.read();
 Serial.println(data);
data=!data;
if(data=='a')
{
digitalWrite(buzzer,HIGH);
digitalWrite(buzzer,LOW);

 
   filtregun1=0;
   filtregun=0;
   }}
   if(filtregun==0){
        leds[2].setRGB(0, 0, 255);
                FastLED.show();
                leds[4].setRGB(0, 0, 255);
                 FastLED.show();
                digitalWrite(buzzer,LOW);
}
  if(filtregun==2){
 
   digitalWrite(buzzer,HIGH);
              delay(1000);  
               leds[2].setRGB(255, 0, 0);
                FastLED.show();
                leds[4].setRGB(255, 0, 0);
                 FastLED.show();
                digitalWrite(buzzer,LOW);
                delay(1000);
 
 
  }
}
}
}
 
Last edited by a moderator:
böyle çalışmaz delay girdiğinde bütün işlemci duruyor.

Timer IRQ olarak araştırın
 
void filtredegisimi(filtredurum != filtredurum){

baslik kismi boylemiydi acaba.
 
Kod formatında yüklemenizde fayda var, bu haliyle çok zahmetli kodunuzu okumak, anlamak.



1676901442159.png
 
3. satırdaki ifade etkisiz bir ifadedir. Hiçbir şey yapmaz, hiçbir şey değiştirmez. Kodun diğer yerlerine bakmadım açıkçası. Programın ne amacı belli, nede programın tamamı paylaşılmış, nede özenli yazılmış.
 
C++:
void filtredegisimi() {

  filtredurum != filtredurum;
  attachInterrupt(1, data, CHANGE);
  attachInterrupt(0, data, CHANGE);

  while (filtregun <= 2) {

    for (saniye > -1; saniye < 60; saniye++) { //kodumuzu saniye odaklı kuruyoruz.
      delay(983);
      if (saniye == 59) saniye = -1, dakika = dakika + 1;
      if (dakika == 2) dakika = 0, saat = saat + 1;
      if (saat == 2) saat = 0, filtregun1 = filtregun1 + 1;
      if (filtregun1 == 6) filtregun1 = 0, filtregun = filtregun + 1;
      Serial.print(saniye);
      Serial.print(":");
      Serial.print(dakika);
      Serial.print(":");
      Serial.println(saat);
      Serial.print(filtregun1);
      Serial.print("/");
      Serial.println(filtregun);

      EEPROM.update(filtregun, adr);

      Serial.print("filtregun : ");
      Serial.println(filtregun);

      EEPROM.update(filtregun1, adr1);

      Serial.print("filtregun1 : ");
      Serial.println(filtregun1);

      while (bt.available() > 0) {
        Serial.write(bt.read());
        char data = bt.read();
        Serial.println(data);
        data = !data;
        if (data == 'a') {
          digitalWrite(buzzer, HIGH);
          digitalWrite(buzzer, LOW);

          filtregun1 = 0;
          filtregun = 0;
        }
      }
      if (filtregun == 0) {
        leds[2].setRGB(0, 0, 255);
        FastLED.show();
        leds[4].setRGB(0, 0, 255);
        FastLED.show();
        digitalWrite(buzzer, LOW);
      }
      if (filtregun == 2) {

        digitalWrite(buzzer, HIGH);
        delay(1000);
        leds[2].setRGB(255, 0, 0);
        FastLED.show();
        leds[4].setRGB(255, 0, 0);
        FastLED.show();
        digitalWrite(buzzer, LOW);
        delay(1000);

      }
    }
  }
}


Kodu wrap yaptım:


Ben de pek anlamadım açıkcası. Geri kalanı olmayınca anlaşılmıyor. Sanki iki günde bir filtre değişmesini zorlamaya çalışan bir kod gibi. BT üzerinden veri gelirse ('a') değişmiş kabul ediyor.

O değişken zaten kullanılmıyor fonksiyon içinde. 4. ve 5. satırlar da işlevsiz.
Ayrıca saniyede iki sefer EEPROM'a yazmak da sıkıntı olabilir.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,984
Mesajlar
102,076
Üyeler
2,516
Son üye
adu33

Son kaynaklar

Son profil mesajları

deneyci wrote on hakan8470's profile.
Sibonge uNkulunkulu ngokuhlukahluka asinike kona.

Bu hangi dil? :)
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
Back
Top