128x64 LCD Ekran MCP23017 I2C Modülü Kullanamıyorum

Bu iyi oldu teşekkürler. Mevcut haliyle nanoyu 97% kullanıyorum.

Kafamı kaldırınca net göreyim, küçücük ekranı aramasın gözlerim dedim. :)
ben kutuyu köşeli şekilde delik açmada berbat olduğum için çoğu projeme display yerine ledler koyarım umarım güzel açabilirsiniz kutuyu
 
Bir sıkıntım daha çıktı.
Ekranı kullanmak için u8g2lib kütüphanesinin exemple dosyasını kullandım.
Buradaki kodları kendime göre editleyerek devam ettim.
LM35 sensörü bağlayınca değeri bir kez görünüyor ama hiç değişmiyordu.
Bunun nedenini ararken farkettim ki tüm kodları do-while döngüsü içine yazmışlar.
Kodların hepsi "do" döngüsü içinde, "while" boş. Çeşitli kombinasyonlar deneyerek kodları döngü dışına çıkatmaya uğraştım ama hiç bir şekilde çalıştıramadım. Yanlış hatırlamıyorsam "do" kısmında kodlar sadece bir kez çalışıyordu. O yüzden sistemde birşey değişse de ekrana yansımıyor.
Bu konuda fikir verebilecek olan var mı?

