Merhaba, tabii ki, size yardımcı olabiliriz. Ancak, CS (Chip Select) pini olmayan bir ST7789 TFT ekranını kullanmak, biraz daha karmaşık bir bağlantı gerektirir. Normalde CS pini, SPI (Serial Peripheral Interface) haberleşme protokolünde cihazın seçilmesi için kullanılır. Eğer CS pini yoksa, o zaman sürekli olarak ekranla iletişim kurulmuş olacak ve bu da diğer cihazların SPI hattını kullanmasını zorlaştırabilir.
Ancak, eğer sadece bu ekran ve saat modülünü kullanacaksanız, CS pini olmadan da bu iki modülü bağlayabilirsiniz. İşte basit bir devre bağlantısı ve Arduino kod örneği:
Bağlantı Diyagramı:
- Arduino Uno'nun 5V pinini DS3231 modülünün VCC pinine bağlayın.
- Arduino Uno'nun GND pinini DS3231 modülünün GND pinine bağlayın.
- Arduino Uno'nun A4 pinini DS3231 modülünün SDA pinine bağlayın.
- Arduino Uno'nun A5 pinini DS3231 modülünün SCL pinine bağlayın.
- Arduino Uno'nun 5V pinini ST7789 ekranının VCC pinine bağlayın.
- Arduino Uno'nun GND pinini ST7789 ekranının GND pinine bağlayın.
- Arduino Uno'nun D11 pinini ST7789 ekranının SDA pinine bağlayın.
- Arduino Uno'nun D13 pinini ST7789 ekranının SCL pinine bağlayın.
Arduino Kodu:
#include <Wire.h>
#include <RTClib.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#define TFT_CS 10 // Rastgele bir sayı, çünkü CS pini yok
#define TFT_DC 9
#define TFT_RST 8
#define SCREEN_WIDTH 240
#define SCREEN_HEIGHT 240
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
RTC_DS3231 rtc;
void setup() {
Serial.begin(9600);
if (!rtc.begin()) {
Serial.println(“Couldn’t find RTC”);
while (1);
}
if (rtc.lostPower()) {
Serial.println(“RTC lost power, let’s set the time!”);
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
tft.init(SCREEN_WIDTH, SCREEN_HEIGHT);
tft.setRotation(1);
}
void loop() {
DateTime now = rtc.now();
tft.fillScreen(ST77XX_BLACK);
tft.setTextSize(2);
tft.setCursor(10, 10);
tft.setTextColor(ST77XX_WHITE);
tft.print(now.year(), DEC);
tft.print(‘/’);
tft.print(now.month(), DEC);
tft.print(‘/’);
tft.print(now.day(), DEC);
tft.setCursor(10, 40);
tft.print(now.hour(), DEC);
tft.print(‘:’);
tft.print(now.minute(), DEC);
tft.print(‘:’);
tft.print(now.second(), DEC);
delay(1000);
}
Bu kod, DS3231 gerçek zaman saatini okuyacak ve bu bilgileri ST7789 ekrana yazdıracaktır. Tabii ki, bağlantılar ve pin numaraları projenize göre değişebilir, bu sadece bir temel örnektir.