Oled kütüphanesine kendi fontumu nasıl eklerim?
  • merhaba arkadaşlar. oled ekran ve arduino ile fırın için ekran yapıyorum. iconlarını falan yaptım yükledim. saat kısmında kendi fontumu oluşturdum, bu fontu OLED_I2C kütüphanesine yüklemem gerekiyor. Alttaki PapiFont benim fontum, benim anlamadıgım altta soru işaretiyle belirttiğim kısım!!! fontun en ve boyunu belirtiyor sanırım. biçok deneme yaptım ama karışık şekiller çıkıyor her zaman. kullandığım ekran 128x64 I2C, fontun eni 19 pixel, yüksekliği 24 pixel... yaptığım çalışmaya burdan bakabilirsiniz



    Birinci videoda eklemek istediğim fontu bitmap olarak yükleyip çalıştırıyorum ama çok yer kaplıyor.. alttaki soru işareti olan yerin ne olduğunu söyleyebilirseniz çok sevinirim.. teşekkürler.



    #if defined(__AVR__)
    #include
    #define fontdatatype const uint8_t
    #elif defined(__PIC32MX__)
    #define PROGMEM
    #define fontdatatype const unsigned char
    #elif defined(__arm__)
    #define PROGMEM
    #define fontdatatype const unsigned char
    #endif


    fontdatatype MediumNumbers[] PROGMEM =
    {
    0x0c, 0x10, 0x2d, 0x0d,

    0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, // -
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, // .
    0x00, 0x00, 0x02, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x81, 0x00, 0x00, // /
    0x00, 0xfc, 0x7a, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7a, 0xfc, 0x00, 0x00, 0x7e, 0xbc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xbc, 0x7e, 0x00, // 0
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, 0x00, // 1
    0x00, 0x00, 0x02, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, 0x00, 0x00, 0x7e, 0xbd, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x81, 0x00, 0x00, // 2
    0x00, 0x00, 0x02, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, 0x00, 0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, 0x00, // 3
    0x00, 0xfc, 0x78, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3d, 0x7e, 0x00, // 4
    0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, 0x00, // 5
    0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x02, 0x00, 0x00, 0x00, 0x7e, 0xbd, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, 0x00, // 6
    0x00, 0x00, 0x02, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7a, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, 0x00, // 7
    0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, 0x00, 0x00, 0x7e, 0xbd, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, 0x00, // 8
    0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, 0x00, 0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, 0x00, // 9
    };

    fontdatatype PapiFont[] PROGMEM =
    {

    ?x??, ?x??, ?x??, ?x??,

    0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF,0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, //b0
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,//b1
    0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF,0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0x7E,0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xF7, 0xF3,0xF1, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,//b2
    0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF,0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x3E, 0x7E,0x7F, 0xF7, 0xF7, 0xF7, 0xE3, 0xE3, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,//b3
    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xFC, 0xFF, 0x7F, 0x1F, 0x0F, 0x03, 0x01, 0x00,0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFC, 0xFE, 0xFF, 0x3F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00,0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F,//b4
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,0x1E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,//b5
    0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x7F, 0x7F,0x7F, 0x7F, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,0x3C, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,//b6
    0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xCF, 0xFF, 0xFF,0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFF,0xFF, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0xFF,0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,//b7
    0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF,0xFF, 0xFF, 0xFE, 0xC3, 0xE7, 0xE7, 0xF7, 0xFF, 0x7E, 0x3E, 0x3E, 0x3C, 0x1C, 0x3C, 0x3E, 0x3E,0x7E, 0xFF, 0xF7, 0xE7, 0xE7, 0xC3, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,//b8
    0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF,0xFF, 0xFF, 0xFE, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,//b9
    };
  • bir ustteki font tanımına bakınca fontun adeti, genişlik ve yukseklik bilgisi olabilir. fontu hazırladığın programın opsiyonlarına bir bak.
  • evet fontun en boy bilgilerini içeriyor. birkaç programda font hazırladım ayarlarını falan değiştirdim ama olmadı.. şu adresten faydalanmak istedim ki zaten kütüphaneyi hazırlayanlar bunlar http://www.rinkydinkelectronics.com/t_make_font_file_mono.php burdada sorun yaşadım, fontun en boy oranları '8' ve katları olması gerekiyormuş.Benim font buna uymadı çünkü 19x24 pixel.. bende üşenmedim soru işareti olan yerdeki ifadeleri değiştirdim. Baştaki ikisinin en ve boyla ilgili olduğunu anladım. Sondaki ikisinin ne olduğunu bilmiyorum, kütüphanedeki BigNumbers fontun sonundaki ifadelerin aynısı kopyalayıp yapıştırdım bu hale geldi 0x13, 0x18, 0x2d, 0x0d, ve oldu :) ilginiz için tşk ederim..

  • arduinodakikutuphane içnde bu fontu okuyan pgrogramı bir incele o kodların ne olduğu anlaşılir çunku o datadan fontu oluşturuyor grafik olarak
  • Merhaba ben de farklı şekilde menü tasarımı yapıyorum.Kodlarınızı paylaşma şanısnız var mı? ben analog olarak okudum butonları sizinkiler nasıl acaba?
  • merhaba EmbeddedSystem. daha öncede söylediğim gibi fırın için bir çalışma bu yaptığım ama henüz bitiremedim..

    #include
    OLED myOLED(SDA, SCL, 8);

    extern uint8_t bluetooth[];
    extern uint8_t firin_ust_alt[];
    extern uint8_t firin_ust[];
    extern uint8_t firin_alt[];
    extern uint8_t fan[];
    extern uint8_t ayarlar[];
    extern uint8_t saat[];
    extern uint8_t sicaklik[];
    extern uint8_t ten[];
    extern uint8_t maximus[];
    extern uint8_t saatli[];
    extern uint8_t firin_ust_alt_inv[];
    extern uint8_t firin_ust_inv[];
    extern uint8_t firin_alt_inv[];
    extern uint8_t sicaklik_inv[];
    extern uint8_t saat_inv[];
    extern uint8_t ayarlar_inv[];

    //***BUTONLAR***//
    int geriBUTON=8;
    int okBUTON=9;
    int sagBUTON =10;
    int solBUTON=11;

    //***SAYAÇLAR***//
    int solOKU=3;
    int sagOKU;
    int okOKU;
    int sayac=0;
    int solT=0;
    int sagT=0;
    //***çıkışlar***//
    int sagLED = 6;
    int BUZZER = 7;


    void setup()
    {
    myOLED.clrScr();
    myOLED.begin();
    Serial.begin(9600);
    pinMode(sagLED, OUTPUT);
    pinMode(BUZZER, OUTPUT);
    pinMode(okBUTON, INPUT);
    pinMode(sagBUTON, INPUT);
    pinMode(solBUTON, INPUT);
    pinMode(geriBUTON, INPUT);

    myOLED.drawBitmap(10,0,maximus, 108, 48);
    myOLED.update();
    delay(1500);
    myOLED.clrScr();
    myOLED.drawBitmap(0,12,ayarlar_inv, 40, 40);
    myOLED.drawBitmap(44,12,sicaklik_inv, 40, 40);
    myOLED.drawBitmap(88,12,saat_inv, 40, 40);
    myOLED.update();
    }

    void loop()
    {
    ////***ANA MENÜDEYKEN SAĞ SOL TUŞLARININ NE YAPACAĞI BELİRTİLİYOR***////

    switch (sagOKU)
    {
    case 1:
    myOLED.clrScr();
    myOLED.drawBitmap(0,12,ayarlar, 40, 40);
    myOLED.drawBitmap(44,12,sicaklik_inv, 40, 40);
    myOLED.drawBitmap(88,12,saat_inv, 40, 40);
    myOLED.update();
    break;
    case 2:
    myOLED.clrScr();
    myOLED.drawBitmap(0,12,ayarlar_inv, 40, 40);
    myOLED.drawBitmap(44,12,sicaklik, 40, 40);
    myOLED.drawBitmap(88,12,saat_inv, 40, 40);
    myOLED.update();
    break;
    case 3:
    myOLED.clrScr();
    myOLED.drawBitmap(0,12,ayarlar_inv, 40, 40);
    myOLED.drawBitmap(44,12,sicaklik_inv, 40, 40);
    myOLED.drawBitmap(88,12,saat, 40, 40);
    myOLED.update();
    break;
    }
    /////***ANA MENÜDEYKEN OK BUTONUNA BASILINCA BU KISIM ÇALIŞACAK***///
    switch (sayac)
    {
    case 1:
    myOLED.clrScr();
    myOLED.drawBitmap(0,12,firin_ust_alt, 40, 40);
    myOLED.drawBitmap(44,12,firin_ust_inv, 40, 40);
    myOLED.drawBitmap(88,12,firin_alt_inv, 40, 40);
    myOLED.update();
    break;
    case 2:
    myOLED.clrScr();
    myOLED.drawBitmap(0,12,firin_ust_alt_inv, 40, 40);
    myOLED.drawBitmap(44,12,firin_ust, 40, 40);
    myOLED.drawBitmap(88,12,firin_alt_inv, 40, 40);
    myOLED.update();
    break;
    case 3:
    myOLED.clrScr();
    myOLED.drawBitmap(0,12,firin_ust_alt_inv, 40, 40);
    myOLED.drawBitmap(44,12,firin_ust_inv, 40, 40);
    myOLED.drawBitmap(88,12,firin_alt, 40, 40);
    myOLED.update();
    break;
    }

    //////////*************SAĞ BUTONA BASILINCA BUNLAR OLSUN***************///////////////


    // sagBUTON OKU
    if (digitalRead(sagBUTON) == HIGH )
    {
    digitalWrite(BUZZER, HIGH);
    delay(10);
    digitalWrite(BUZZER, LOW);
    sagOKU++;
    solOKU--;
    delay(100);
    if(sagOKU==4)
    {
    sagOKU=1;
    solOKU=3;
    if(sagOKU==2)
    {
    solOKU=2;
    }
    }
    }





    //////////*************SOL BUTONA BASILINCA BUNLAR OLSUN***************///////////////
    // solBUTON OKU

    if (digitalRead(solBUTON) == HIGH )
    {
    digitalWrite(BUZZER, HIGH);
    delay(10);
    digitalWrite(BUZZER, LOW);
    solOKU++;
    sagOKU--;
    delay(100);
    if(solOKU==4)
    {
    solOKU=1;
    sagOKU=3;
    }
    }

    //////////*****OK BUTONU MACERASI******///////////
    //
    if (digitalRead(okBUTON) == HIGH)
    {
    if(sagOKU==1&&digitalRead(geriBUTON) == LOW)
    {
    digitalWrite(BUZZER, HIGH);
    delay(10);
    digitalWrite(BUZZER, LOW);
    sayac=1;
    solOKU=0;
    sagOKU=0;
    delay(100);
    if (digitalRead(sagBUTON) == HIGH)
    {
    digitalWrite(BUZZER, HIGH);
    delay(10);
    digitalWrite(BUZZER, LOW);
    sagOKU++;
    sayac=2;
    solOKU--;

    delay(100);
    }
    }
    }

    }
  • şu adresteki pixelformer adında program var bunu indir. yüklemek istediğin iconları bu programla düzenle ve bmp olarak kaydet http://www.qualibyte.com/pixelformer/


    daha sonra lcd assistant adındaki programla daha önceden bmp olarak kaydettiğin dosyayı aç ve çalışmalarına başla. http://en.radzio.dxp.pl/bitmap_converter/
  • benim takıldığım nokta ise!!! sağ ve sol adında butonlarım var, videoda görüldüğü gibi menüdeyken AYARLAR, SICAKLIK, ve ZAMAN SAATİ arasında geziniyorum bu butonlarla. Mesela AYARLAR iconunun üstündeyken OK butonuna bastığımda ayarların alt menüsü açılıyor.. buraya kadar sıkıntı yok.. alt menüde gezinirken sağ sol butonlarını kullanamıyorum. Kısacası bir butona birden fazla değişken tanımlamam gerekiyor bunu nasıl yapabilirim. :)
  • EmbeddedSystem istersen hazırladığım iconların dosyalarınıda paylaşabilirim.
  • Bunun için analog buton kullanmalısınız işte hocam yani butonlara direnç bağlayarak teşk girişten okumanız gerekiyor.Bakın ben geldiğim yere kadar kodumu koyayım henüz düzenleme yapmadım ancak.

    #include avr/interrupt.h>
    #include avr/io.h>
    #include SPI.h>
    #include Wire.h>
    #include Adafruit_GFX.h>
    #include Adafruit_SSD1306.h>
    #define buton_yukari_max 360
    #define buton_yukari_min 320
    #define buton_asagi_max 310
    #define buton_asagi_min 290
    #define set_max 250
    #define set_min 210
    #define OLED_RESET 4
    Adafruit_SSD1306 display(OLED_RESET);
    volatile uint16_t tasma,volkan;
    int kontrol=0;
    ISR(TIMER2_OVF_vect)
    {
    tasma++;
    }
    float deger,yuzde;
    int kayma,butondegeri=0,butondurumu=1,kronometre_btn_dgr=0;
    #if (SSD1306_LCDHEIGHT != 64)
    #error("Height incorrect, please fix Adafruit_SSD1306.h!");
    #endif
    void setup(){
    Serial.begin(9600);
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
    display.display();
    display.clearDisplay();
    timer2_init();
    }
    void loop()
    {
    if(tasma<500)<br /> {
    display.setTextSize(1);
    display.setCursor(90,55);
    display.print(".");
    }
    else if(tasma<1000)<br /> {
    display.setTextSize(1);
    display.setCursor(90,55);
    display.print(".");
    display.setTextSize(1);
    display.setCursor(95,55);
    display.print(".");
    }
    else if(tasma<1500) <br /> {
    display.setTextSize(1);
    display.setCursor(90,55);
    display.print(".");
    display.setTextSize(1);
    display.setCursor(95,55);
    display.print(".");
    display.setTextSize(1);
    display.setCursor(100,55);
    display.print(".");
    }
    else if(tasma>2000)
    {
    display.setCursor(75,55);
    display.print("");
    display.setCursor(80,55);
    display.print("");
    display.setCursor(85,55);
    display.print("");
    tasma=0;
    TCNT2=0;
    cli();
    }
    deger=deger+7;
    kayma=deger*128/1023;
    yuzde=deger*100/1023;
    if(kayma <128)<br /> {
    anaekran();

    }
    else{
    menu();
    }
    }
    void menu(){
    display.clearDisplay();
    while(1){
    delay(20);
    display.setTextSize(2);
    display.setCursor(40,0);
    display.print("MENU");
    display.setTextSize(1);
    display.setCursor(25,17);
    display.print("Saati Ayarla");
    display.setCursor(25,28);
    display.print("Alarm Kur");
    display.setCursor(25,39);
    display.print("Kronometre");
    display.display();
    imlec();
    }
    }
    void anaekran(){
    nokta();
    display.drawRect(0,0,128,32,WHITE);
    display.display();
    display.clearDisplay();
    display.fillRect(0,0,kayma,32,WHITE);
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(20,34);
    display.println("%");
    display.setTextSize(2),
    display.setCursor(50,34);
    display.println(yuzde);
    display.setTextSize(1);
    display.setCursor(90,50);

    }
    void nokta(){
    display.setTextSize(1);
    display.setCursor(20,55);
    display.println("Yukleniyor");
    }
    void timer2_init()
    {
    TCCR2B=0x05;
    TCNT2=0;
    // TIMSK2= (1 << TOIE2);<br /> TIMSK2=0x01;
    tasma=0;
    sei();
    }
    void deger_oku() {
    butondegeri = analogRead(A0);
    Serial.println(butondegeri);
    }
    void imlec () {
    deger_oku();
    delay(45);

    if ( butondegeri <= buton_yukari_max && butondegeri >= buton_yukari_min ) {
    kontrol--;
    if (kontrol <= 0) {<br /> kontrol=3;
    }
    }

    if ( butondegeri <= buton_asagi_max && butondegeri >= buton_asagi_min ) {
    kontrol++;
    if (kontrol >= 4) {
    kontrol = 1;
    }
    }
    if ( kontrol == 1 ) {
    display.clearDisplay();
    display.setTextColor(WHITE);
    display.setCursor(16, 17);
    display.setTextSize(1);
    display.print(">");
    }
    if ( kontrol == 2 ) {
    display.clearDisplay();
    display.setTextColor(WHITE);
    display.setCursor(16, 28);
    display.setTextSize(1);
    display.print(">");
    }
    if (kontrol == 3) {
    display.clearDisplay();
    display.setTextColor(WHITE);
    display.setCursor(16, 39);
    display.setTextSize(1);
    display.print(">");
    if(butondegeri<=set_max && butondegeri>=set_min)
    {
    kronometre();
    kronometre_btn_dgr=0;
    }
    }
    }
    void kronometre()
    {
    display.clearDisplay();
    while(1){
    delay(100);
    deger_oku();
    display.setTextColor(WHITE);
    display.setCursor(10,25);
    display.setTextSize(2);
    display.print("00.00.00");
    display.display();
    if(butondegeri <= buton_yukari_max && butondegeri >= buton_yukari_min )
    {
    menu();
    kontrol=0;
    }/////kronometre ayarının yapılacağı yer.
    // kronometre_btn_dgr=0;
    if(butondegeri<=set_max && butondegeri>=set_min)
    {

    kronometre_baslat();
    // kronometre_btn_dgr=0;
    }
    }
    }
    void kronometre_baslat()
    {
    display.clearDisplay();
    while(1){
    deger_oku();
    delay(10);
    display.setTextColor(WHITE);
    display.setCursor(10,25);
    display.setTextSize(2);
    display.print("volkan");
    display.display();
    if(butondegeri <= buton_yukari_max && butondegeri >= buton_yukari_min )
    {
    menu();
    kontrol=0;
    }
    }
    }

    Örneği kronomontre başlatta yukarı butonuna bastığımda tekrar geri gidiyorum.Siz kendiniz de ki gbi yapmanız gerekiyorsa eğer.Şöyle olabilir.Genel bir fonksiyon yazmanız lazım.Mesala ben de ki imlec gibi. gidiş gelişler ınun içierinsde olmalı.Değer oku ile birlikte çalışmalı bende ki gibi.



  • #include SPI.h>
    #include Wire.h>
    #include Adafruit_GFX.h>
    #include Adafruit_SSD1306.h>
    #define OLED_RESET 4
    Adafruit_SSD1306 display(OLED_RESET);
    const int select=5;
    const int right=6;
    const int down=8;
    const int up=9;
    const int led=10;
    const int led1=11;
    int valselect,valright,valup,valdown;
    int a=1,b=0,c=0;
    #if (SSD1306_LCDHEIGHT!=64)
    #error ("Height incorrect,please fix Adafruit_SSD1306.h!");
    #endif
    void setup()
    {
    pinMode(select,INPUT);
    pinMode(right,INPUT);
    pinMode(down,INPUT);
    pinMode(up,INPUT);
    pinMode(led,OUTPUT);
    pinMode(led1,OUTPUT);
    display.begin (0x3C);
    display.clearDisplay();
    }
    void loop()
    {
    valselect = digitalRead(select);
    valright = digitalRead(right);
    valup = digitalRead(up);
    valdown = digitalRead(down);
    if(valup==LOW) {
    b= (-1);
    }
    else{
    b = 0;
    }
    if (valdown == LOW) {
    c = (1);
    }
    else{
    c = 0;
    }
    a=b+a+c;
    if (a<1) {<br /> a=1;
    }
    if (a>6) {
    a=6;
    }
    switch (a) {
    case 1:
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(BLACK,WHITE);
    display.setCursor(0,0);
    display.println("Birinci:");
    display.setTextColor(WHITE);
    display.println("ikinci:");
    display.println("Ucuncu:");
    display.println("Dorduncu:");
    display.display();
    delay(50);
    digitalWrite(led,LOW);
    digitalWrite(led1,LOW);
    while (valselect ==LOW) {
    digitalWrite(led,HIGH);
    delay(100);
    digitalWrite(led,LOW);
    delay(100);
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Led1 Acik");
    display.display();
    if(digitalRead(right)== LOW)
    {
    break;
    }
    }
    break;
    case 2: display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Birinci:");
    display.setTextColor(BLACK,WHITE);
    display.println("ikinci:");
    display.setTextColor(WHITE);
    display.println("Ucuncu:");
    display.println("Dorduncu:");
    display.display();
    delay(50);
    digitalWrite(led,LOW);
    digitalWrite(led1,LOW);
    while (valselect == LOW)
    {
    digitalWrite(led1,HIGH);
    delay(100);
    digitalWrite(led1,LOW);
    delay(100);
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Led2 Acik");
    display.display();
    if(digitalRead(right)== LOW)
    {
    break;
    }
    }
    break;
    case 3:
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Birinci:");
    display.println("ikinci:");
    display.setTextColor(BLACK,WHITE);
    display.println("Ucuncu:");
    display.setTextColor(WHITE);
    display.println("Dorduncu:");
    display.display();
    delay(50);
    digitalWrite(led,LOW);
    digitalWrite(led1,LOW);
    while (valselect == LOW)
    {
    digitalWrite(led,HIGH);
    digitalWrite(led1,HIGH);
    delay(100);
    digitalWrite(led,LOW);
    digitalWrite(led1,LOW);
    delay(100);
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Ledler Acik");
    display.display();
    if(digitalRead(right)== LOW)
    {
    break;
    }
    }
    break;
    case 4:
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Birinci:");
    display.println("ikinci:");
    display.println("Ucuncu:");
    display.setTextColor(BLACK,WHITE);

    display.println("Dorduncu:");

    display.setTextColor(WHITE);
    display.display();
    digitalWrite(led,LOW);
    digitalWrite(led1,LOW);
    while (valselect == LOW)
    {
    digitalWrite(led,LOW);
    digitalWrite(led1,HIGH);
    delay(100);
    digitalWrite(led,HIGH);
    digitalWrite(led1,LOW);
    delay(100);
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Ledleri degistr");
    display.display();
    if(digitalRead(right)== LOW)
    {
    break;
    }
    }
    break;
    case 5:
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("ikinci:");
    display.println("Ucuncu:");
    display.println("Dorduncu:");
    display.setTextColor(BLACK,WHITE);
    display.println("Birinci:");
    display.display();
    digitalWrite(led,LOW);
    digitalWrite(led1,LOW);
    while (valselect == LOW)
    {
    digitalWrite(led,LOW);
    digitalWrite(led1,HIGH);
    delay(100);
    digitalWrite(led,HIGH);
    digitalWrite(led1,LOW);
    delay(100);
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println("Ledleri degistr");
    display.display();
    if(digitalRead(right)== LOW)
    {
    break;
    }
    }
    break;
    }
    }
  • reserved :) değerli buralar
  • ben de haftasonun bir video atacağım
  • mail harici size ulaşabileceğim bir fb hesabı var mı?

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.