#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>
#include <DFRobotDFPlayerMini.h>
#define EKRAN_GENISLIK 128
#define EKRAN_YUKSEKLIK 64
Adafruit_SSD1306 ekran(EKRAN_GENISLIK, EKRAN_YUKSEKLIK, &Wire, -1);
RTC_DS3231 saatModulu;
HardwareSerial seriHaberlesme(2);
DFRobotDFPlayerMini mp3Calici;
float radyoFrekansi = 100.0;
void radyoFrekansiniAyarla(float hedefFrekans) {
unsigned int frekansB = 4 * (hedefFrekans * 1000000 + 225000) / 32768;
byte frekansYuksek = frekansB >> 8;
byte frekansDusuk = frekansB & 0XFF;
Wire.beginTransmission(0x60);
Wire.write(frekansYuksek);
Wire.write(frekansDusuk);
Wire.write(0xB0);
Wire.write(0x10);
Wire.write(0x00);
Wire.endTransmission();
Serial.printf("Radyo: %.1f MHz ayarlandi.\n", hedefFrekans);
}
void setup() {
Serial.begin(115200);
seriHaberlesme.begin(9600, SERIAL_8N1, 16, 17);
Wire.begin(21, 22);
ekran.begin(SSD1306_SWITCHCAPVCC, 0x3C);
if (!saatModulu.begin()) {
Serial.println("RTC Hatası!");
while (1);
}
saatModulu.adjust(DateTime(2026, 2, 21, 16, 30, 0));
radyoFrekansiniAyarla(radyoFrekansi);
ekran.clearDisplay();
ekran.display();
}
void loop() {
DateTime simdi = saatModulu.now();
char zamanMetni[9];
sprintf(zamanMetni, "%02d:%02d:%02d", simdi.hour(), simdi.minute(), simdi.second());
ekran.clearDisplay();
ekran.setTextSize(2);
ekran.setTextColor(SSD1306_WHITE);
ekran.setCursor(16, 5);
ekran.print(zamanMetni);
ekran.setTextSize(1);
ekran.setCursor(25, 30);
ekran.print("FM: ");
ekran.print(radyoFrekansi, 1);
ekran.print(" MHz");
ekran.setTextSize(2);
ekran.setCursor(28, 45);
ekran.print("TA3UIS");
ekran.display();
delay(1000);
}
#include <IRremote.hpp>
const int IR_ALICI_PIN = 13;
void setup() {
Serial.begin(115200);
IrReceiver.begin(IR_ALICI_PIN, ENABLE_LED_FEEDBACK);
Serial.println("IR Alıcı Hazır..");
}
void loop() {
if (IrReceiver.decode()) {
Serial.print("Tuş HEX Kodu: ");
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
IrReceiver.resume();
}
}
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>
#include <IRremote.hpp>
#define EKRAN_GENISLIK 128
#define EKRAN_YUKSEKLIK 64
const int IR_ALICI_PIN = 13;
Adafruit_SSD1306 ekran(EKRAN_GENISLIK, EKRAN_YUKSEKLIK, &Wire, -1);
RTC_DS3231 rtc;
float mevcutFrekans = 100.0;
void setup() {
Serial.begin(115200);
Wire.begin(21, 22);
if (!ekran.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED Hatası!");
while (1);
}
if (!rtc.begin()) {
Serial.println("RTC Hatası!");
while (1);
}
rtc.adjust(DateTime(2026, 2, 21, 18, 27, 0));
IrReceiver.begin(IR_ALICI_PIN, ENABLE_LED_FEEDBACK);
ayarlaRadyoFrekansi(mevcutFrekans);
ekran.clearDisplay();
ekran.setTextColor(SSD1306_WHITE);
}
void loop() {
if (IrReceiver.decode()) {
uint32_t tus = IrReceiver.decodedIRData.decodedRawData;
if (tus != 0) {
if (tus == 0xF708FF00) mevcutFrekans += 0.1;
else if (tus == 0xA55AFF00) mevcutFrekans -= 0.1;
else if (tus == 0xAD52FF00) mevcutFrekans += 1.0;
else if (tus == 0xE718FF00) mevcutFrekans -= 1.0;
else if (tus == 0xE31CFF00) mevcutFrekans = 106.0;
if (mevcutFrekans > 108.0) mevcutFrekans = 87.5;
if (mevcutFrekans < 87.5) mevcutFrekans = 108.0;
ayarlaRadyoFrekansi(mevcutFrekans);
}
IrReceiver.resume();
}
guncelleEkran();
}
void guncelleEkran() {
DateTime simdi = rtc.now();
ekran.clearDisplay();
ekran.setTextSize(2);
ekran.setCursor(15, 0);
ekran.printf("%02d:%02d:%02d", simdi.hour(), simdi.minute(), simdi.second());
ekran.drawFastHLine(0, 22, 128, SSD1306_WHITE);
ekran.setTextSize(1);
ekran.setCursor(20, 30);
ekran.print("VFO: ");
ekran.setTextSize(2);
ekran.printf("%.1f", mevcutFrekans);
ekran.setTextSize(1);
ekran.print(" MHz");
ekran.drawFastHLine(0, 50, 128, SSD1306_WHITE);
ekran.setCursor(45, 55);
ekran.print("TA3UIS");
ekran.display();
}
void ayarlaRadyoFrekansi(float frekans) {
unsigned int frekansB = 4 * (frekans * 1000000 + 225000) / 32768;
Wire.beginTransmission(0x60);
Wire.write(frekansB >> 8);
Wire.write(frekansB & 0XFF);
Wire.write(0xB0); Wire.write(0x10); Wire.write(0x00);
Wire.endTransmission();
}
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?