Çözüldü Yazılan koddaki sorun nedir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

stolci

Zeptopat
Katılım
15 Nisan 2024
Mesajlar
10
Daha fazla  
Cinsiyet
Erkek
Merhaba, aşağıdaki kodu düzenleyip yükledim ama ekranın her yerinde noktalar çıktı. Nerede yanlışlık yapmış olabilirim? Bakabilir misiniz lütfen?

Kod:
#include <Wire.h>
#include <Adafruit_SSD1306.h>

#define SDA 0
#define SCL 1
#define BUTTON_PIN1 2
#define BUTTON_PIN2 3
#define BUTTON_PIN3 4

Adafruit_SSD1306 display(128, 32, SDA, SCL);

String message1 = "Mesaj 1";
String message2 = "Mesaj 2";
String message3 = "Mesaj 3";

void setup() {
 Serial.begin(9600);
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 display.clearDisplay();
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(0, 0);
 display.print(message1);
 pinMode(BUTTON_PIN1, INPUT);
 pinMode(BUTTON_PIN2, INPUT);
 pinMode(BUTTON_PIN3, INPUT);
}

void loop() {
 int button1State = digitalRead(BUTTON_PIN1);
 int button2State = digitalRead(BUTTON_PIN2);
 int button3State = digitalRead(BUTTON_PIN3);

 if (button1State == HIGH) {
 display.clearDisplay();
 display.print(message1);
 } else if (button2State == HIGH) {
 display.clearDisplay();
 display.print(message2);
 } else if (button3State == HIGH) {
 display.clearDisplay();
 display.print(message3);
 }
}
 

Dosya Ekleri

  • WhatsApp Image 2024-04-19 at 09.59.13.jpeg
    WhatsApp Image 2024-04-19 at 09.59.13.jpeg
    126,4 KB · Görüntüleme: 61
Son düzenleyen: Moderatör:
Çözüm
C++:
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>

#include <Adafruit_SSD1306.h>

const byte buttonpin = 2;
#define but2 3

const byte OLED_RESET = 4;
Adafruit_SSD1306 display(OLED_RESET);

void setup()
{
pinMode(13, OUTPUT);
pinMode(but2,INPUT_PULLUP);

pinMode(buttonpin, INPUT_PULLUP);

display.begin(SSD1306_SWITCHCAPVCC, 0x3c);

display.clearDisplay();
display.display();
delay(2000);
display.clearDisplay();

display.setTextColor(INVERSE);
}

void loop()
{
if (digitalRead(buttonpin) == LOW)
{
display.clearDisplay();
display.setCursor(41,20);
display.setTextSize(1);
display.print("");
display.setCursor(0,0);
display.setTextSize(4);
display.print("Merhaba");
}
else if (digitalRead(but2) == LOW)
{
display.clearDisplay();
display.setCursor(41,20);
display.setTextSize(1);
display.print("");
display.setCursor(0,0);
display.setTextSize(4);
display.print("Gule Gule");
}

display.display();
}

3.pine bir buton daha atadım bir deneyin. OLED ekranla hiç çalışmadım o yüzden bir hata alırsanız hata mesajıyla beraber atın.
Aslında var ama olur mu bilmiyorum aynı ekranın sağ tarafına sabit sürekli saati yazdırmak istiyorum olabilirse saat için ayrı 2 buton ekleyip saati de değiştirmek istiyorum.yani merhaba ve güle güle yazısı butonlar basıldıkca değişecek ama saat sabit kalacak
 
Saati kod üzerinden ayarlamayı seçerseniz, saat kodunu yazabilirim ama dediğim gibi OLED üzerinde hiç çalışmadım yani saatin konumunu sizin ayarlamanız lazım.

Saati butondan ayarlamak için 2 buton yetmeyebilir.
 
C++:
int saat = 23;
int dakika = 59;
int saniye = 55;

unsigned long eski_zaman;
unsigned long yeni_zaman;

void sayac() {
 yeni_zaman = millis() / 1000;
 if (eski_zaman < yeni_zaman) {
 saniye++;
 eski_zaman = yeni_zaman;
 }

 if (saniye > 59) {
 dakika++;
 saniye = 0;
 } else if (dakika > 59) {
 saat++;
 dakika = 0;
 saniye = 0;
 } else if (saat > 23) {
 saat = 0;
 dakika = 0;
 saniye = 0;
 }
}

void setup() {
 Serial.begin(9600);
}

void loop() {
 sayac();

 Serial.print(saat);
 Serial.print(".");
 Serial.print(dakika);
 Serial.print(".");
 Serial.println(saniye);
}

Bu kodda saat, dakika ve saniye seri monitöre yazdırılıyor "Serial.begin(9600);" yazısını silip, "Serial.print" kodlarının yerine de LCD ekranın yazdırma komutunu yazarsanız sadece LCD ekranda konumu ayarlamak kalır diye düşünüyorum.
 

Geri
Yukarı