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

Ahmet

S38>S85
Katılım
31 Mayıs 2021
Mesajlar
6,111
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.
 
Kod:
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 üyeler

Forum istatistikleri

Konular
7,909
Mesajlar
130,771
Üyeler
3,169
Son üye
StarLord

Son kaynaklar

Son profil mesajları

Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
az bilgili çok meraklı
Back
Top