do-while derdi:
do {
    //u8g2.setFont(u8g2_font_logisoso22_tn);
    // Volt Çerçeve
    u8g2.drawHLine(0, 0, 85);
    u8g2.drawHLine(0, 1, 85);
    for (int i = 1; i <= 28; i++)
    {
      u8g2.drawHLine(0, i, 2);
      u8g2.drawHLine(83, i, 2);
    }
    u8g2.drawHLine(0, 29, 85);
    u8g2.drawHLine(0, 30, 85);

    // Voltaj değerini ekrana yazdırma
    u8g2.setFont(u8g2_font_8x13B_mr);
    u8g2.drawStr(74, 27, "V");
    u8g2.setFont(u8g2_font_VCR_OSD_tr);
    u8g2.setCursor(10, 23);
    u8g2.print(vIN);
    /////////////////////////////////////////

    // Akım Çerçeve
    u8g2.drawHLine(0, 33, 85);
    u8g2.drawHLine(0, 34, 85);
    for (int i = 34; i <= 61; i++)
    {
      u8g2.drawHLine(0, i, 2);
      u8g2.drawHLine(83, i, 2);
    }
    u8g2.drawHLine(0, 62, 85);
    u8g2.drawHLine(0, 63, 85);

    // Amper değerini ekrana yazdırma
    if (I < 0) {
      u8g2.setFont(u8g2_font_8x13B_mr);
      u8g2.drawStr(74, 60, "A");
      u8g2.setFont(u8g2_font_VCR_OSD_tr);
      u8g2.drawStr(10, 56, "0.00");
    } else {
      u8g2.setFont(u8g2_font_8x13B_mr);
      u8g2.drawStr(74, 60, "A");
      u8g2.setFont(u8g2_font_VCR_OSD_tr);
      u8g2.setCursor(10, 56);
      u8g2.print(I);
    }
    ///////////////////////////////////////////

    // Kademe Çerçeve
    u8g2.drawHLine(86, 0, 42);
    u8g2.drawHLine(86, 1, 42);
    for (int i = 1; i <= 20; i++)
    {
      u8g2.drawHLine(86, i, 2);
      u8g2.drawHLine(126, i, 2);
    }
    u8g2.drawHLine(86, 19, 42);
    u8g2.drawHLine(86, 20, 42);

    if (vIN <= 11.00) {
      digitalWrite(yirmialtiv, LOW);
      digitalWrite(otuzikiv, LOW);
      delay(100);
      digitalWrite(onikiv, HIGH);
      u8g2.setFont(u8g2_font_siji_t_6x10);
      u8g2.drawStr(90, 10, "Kademe");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(92, 17, "12 Volt");
    } else if ((vIN >= 11.10) && (vIN <= 25.00)) {
      digitalWrite(onikiv, LOW);
      digitalWrite(otuzikiv, LOW);
      delay(100);
      digitalWrite(yirmialtiv, HIGH);
      u8g2.setFont(u8g2_font_siji_t_6x10);
      u8g2.drawStr(90, 10, "Kademe");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(92, 17, "26 Volt");
    } else if (vIN >= 25.10) {
      digitalWrite(onikiv, LOW);
      digitalWrite(yirmialtiv, LOW);
      delay(100);
      digitalWrite(otuzikiv, HIGH);
      u8g2.setFont(u8g2_font_siji_t_6x10);
      u8g2.drawStr(90, 10, "Kademe");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(92, 17, "32 Volt");
    }
    /////////////////////////////////////////////////////////
    // Temp Çerçeve
    u8g2.drawHLine(86, 22, 42);
    u8g2.drawHLine(86, 23, 42);
    for (int i = 23; i <= 41; i++)
    {
      u8g2.drawHLine(86, i, 2);
      u8g2.drawHLine(126, i, 2);
    }
    u8g2.drawHLine(86, 42, 42);
    u8g2.drawHLine(86, 43, 42);
    if (sicaklik >= 38) {
      digitalWrite(fan_led, HIGH);
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(90, 32, "Tem");
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(108, 31, "p");
      u8g2.setFont(u8g2_font_unifont_t_weather);
      u8g2.drawStr(113, 39, "\u0031");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.setCursor(94, 40);
      u8g2.print(sicaklik);
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(107, 40, "C");
    } else if (sicaklik <= 45) {
      digitalWrite(fan_led, LOW);;
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(90, 32, "Tem");
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(108, 31, "p");
      u8g2.setFont(u8g2_font_unifont_t_weather);
      u8g2.drawStr(113, 39, "\u0031");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.setCursor(94, 40);
      u8g2.print(sicaklik);
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(107, 40, "C");
    } else {
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(90, 32, "Tem");
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(108, 31, "p");
      u8g2.setFont(u8g2_font_unifont_t_weather);
      u8g2.drawStr(113, 39, "\u0031");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(92, 40, "0 C");
    }
    ///////////////////////////////////

    // Watt Çerçeve
    u8g2.drawHLine(86, 45, 42);
    u8g2.drawHLine(86, 46, 42);
    for (int i = 46; i <= 61; i++)
    {
      u8g2.drawHLine(86, i, 2);
      u8g2.drawHLine(126, i, 2);
    }
    u8g2.drawHLine(86, 62, 42);
    u8g2.drawHLine(86, 63, 42);
    
    // Watt hesaplama ve ekrana yazdırma
    double value = (I * vIN < 0) ? 0.00 : I * vIN;
    u8g2.setFont(u8g2_font_chikita_tr);
    u8g2.drawStr(119, 60, "W");
    u8g2.setFont(u8g2_font_profont10_tn);
    u8g2.setCursor(93, 58);
    u8g2.print(value);

    ///////////////////////////////////////
  } while ( u8g2.nextPage() );
 
C:
void setup() {
    BURAYI SEN DOLDUR
}

