Çö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.
SDA ve SCL pinleri özel pinlerdir, sırası ile A4 ve A5 pinleridir. O kabloları o pinlere takmanız gerekiyor. Ayrıca 0 ve 1 pinleri RX ve TX haberleşmesi için kullanılır ve kod yüklerken boş olmaları gerekir.

Bu arada Arduino kartınız klon ise üzerinde zaten SDA ve SCL yazan pinler ayrıyeten bulunmakta.
 
İşin içinden çıkamadım usta bu şekilde yaptım ama yine ekran boş.

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

#define SDA 4
#define SCL 5
#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);
 }
}
 
Son düzenleyen: Moderatör:
İşin içinden çıkamadım usta bu şekilde yaptım ama yine ekran boş.

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

#define SDA 4
#define SCL 5
#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);
 }
}

Belki de i2C adresiniz farklıdır.

 
Bu şekilde ekrana yazı yazdırabildim ama.
Void loop() {} satırından sonrakileri sildikten sonra geldi.

Kod:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128.
#define SCREEN_HEIGHT 32.

#define BUTTON_PIN1 2
#define BUTTON_PIN2 3
#define BUTTON_PIN3 4

// sda-scl pinleri.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

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

void setup() {
 Serial.begin(115200);
 if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // i2c adresi.
 Serial.println(F("SSD1306 baglanti prob"));
 for(;;);
 }
 delay(2000);
 display.clearDisplay();
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(0, 10);
 display.println("message1");
display.display();
}

void loop() {

}

Butonları çalıştıramadım hala.
 
Son düzenleyen: Moderatör:
Bu şekilde ekrana yazı yazdırabildim ama.
Void loop() {} satırından sonrakileri sildikten sonra geldi.

Kod:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128.
#define SCREEN_HEIGHT 32.

#define BUTTON_PIN1 2
#define BUTTON_PIN2 3
#define BUTTON_PIN3 4

// sda-scl pinleri.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

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

void setup() {
 Serial.begin(115200);
 if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // i2c adresi.
 Serial.println(F("SSD1306 baglanti prob"));
 for(;;);
 }
 delay(2000);
 display.clearDisplay();
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(0, 10);
 display.println("message1");
display.display();
}

void loop() {

}

Butonları çalıştıramadım hala.

Butonlarda direnç kullandınız mı?
 
Evet 2.7k direnç ile deniyorum.
Merhaba,
Bu kod ile çalıştırdım buton basılıyken ekrana yazı geliyor çektiğimde siliniyor.
2.butonu nasıl ekleyebilirim yardımcı olabilir misiniz?

Kod:
// Adafruit-GFX-Library - Version: Latest.
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>

// Adafruit_SSD1306 - Version: Latest.
#include <Adafruit_SSD1306.h>

const byte buttonpin = 2;

const byte OLED_RESET = 4; // not used / nicht genutzt bei diesem Display.
Adafruit_SSD1306 display(OLED_RESET);

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

pinMode(buttonpin, INPUT_PULLUP);
// initialize with the I2C addr 0x3C / mit I2C-Adresse 0x3c initialisieren.
display.begin(SSD1306_SWITCHCAPVCC, 0x3c);

Serial.begin(9600);
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.
{
display.clearDisplay();
}

display.display();
}
 
Son düzenleyen: Moderatör:
Evet 2.7k direnç ile deniyorum.

Merhaba,
Bu kod ile çalıştırdım buton basılıyken ekrana yazı geliyor çektiğimde siliniyor.
2.butonu nasıl ekleyebilirim yardımcı olabilir misiniz?

Kod:
// Adafruit-GFX-Library - Version: Latest.
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>

// Adafruit_SSD1306 - Version: Latest.
#include <Adafruit_SSD1306.h>

const byte buttonpin = 2;

const byte OLED_RESET = 4; // not used / nicht genutzt bei diesem Display.
Adafruit_SSD1306 display(OLED_RESET);

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

pinMode(buttonpin, INPUT_PULLUP);
// initialize with the I2C addr 0x3C / mit I2C-Adresse 0x3c initialisieren.
display.begin(SSD1306_SWITCHCAPVCC, 0x3c);

Serial.begin(9600);
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.
{
display.clearDisplay();
}

display.display();
}

Yapmak istediğiniz şeyi tam anlamadım. Silinmesinin sebebi else fonksiyonu.
 
Yani şu an kod tam istediğim gibi çalışıyor ama ben 2.butonuda eklemek istiyorum 2.butona bastıgımda "güle güle" yazsın mesela.
 
Son düzenleyen: Moderatör:
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.
 
Çözüm

Geri
Yukarı