atmega328p ile ssd1327 128x128 oled kullanımı

Başlatan tunahanfıtlamak, 01 Nisan 2020, 23:22:19

tunahanfıtlamak

merhabalar
atmega328p ile ssd1327 128x128 oled ekranı kullanıyorum
ekranı direnç.net ten sipariş ettim ve orada olan dökümanlardaki kütüphaneyi kullanıyorum
başarılı bir şekilde ekranı kullanabiliyorum

fakat bir kaç büyük sorunum var
1. sorunum ekranda 64x64 lük bitmap formatına çevrilmiş resimi gösteremiyorum.
yaptığım araştırmalara göre kütüphanede olan bu fonksiyonu buldum
 
void OLED_DisPage(unsigned int Column_Num, unsigned int Page_Num)
{
  unsigned int column_max = (OLED_WIDTH / XByte);//OLED_WIDTH=128 , XByte=64
  unsigned int page_max = (OLED_HEIGHT / YByte);// OLED_HEIGHT=128 , YByte=16
  if (Page_Num > page_max || Column_Num > column_max) {
    DEBUG("Display error\r\n");
    return;
  }
  unsigned int Dx = Column_Num % column_max;
  unsigned int Dy = Page_Num % page_max;
  OLED_Display(Dx * XByte, Dy * YByte, (Dx + 1) * XByte,(Dy + 1) * YByte);
//OLED_Display(POINT Xstart, POINT Ystart, POINT Xend, POINT Yend)
}

bu fonksiyonu kullandığımda oled_display de çıkan sonuçlarda mesela OLED_DisPage(0,1) yazdığımda fonksiyon içinde OLED_Display(0,16,64,32); oluyor buda benim y eksenin 16 ile sınırlıyor fonsiyon içindeki kodda bunu daha yüksek rakam yapmaya çalıştım fakat olmadı y eksenin 16 karakterlik sınırlama koyduğu için 32x32 vb resimleri gösteremiyorum.
bu ekranı daha önce kullanan var mı bu problemi nasıl çözebilirim.

2.sorunum ekran kütüphanesindeki global değişkenler atmega328p nin %82 lik kısmını kapılıyor bu da benim diğer işlemleri yapmama engel oluyor bir kaç birşey tanımladığımda %90 lara çıkıyor buda işlemcinin karasız çalışmasına sebeb oluyor atmega328p nin hafızasını mı genişletmeliyim yada kütüphanedeki gereksiz fonsiyonlar mı kaplıyor kütüphaneye baktım fakat anlayamadım.
kütüphaneyi link halinde atıyorum bir kaç gündür uğraşıyorum ve çözüm bulmadım
şimdiden teşekkür ederim herkese iyi çalışmalar.
https://www.waveshare.com/wiki/File:1.5inch_OLED_Moudle.7z

mehmet

1)
GUI_Disbitmap(0  , 2, Signal816  , 16, 8);
2) Derleyici iyileştirmesini boyut olarak
değiştirmeniz yararlı olabilir.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

tunahanfıtlamak

Alıntı yapılan: mehmet - 02 Nisan 2020, 01:11:121)
GUI_Disbitmap(0  , 2, Signal816  , 16, 8);
2) Derleyici iyileştirmesini boyut olarak
değiştirmeniz yararlı olabilir.
1)
GUI_Disbitmap(0  , 2, Signal816  , 16, 8);
hocam bu kod çalışıyor fakat benim
GUI_Disbitmap(0  , 2, örnek resim, 32, 32);
  32x32 boyutunda bir resim göstermem gerekiyor ve ben gösteremiyorum yukarıdaki söylediğim dis_page fonkiyonu yüzünden.

tunahanfıtlamak

Alıntı yapılan: mehmet - 02 Nisan 2020, 01:11:121)
GUI_Disbitmap(0  , 2, Signal816  , 16, 8);
2) Derleyici iyileştirmesini boyut olarak
değiştirmeniz yararlı olabilir.

2) Derleyici iyileştirmesini boyut olarak
değiştirmeniz yararlı olabilir.
bunu nasıl yapabilirim hocam araştırdım ama bulamadım.

Endorfin35+

Duz mantik bir onerim olsun. 2 adet 328 kullanarak birbiri ile haberlestirin. Biri ekrani sursun digeride diger isleri yapsin...
"İşi bilen yapar, az bilen akıl verir, bilmeyen eleştirir, yapamayan çamur atar."

tunahanfıtlamak

Alıntı yapılan: Endorfin35+ - 02 Nisan 2020, 12:33:26Duz mantik bir onerim olsun. 2 adet 328 kullanarak birbiri ile haberlestirin. Biri ekrani sursun digeride diger isleri yapsin...
öneriniz için teşşekür ederim hocam fakat devrem küçük 2 adet atmega328p sığmaz maalesef.

Kabil ATICI

Arduino MKR1000 işlemcisi olan SAMD21 Cortex-M0 kullanmanı önerebilirim, 256k flash,32k RAM.
Not: internette uygulamalar arasında bu işlemce ve oled ekran ile yapılmış kol saati de bulunmaktadır.
ambar7

mehmet

Derleyici olarak ne kullandığınız
belli değil.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

tunahanfıtlamak

Alıntı yapılan: mehmet - 02 Nisan 2020, 18:42:20Derleyici olarak ne kullandığınız
belli değil.
derleyicim arduino ide si hocam

tunahanfıtlamak

Alıntı yapılan: Kabil ATICI - 02 Nisan 2020, 15:05:22Arduino MKR1000 işlemcisi olan SAMD21 Cortex-M0 kullanmanı önerebilirim, 256k flash,32k RAM.
Not: internette uygulamalar arasında bu işlemce ve oled ekran ile yapılmış kol saati de bulunmaktadır.
teşşekür ederim hocam inceleyeceğim

volkanunal

Merhabalar Arduino Ide'si default olarak, program boyutunu düşürmek ile ilgili optimizasyon parametresi açık olarak gelmekte.


Şu şekilde 5 farklı hız / boyut konusunda optimizasyon parametreleri var

https://gcc.gnu.org/onlinedocs/gnat_ugn/Optimization-Levels.html

Arduino arayüzü şunu kullanmakta -> -Os

Bunlar nerede derseniz, şu dizine gidin.

C:\Program Files (x86)\Arduino\hardware\arduino\avr

ve platform.txt dosyasını açın.

compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects

ve

compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto


bu kısımlar gördüğünüz -Os komut satırı argümanını almakta.

Primum nil nocere