LCD Ekranda Çalışan Kodu OLED Ekrana Uygun Hale Getirme

Merhaba arkadaşlar elimdeki kod lcd ekranda çalışmaktadır. Bu kodu 0.96 inch I2C OLED Ekran - SSD1306 Satın Al | Robotistan.com bu ekranda çalıştıramadım bu konuda yardımcı olabilecek birisi var mı acaba ?

Merhaba,
lcd de çalıştırmak istediğiniz kod nedir?

Merhaba kodu atarsanız daha iyi yardımcı olabiliriz. :grinning_face_with_smiling_eyes:

Bu şekilde atıyorum metin belgesi veya arduino şeklinde kabul etmedği için.

/*
nabız ölçer ve oksimetre cihazı
*/

#include "MAX30100_PulseOximeter.h" // sensörün register, hafıza ve bilgilerinin alındığı kütüphane
#include <LiquidCrystal.h> // lcd ekranın kütüphanesi
#define REPORTING_PERIOD_MS     1000//verilerin ekrana yazdırma sıklığı için milisaniye cinsinden değişken değeri atanıyor


PulseOximeter pox;// PulseOximeter clasından bir obje oluşturuluyor
LiquidCrystal lcd(2, 4, 9, 10, 11, 12); // lcd ekranın bacakları tanımlanıyor .11= RS   9=E  5=D4 4=D5 3=D6 2=D7
uint32_t tsLastReport = 0;// en son raporlama değeri için bir değişken oluşturuluyor
int data=0; // ortamala da kullanılacaj değişken belirleniyor
float top=0; // ortalamada toplamın atanacağı değişken oluşturuluyor
float aratop; // ikinci ortalama işlemi için toplamın atnacağı değişken
int a=1; // serial ekranda parmak konmayınca sürekli olarak " barmagınzı sensore koyun" yazmasını engellemek için kullanılacak olan değişken atanıyor
// kalp atışı tespit edildiğinde bu aşağıdaki fonksiyon çalışır
void onBeatDetected()
{   
      lcd.clear(); // lcd temizle
     Serial.println("olcuyor"); //serial ekrana "olcuyor" yaz
     
     lcd.setCursor(1, 0); //lcd de birinci sutun 0. satıra gıt
     lcd.print("olcuyor");  // orda "olcuyor" yaaz
       data++;// ortalama için sayaç
     a=1;
    
}
  
void setup()//ana fonksiyon
{  pinMode(3,OUTPUT);
  digitalWrite(3,LOW);
  lcd.begin(16, 2); /* Kullandigimiz LCDnin sutun ve satir sayisini belirtmeliyiz */
    
    Serial.begin(9600);
     lcd.clear();// lcd temizleniyor
        lcd.setCursor(0, 0);// 0.satır ve 0.sutuna gidiliyor lcd de
        lcd.print("nabiz:");//lcd ye "nabız" yazısı yazdırılır 
    // kalp atışı durumunda fonksiyonumuzun çalışması için fonksiyonu aktif hale getiriyoruz
    pox.begin();
    pox.setOnBeatDetectedCallback(onBeatDetected);
}

void loop()// sonsuz döngü fonksiyonuna giriş yapılıyor
{  
    // update olayının olabildiğince erken olması lazım.
    pox.update();

    // sensor sıfır okursa alınan veri geçersiz olur 
   
    if (millis() - tsLastReport > REPORTING_PERIOD_MS) {//milis fonksiyonundan son raporlama değişkeni çıkarılıp bunun raporlaama zamanından buyuk olması durumunda ekrana veri aktarılıyor
     for(int i=0;i<10;i++){aratop=aratop+pox.getHeartRate();} //ilk ortamala olarak alınan 10 defa nabız değeri alınıp ortalamsı alınıyor
     aratop=aratop/10;  
     
     
       
      top=top+aratop;
      aratop=0; 
       if(data>4){ 
        top=top/4;
        
        lcd.clear();// lcd temizleniyor
        lcd.setCursor(0, 0);// 0.satır ve 0.sutuna gidiliyor lcd de
        lcd.print("nabiz:");//lcd ye "nabız" yazısı yazdırılır
        lcd.print(top);// top değişkenini ekrana yaz
        lcd.setCursor(11, 0); // 12. sutun 0. satıra git
        lcd.print("bpm    "); // beat per minute- dakıka toplam atım 
        lcd.setCursor(0, 1);// 0.sutun 1. satıra git
        lcd.print("Spo2:%"); // ekrana oksijen yaz
        lcd.print(pox.getSpO2()); // oksijen saturasyonunu veren değişkeni ekrana yaz
        lcd.setCursor(9, 1);
        lcd.print(pox.getTemperature());
        lcd.print("C");
        
        Serial.print("nabiz:"); // serial porta nabız yazısını yazdır
        Serial.print(top); // serial porta top değişkenini yazdır
        Serial.print("bpm / SpO2:%"); // serial porta "bpm/ SpO2 " yazısını yazdır
        Serial.println(pox.getSpO2());// oksijan saturasyonunu serial porta yaz
        delay(3000); // 3 sn bekle
        lcd.clear();// ekranı temızle
        top=0; // değişkneleri sıfırla
        data=0;
       }
        
        tsLastReport = millis();
    }
    if (pox.getHeartRate()==0)  {  lcd.setCursor(0, 0); lcd.print("  parmaginizi");lcd.setCursor(0, 1);lcd.print(" sensore koyun"); }// nabız algılanmaz ise lcd ekrana "parmagınızı sensore koyun" yazısı yazdır
                                  
    if(pox.getHeartRate()==0 && a==1) {  Serial.println("  parmaginizi");Serial.println("sensore koyun"); a=0;} // nabız algılanmaz ise serial porta "parmagınızı sensore koyun" yazısı yazdır
}

