ESP01(8266) ESP-NOW+0.96'' OLED SORUNU

Ahmet

S38>S85
Katılım
31 Mayıs 2021
Mesajlar
6,047
Programın herhangi bir kısmında oled ekranı kullanabiliyorum

fakat
void dataReceived(uint8_t *senderMac, uint8_t *data, uint8_t dataLength)
Bu voidin içinde displaye yazı yazdırmaya çalıştığımda
Panic core_esp8266_main.cpp:137 __yield
Seri porta bu çıktıyı yapıp ardından
sürekli bunları çeviriyor ve sonunda resetliyor kendini
3fffef00: 3ffeaa78 00000037 00000000 0000003c 3fffef10: 00000000 3ffeaa82 40232f13 3ffec960 3fffef20: 3ffeaa6c 3fffdcc0 3ffe8f58 00004420

Kullandığım kütüphaneler
#include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>
Bunlar.
 
Last edited by a moderator:
void dataReceived(uint8_t *senderMac, uint8_t *data, uint8_t dataLength)
Bunun ismine bakılırsa veri almak üzere yazılmış bir fonksiyon. Sen bunun içinde ekrana veri göndermeye çalışıyorsun. Bırak bu istediği işlemi yapsın sen de hemen sonrasında gönder veriyi.
(Kod hakkında hiç bir fikrim yok. Mantıklı yorumlamaya çalıştım)
 
Bunun ismine bakılırsa veri almak üzere yazılmış bir fonksiyon. Sen bunun içinde ekrana veri göndermeye çalışıyorsun. Bırak bu istediği işlemi yapsın sen de hemen sonrasında gönder veriyi.
(Kod hakkında hiç bir fikrim yok. Mantıklı yorumlamaya çalıştım)
Abi programın tamamını atarsam çok kafa karışıklığı olacak diye böyle atıyorum.
Şöyle çalışıyor;
esp_now_register_recv_cb(dataReceived);

Bu satır esp-now'dan bilgi geldiğinde çalışıyor ve bizi
void dataReceived(uint8_t *senderMac, uint8_t *data, uint8_t dataLength)
Bu voidin içine götürüyor.
Data geldiğinde yapacaklarını bu voidin içine yazıyorsun
bende bu voidin içinde displaye yazması için komut veriyorum esp sapıtıyor resetliyor kendini.

Ama programın başka bir yerinde setup kısmında vs. ekranı kullanabiliyırum resetlemiyor bu dataReceived voidinde sapıtıyor sadece.
 
Demekki displaye birşey yazmak ya çok uzun sürüyor, ya interrupt'ları kapatıyor, yada ESP nin hoşuna gitmeyen başka birşey yapıyor.

callback içinde sadece bir flag set et. Ana döngüde bu flag'ı görürsen ekrana ne yazacaksan yaz sonra da flag'ı clear et. Ama dikkat et flag tek byte olsun uint8_t yoksa başka, daha pis sorunlar çıkar.
 
Abi programın tamamını atarsam çok kafa karışıklığı olacak diye böyle atıyorum.
Şöyle çalışıyor;
esp_now_register_recv_cb(dataReceived);

Bu satır esp-now'dan bilgi geldiğinde çalışıyor ve bizi
void dataReceived(uint8_t *senderMac, uint8_t *data, uint8_t dataLength)
Bu voidin içine götürüyor.
Data geldiğinde yapacaklarını bu voidin içine yazıyorsun
bende bu voidin içinde displaye yazması için komut veriyorum esp sapıtıyor resetliyor kendini.

Ama programın başka bir yerinde setup kısmında vs. ekranı kullanabiliyırum resetlemiyor bu dataReceived voidinde sapıtıyor sadece.
Fonksiyon içine fonksiyon çağırıyorsun, onun da içine kendi kodlarını yerleştiriyorsun. Bana pek mantıklı gelmedi bu dizilim.
Peki bu dataReceived içine başka birşey yazınca sorun çıkmıyor mu?
 
Fonksiyon içine fonksiyon çağırıyorsun, onun da içine kendi kodlarını yerleştiriyorsun. Bana pek mantıklı gelmedi bu dizilim.
Peki bu dataReceived içine başka birşey yazınca sorun çıkmıyor mu?
Çok fazla serial print kullanınca da bağırıyor bana.

normalde flag bağımlısıyımdır ama neden burada aklıma gelmedi bilmiyorum.
 
espnow slave:
void dataReceived(uint8_t *senderMac, uint8_t *data, uint8_t dataLength){
    gelen1 = packet.sensor1;
    fl = 1;
}
Bu şekilde yaptım ve sorunsuz yazıyorum veriyi.

Fakat birde ihtiyacım olan.
Verinin gelmediğini anlayıp gelen1 değişkeninini sıfırlamak.
Çünkü menzil testini yaparken eğer bağlantı koparsa bu haliye anlayamam bağalntının koptuğunu.

Belli bir süre tutup bu süre sonunda ESP.restart(); komutunu çalıştırıcam.
Yada;
Bağlantı olup olmadığını sorgulayan bir komut bulucam.
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,653
Mesajlar
97,271
Üyeler
2,438
Son üye
İbrahimSönmez

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