void loop() {
  a();
  delay(1000);
  b();
  delay(100);


 
}
  void a() {
    //u8g2.setFont(u8g2_font_logisoso22_tn);
    // Volt Çerçeve
    u8g2.drawHLine(0, 0, 85);
    u8g2.drawHLine(0, 1, 85);
    for (int i = 1; i <= 28; i++)
    {
      u8g2.drawHLine(0, i, 2);
      u8g2.drawHLine(83, i, 2);
    }
    u8g2.drawHLine(0, 29, 85);
    u8g2.drawHLine(0, 30, 85);

    // Voltaj değerini ekrana yazdırma
    u8g2.setFont(u8g2_font_8x13B_mr);
    u8g2.drawStr(74, 27, "V");
    u8g2.setFont(u8g2_font_VCR_OSD_tr);
    u8g2.setCursor(10, 23);
    u8g2.print(vIN);
    /////////////////////////////////////////

    // Akım Çerçeve
    u8g2.drawHLine(0, 33, 85);
    u8g2.drawHLine(0, 34, 85);
    for (int i = 34; i <= 61; i++)
    {
      u8g2.drawHLine(0, i, 2);
      u8g2.drawHLine(83, i, 2);
    }
    u8g2.drawHLine(0, 62, 85);
    u8g2.drawHLine(0, 63, 85);

    // Amper değerini ekrana yazdırma
    if (I < 0) {
      u8g2.setFont(u8g2_font_8x13B_mr);
      u8g2.drawStr(74, 60, "A");
      u8g2.setFont(u8g2_font_VCR_OSD_tr);
      u8g2.drawStr(10, 56, "0.00");
    } else {
      u8g2.setFont(u8g2_font_8x13B_mr);
      u8g2.drawStr(74, 60, "A");
      u8g2.setFont(u8g2_font_VCR_OSD_tr);
      u8g2.setCursor(10, 56);
      u8g2.print(I);
    }
    ///////////////////////////////////////////

    // Kademe Çerçeve
    u8g2.drawHLine(86, 0, 42);
    u8g2.drawHLine(86, 1, 42);
    for (int i = 1; i <= 20; i++)
    {
      u8g2.drawHLine(86, i, 2);
      u8g2.drawHLine(126, i, 2);
    }
    u8g2.drawHLine(86, 19, 42);
    u8g2.drawHLine(86, 20, 42);

    if (vIN <= 11.00) {
      digitalWrite(yirmialtiv, LOW);
      digitalWrite(otuzikiv, LOW);
      delay(100);
      digitalWrite(onikiv, HIGH);
      u8g2.setFont(u8g2_font_siji_t_6x10);
      u8g2.drawStr(90, 10, "Kademe");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(92, 17, "12 Volt");
    } else if ((vIN >= 11.10) && (vIN <= 25.00)) {
      digitalWrite(onikiv, LOW);
      digitalWrite(otuzikiv, LOW);
      delay(100);
      digitalWrite(yirmialtiv, HIGH);
      u8g2.setFont(u8g2_font_siji_t_6x10);
      u8g2.drawStr(90, 10, "Kademe");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(92, 17, "26 Volt");
    } else if (vIN >= 25.10) {
      digitalWrite(onikiv, LOW);
      digitalWrite(yirmialtiv, LOW);
      delay(100);
      digitalWrite(otuzikiv, HIGH);
      u8g2.setFont(u8g2_font_siji_t_6x10);
      u8g2.drawStr(90, 10, "Kademe");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(92, 17, "32 Volt");
    }
    /////////////////////////////////////////////////////////
    // Temp Çerçeve
    u8g2.drawHLine(86, 22, 42);
    u8g2.drawHLine(86, 23, 42);
    for (int i = 23; i <= 41; i++)
    {
      u8g2.drawHLine(86, i, 2);
      u8g2.drawHLine(126, i, 2);
    }
    u8g2.drawHLine(86, 42, 42);
    u8g2.drawHLine(86, 43, 42);
    if (sicaklik >= 38) {
      digitalWrite(fan_led, HIGH);
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(90, 32, "Tem");
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(108, 31, "p");
      u8g2.setFont(u8g2_font_unifont_t_weather);
      u8g2.drawStr(113, 39, "\u0031");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.setCursor(94, 40);
      u8g2.print(sicaklik);
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(107, 40, "C");
    } else if (sicaklik <= 45) {
      digitalWrite(fan_led, LOW);;
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(90, 32, "Tem");
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(108, 31, "p");
      u8g2.setFont(u8g2_font_unifont_t_weather);
      u8g2.drawStr(113, 39, "\u0031");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.setCursor(94, 40);
      u8g2.print(sicaklik);
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(107, 40, "C");
    } else {
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(90, 32, "Tem");
      u8g2.setFont(u8g2_font_6x10_tr);
      u8g2.drawStr(108, 31, "p");
      u8g2.setFont(u8g2_font_unifont_t_weather);
      u8g2.drawStr(113, 39, "\u0031");
      u8g2.setFont(u8g2_font_chikita_tr);
      u8g2.drawStr(92, 40, "0 C");
    }
    ///////////////////////////////////

    // Watt Çerçeve
    u8g2.drawHLine(86, 45, 42);
    u8g2.drawHLine(86, 46, 42);
    for (int i = 46; i <= 61; i++)
    {
      u8g2.drawHLine(86, i, 2);
      u8g2.drawHLine(126, i, 2);
    }
    u8g2.drawHLine(86, 62, 42);
    u8g2.drawHLine(86, 63, 42);
   
    // Watt hesaplama ve ekrana yazdırma
    double value = (I * vIN < 0) ? 0.00 : I * vIN;
    u8g2.setFont(u8g2_font_chikita_tr);
    u8g2.drawStr(119, 60, "W");
    u8g2.setFont(u8g2_font_profont10_tn);
    u8g2.setCursor(93, 58);
    u8g2.print(value);

    ///////////////////////////////////////
  }
 
 void b(){
 
  ( u8g2.nextPage() );
 
 }
 