İsterseniz mail olarak atabilirim bu şekilde zor olursa

Mail atmaya gerek yok düzeltim. Kodları şaun yazıyorum.

Şu şekilde kodları yazdım setCursor’ları düzeltirsin sonradan.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(-1);

#include "MAX30100_PulseOximeter.h"
#define REPORTING_PERIOD_MS     1000
PulseOximeter pox;
uint32_t tsLastReport = 0;
int data=0;
float top=0;
float aratop;
int a=1;

void onBeatDetected()
{   
display.clearDisplay();// lcd temizle
     Serial.println("olcuyor"); //serial ekrana "olcuyor" yaz
     display.setTextSize(1);
 display.setTextColor(WHITE);
  display.setCursor(0,28);
     display.print("olcuyor");  // orda "olcuyor" yaaz
       data++;// ortalama için sayaç
     a=1;
    
}
void setup() {
 pinMode(3,OUTPUT);
  digitalWrite(3,LOW);
  Serial.begin(9600);
 // Oledimizi i2c Adresini girdik 0x3C
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  

  // Arduino Oledimizin Tampon belleğini temizledik
  display.clearDisplay();
  display.setTextSize(1);
 display.setTextColor(WHITE);
  display.setCursor(1,28);
  display.print("nabiz:");
   pox.begin();
    pox.setOnBeatDetectedCallback(onBeatDetected);
}

void loop() {
 // update olayının olabildiğince erken olması lazım.
    pox.update();

    // sensor sıfır okursa alınan veri geçersiz olur 
   
    if (millis() - tsLastReport > REPORTING_PERIOD_MS) {//milis fonksiyonundan son raporlama değişkeni çıkarılıp bunun raporlaama zamanından buyuk olması durumunda ekrana veri aktarılıyor
     for(int i=0;i<10;i++){aratop=aratop+pox.getHeartRate();} //ilk ortamala olarak alınan 10 defa nabız değeri alınıp ortalamsı alınıyor
     aratop=aratop/10;  
     
     
       
      top=top+aratop;
      aratop=0; 
       if(data>4){ 
        top=top/4;
        
        display.clearDisplay();// lcd temizleniyor
        display.setCursor(0, 0);
        display.print("nabiz:");//lcd ye "nabız" yazısı yazdırılır
        display.print(top);// top değişkenini ekrana yaz
        display.setCursor(1, 28); 
        display.print("bpm    "); // beat per minute- dakıka toplam atım 
        display.setCursor(0, 28);// 0.sutun 1. satıra git
        display.print("Spo2:%"); // ekrana oksijen yaz
        display.print(pox.getSpO2()); // oksijen saturasyonunu veren değişkeni ekrana yaz
        display.setCursor(9, 28);
        display.print(pox.getTemperature());
        display.print("C");
        
        Serial.print("nabiz:"); // serial porta nabız yazısını yazdır
        Serial.print(top); // serial porta top değişkenini yazdır
        Serial.print("bpm / SpO2:%"); // serial porta "bpm/ SpO2 " yazısını yazdır
        Serial.println(pox.getSpO2());// oksijan saturasyonunu serial porta yaz
        delay(3000); // 3 sn bekle
        display.clearDisplay();// ekranı temızle
        top=0; // değişkneleri sıfırla
        data=0;
       }
        
        tsLastReport = millis();
    }
    if (pox.getHeartRate()==0)  {  display.setCursor(0, 0); display.print("  parmaginizi");display.setCursor(0, 1);display.print(" sensore koyun"); }// nabız algılanmaz ise lcd ekrana "parmagınızı sensore koyun" yazısı yazdır
                                  
    if(pox.getHeartRate()==0 && a==1) {  Serial.println("  parmaginizi");Serial.println("sensore koyun"); a=0;} // nabız algılanmaz ise serial porta "parmagınızı sensore koyun" yazısı yazdır
}

hocam çok teşekkür ederim öncelikle
exit status 1
expected ‘;’ before ‘top’
şöyle bir hata alıyorum

Hatayı hangi satırda veriyor. İsterseniz ss atabilirsiniz.

O kod satırını bir üstindrki satırın sonuna noktalı virgül koymanız gerek :grinning_face_with_smiling_eyes:

; koyunca düzeldi teşekkür ederim görememişim bende

Hata kodunun bi üstündeki satırı display.clearDisplay();olarak değiştirirseniz hata geçer. :slightly_smiling_face:

Çok çok teşekkür ederim gerçekten. Çok yardımcı oldunuz

1 Beğeni