bu şekilde devam etmeni tavsiye ederim programını parça parça voidlere bölersen hem istediğin kısmı devre dışı bırakman kolay hemde kafan karışmaz. Uzman değilim bende adım adım gelişiyorum daha programlamada
 
bu şekilde devam etmeni tavsiye ederim programını parça parça voidlere bölersen hem istediğin kısmı devre dışı bırakman kolay hemde kafan karışmaz. Uzman değilim bende adım adım gelişiyorum daha programlamada
Örnekler arasında "full buffer", "page buffer" var. Ben ilk yaptığımda "page buffer" ile yapmışım. Şimdi "full buffer" örneğini açıp kodları oraya taşıdım sorun çözüldü gibi. Sistemi tam oturttuktan sonra bende kodları fonksiyonlara bölmeyi düşünüyordum. Tekrar eden çok kod var ve yer kaplıyor.
 
Örnekler arasında "full buffer", "page buffer" var. Ben ilk yaptığımda "page buffer" ile yapmışım. Şimdi "full buffer" örneğini açıp kodları oraya taşıdım sorun çözüldü gibi. Sistemi tam oturttuktan sonra bende kodları fonksiyonlara bölmeyi düşünüyordum. Tekrar eden çok kod var ve yer kaplıyor.
ne var ne yok 328in içine yazıyorsunuz değil mi. PROGMEM ve EEPROMU kullanın, F makrosunada bakabilirsiniz daha önce onunda hafızazada yer açtığını duymuşum ama hiç denemedim
 
"u8g2" kütphanesinde F makrosu çalışmıyor
SS.png
 
Ben biraz balık hafızalı olduğum için öğrendiklerimi kısa süre sonra unutuyorum. O yüzden sorunları anlık çözüyorum.
 
12864 glcd li projeleri seviyorum ekran güzel olmuş bu arada bende de240x128 glcd var u8g2 ile çalıştırabilirsem bir şeyler yapmayı düşünüyorum
 
Şu kaynak sana yardımcı olur.

Teşekkürler, ST7920 kullanmıyor 128x64 ler gibi bendeki "T6963C" nin klon chipi var ustunde suraya kutuphane sahibi ile gorusup hangi pin nereye denk gelecekbir tablo çıkardım bu tarz ekranlar için denk gelipte kullanmak isteyen olursa diye:

vakitsizlikten oturup deneyemdim 1 sene olacak neredeyse gitjhubtaki gonderide :) 3d ye kullanma düşüncem varda düzenlemek gerekilibr kuutphaneyi pixelleri daha fazla olduğu için bendekinin
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
7,169
Mesajlar
121,750
Üyeler
2,899
Son üye
Abdullahuguz

Son kaynaklar

Son profil mesajları

Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Back
Top