<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Şirzat Açıkgöz &#8211; Robo90 &#8211; Blog</title>
	<atom:link href="https://blog.robo90.com/yazar/sirzatacikgoz/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.robo90.com</link>
	<description>Arduino, 3D Yazıcı, Elektronik, Yazılım ve Teknoloji Hakkında Yüzlerce İçerik!</description>
	<lastBuildDate>Fri, 17 Apr 2026 11:27:37 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.robo90.com/wp-content/uploads/2023/09/cropped-robo90-blog-favicon-robot-1-32x32.png</url>
	<title>Şirzat Açıkgöz &#8211; Robo90 &#8211; Blog</title>
	<link>https://blog.robo90.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Arduino ile FM Radyo Uygulaması</title>
		<link>https://blog.robo90.com/arduino-ile-fm-radyo-uygulamasi/</link>
					<comments>https://blog.robo90.com/arduino-ile-fm-radyo-uygulamasi/#respond</comments>
		
		<dc:creator><![CDATA[Şirzat Açıkgöz]]></dc:creator>
		<pubDate>Fri, 19 Apr 2024 13:25:06 +0000</pubDate>
				<category><![CDATA[Arduino Projeleri]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[fm]]></category>
		<category><![CDATA[radyo]]></category>
		<guid isPermaLink="false">https://blog.robo90.com/?p=8987</guid>

					<description><![CDATA[<p>Merhabalar, Robo90 firmasından satın almış olduğum aşağıdaki elektronik parçalar ve Arduino kodlama ile yapmış olduğum FM Radyo devresi çalışmasını aşağıda görecekseniz. Elektronik Parçalar; 1-Nokia 5110 LCD Ekran &#8211; 84&#215;48 &#8211; Arduino Uyumlu https://www.robo90.com/nokia-5110-lcd-ekran-84&#215;48-arduino-uyumlu 2-TEA5767 FM Stereo Radyo Modülü: FM sinyalleri almak için tercih ettiğim radyo modülü. https://www.robo90.com/tea5767-fm-stereo-radyo-modulu 3-Arduino Nano Klon: Projenin beyni olarak görev yapan [...]</p>
<p><a rel="nofollow" href="https://blog.robo90.com/arduino-ile-fm-radyo-uygulamasi/">Arduino ile FM Radyo Uygulaması</a> yazısı ilk önce <a rel="nofollow" href="https://blog.robo90.com">Robo90 - Blog</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Merhabalar, Robo90 firmasından satın almış olduğum aşağıdaki elektronik parçalar ve Arduino kodlama ile yapmış olduğum FM Radyo devresi çalışmasını aşağıda görecekseniz.</p>



<p>Elektronik Parçalar;</p>



<p>1-Nokia 5110 LCD Ekran &#8211; 84&#215;48 &#8211; Arduino Uyumlu <a href="https://www.robo90.com/nokia-5110-lcd-ekran-84x48-arduino-uyumlu">https://www.robo90.com/nokia-5110-lcd-ekran-84&#215;48-arduino-uyumlu</a></p>



<p>2-TEA5767 FM Stereo Radyo Modülü: FM sinyalleri almak için tercih ettiğim radyo modülü. <a href="https://www.robo90.com/tea5767-fm-stereo-radyo-modulu">https://www.robo90.com/tea5767-fm-stereo-radyo-modulu</a></p>



<p>3-Arduino Nano Klon: Projenin beyni olarak görev yapan Arduino Nano. <a href="https://www.robo90.com/arduino-nano-klon-usb-kablo-hediyeli">https://www.robo90.com/arduino-nano-klon-usb-kablo-hediyeli</a></p>



<p>4-PAM8403 2x3W Mini Ses Yükseltici Kartı &#8211; Stereo &#8211; Amfi-Potlu: Stereo amfi olarak kullanılarak sesi hoparlöre aktarıyor. <a href="https://www.robo90.com/pam8403-2x3w-mini-ses-yukseltici-karti-stereo-amfi-potlu">https://www.robo90.com/pam8403-2x3w-mini-ses-yukseltici-karti-stereo-amfi-potlu</a></p>



<p>5-Rotary Encoder Modülü &#8211; KY-040 &#8211; Arduino Uyumlu: Radyo frekansını ayarlamak için kullanılan döner enkoder. <a href="https://www.robo90.com/rotary-encoder-modulu-ky-040-arduino-uyumlu">https://www.robo90.com/rotary-encoder-modulu-ky-040-arduino-uyumlu</a></p>



<p>6-Hoparlör: 4 ohm 3 watt</p>



<p>7-Seetronic MTP3C Stereo 3.5mm Jak (TEA5767 hoparlör çıkışı için)</p>



<p>FM radyo projemizde, Arduino Nano ile frekans ayarlamalarını yapabiliyoruz ve radyo sinyallerini TEA5767 modülü ile alıyoruz. Ekran olarak Nokia 5110 kullanarak radyo frekansını ve kanal bilgilerini görüntüleyebiliyoruz. Ses yükseltme kartı (PAM8403) ise sinyali hoparlöre aktarıyor. Rotary Encoder, frekans ayarını hassas bir şekilde yapmamızı sağlıyor.</p>



<h3 class="wp-block-heading">FM Radyo Uygulama Videosu</h3>



<p>FM radyo devremizin nasıl çalıştığını görmek isterseniz aşağıdaki video bağlantısından uygulama videosunu izleyebilirsiniz.</p>



<figure class="wp-block-video aligncenter"><video height="848" style="aspect-ratio: 480 / 848;" width="480" controls src="https://blog.robo90.com/wp-content/uploads/2024/04/SirProgramming-FM-Radyo.mp4"></video></figure>



<p>Arduino kod yazılımını da aşağıya ekliyorum.&nbsp;</p>



<p>Dikkat etmeniz gerekenler için;</p>



<p>1- Kod içinde kullanılan kütüphanelerin linkleri aynı satırda verilmiştir. Bu linkleri kullanarak kütüphaneleri indirebilirsiniz.</p>



<p>2- <strong>FreeSerif18pt7b</strong>,<strong> FreeSerifItalic9pt7b </strong>ve <strong>FreeMono12pt7b</strong> kütüphanelerini indirdikten sonra, aşağıdaki kodlarla oluşturacağınız .ino uzantılı arduino programının yer aldığı klasör içine taşıyın ve sırasında program kodlarınızı Arduino Nano içine yükleyin.</p>



<h3 class="wp-block-heading">Kablo Şeması ve Bağlantılar</h3>



<p>Bu devrede Arduino Nano, TEA5767 radyo modülü, PAM8403 ses yükseltici ve Nokia 5110 ekranı belirli pin bağlantıları üzerinden birbirine bağlanır. Kablo bağlantılarını doğru yapmak, projenin sorunsuz çalışması açısından önemlidir.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="768" height="656" src="https://blog.robo90.com/wp-content/uploads/2025/08/Kablo-Semasi-768x656-min.webp" alt="Arduino ile FM Radyo Uygulaması Devre Şeması" class="wp-image-9239" title="Arduino ile FM Radyo Uygulaması 1" srcset="https://blog.robo90.com/wp-content/uploads/2025/08/Kablo-Semasi-768x656-min.webp 768w, https://blog.robo90.com/wp-content/uploads/2025/08/Kablo-Semasi-768x656-min-300x256.webp 300w, https://blog.robo90.com/wp-content/uploads/2025/08/Kablo-Semasi-768x656-min-150x128.webp 150w, https://blog.robo90.com/wp-content/uploads/2025/08/Kablo-Semasi-768x656-min-450x384.webp 450w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<h3 class="wp-block-heading">Arduino Kodu</h3>



<p>Aşağıda projenin Arduino kodlarını göreceksiniz. Bu kodlar sayesinde radyo frekansını ayarlayabilir, kanalları kaydedebilir ve LCD ekranda kanal bilgilerini görüntüleyebilirsiniz. Kodlar, frekans değişimlerini hafızaya alarak en son ayarlanan frekansa geri dönme işlevine de sahiptir.</p>



<pre class="wp-block-code"><code>#include &lt;TEA5767N.h&gt;  //https://github.com/mroger/TEA5767
#include &lt;SPI.h&gt;
#include &lt;Adafruit_GFX.h&gt;  //https://github.com/adafruit/Adafruit-GFX-Library
#include &lt;Adafruit_PCD8544.h&gt; //https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library

#include "FreeSerif18pt7b.h" //https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Fonts/FreeSerif18pt7b.h
#include "FreeSerifItalic9pt7b.h" //https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Fonts/FreeSerifItalic9pt7b.h
#include "FreeMono12pt7b.h" //https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Fonts/FreeMono12pt7b.h

#include "splash.h"
#include &lt;ClickEncoder.h&gt; //https://github.com/0xPIT/encoder
#include &lt;TimerOne.h&gt;  //https://github.com/PaulStoffregen/TimerOne
#include &lt;EEPROM.h&gt;

Adafruit_PCD8544 display = Adafruit_PCD8544(5, 4, 3);

int SaniyeOtoKayit = 300;
float onceki_frekans = 0;
float frekans = 95.0f;

ClickEncoder *encoder;
int16_t son_deger, value;

boolean yukari = false;
boolean asagi = false;
boolean orta = false;

long saniye_degeri = 0;
long oncekiler = 0; 

bool arkaisikACIK = false;

long aralik = 1000; 
  
TEA5767N radyo = TEA5767N();

void setup() 
{
  pinMode(7, OUTPUT);
  digitalWrite(7,HIGH);
  
  initDisplay();
  
  acilissayfasigoster();
  
  radyo.setMonoReception();
  
  radyo.setStereoNoiseCancellingOn();

  RotaryEncoderVeri();
  
  Serial.begin(9600);

  frekans = readFrequencyFromEEPROM();

  if(isnan(frekans))
  {
    Serial.println("setup(): EEPROM icinde frekans degeri yoktur.");
    frekans = 88.0;
    writeFrequencyToEEPROM(&amp;frekans);
  }
    
  printText(String(frekans,1),String(frekans,1));
}

void loop() {

  unsigned long mevcutlar = millis();

  RotaryEncoderKontrol();

  if(mevcutlar - oncekiler &gt; aralik) 
  {
    if(frekans!=onceki_frekans)
    {
      onceki_frekans = frekans;
      radyo.selectFrequency(frekans);  
      saniye_degeri = 0;
    }else
    {
      saniye_degeri++;
      if(saniye_degeri == SaniyeOtoKayit)
      {
          float frekans_oku = readFrequencyFromEEPROM();
          if(frekans_oku!=frekans)
          {
            Serial.println("Dongu(): Yeni frekans EEPROM icine kaydediliyor.");
            writeFrequencyToEEPROM(&amp;frekans);
          }
      }
    }
    oncekiler = mevcutlar; 
    Serial.println("loop(): "+String(saniye_degeri));  
  }

 readRotaryEncoder();

 if(yukari)
 {
  yukari = false;
  onceki_frekans = frekans;
  frekans = frekans+0.1f;
  printText(String(frekans,1),String(onceki_frekans,1));
 }

 if(asagi)
 {
  asagi = false;
  onceki_frekans = frekans;
  frekans = frekans-0.1f;
  printText(String(frekans,1),String(onceki_frekans,1));
 }
}

void printText(String yazi, String onceki_yazi)
{
  display.clearDisplay();   // clears the screen and, WHITE buffer  

  if(onceki_yazi.length() == 4)
  {
    display.setFont(&amp;FreeSerifItalic9pt7b);
  }else
  {
    display.setFont(&amp;FreeSerifItalic9pt7b);
  }
  display.setTextColor(WHITE);
  display.setCursor(5,11);
  display.println("Gulru FM");
   display.setFont(&amp;FreeSerif18pt7b);
  display.setCursor(4,44);
  display.println(onceki_yazi);
  display.display();
  
  if(yazi.length() == 4)
  {
    
    display.setFont(&amp;FreeSerifItalic9pt7b);
  }else
  {
    display.setFont(&amp;FreeSerifItalic9pt7b);
  }
  display.setTextColor(BLACK);
  display.setCursor(5,11);
  display.println("Gulru FM");
   display.setFont(&amp;FreeSerif18pt7b);
  display.setCursor(4,44);
  display.println(yazi);
  display.display();
}

void RotaryEncoderVeri()
{
  encoder = new ClickEncoder(A1, A0, A2);
  encoder-&gt;setAccelerationEnabled(false);
   
  Timer1.initialize(1000);
  Timer1.attachInterrupt(timerIsr); 

  son_deger = encoder-&gt;getValue();  
}

void initDisplay()
{
  display.begin();
  display.setContrast(60);
  display.clearDisplay();   // clears the screen and, WHITE buffer  
  display.display();
}

 void timerIsr() 
{
  encoder-&gt;service();
}

void acilissayfasigoster()
{
  display.clearDisplay();
  //display.drawBitmap(0, 0,  SPLASH, 84, 48, 1);
  
display.setTextSize(2);
  display.setCursor(3, 0);
  display.print(" GULRU");
  display.setCursor(3, 20);
  display.print(" RADYO");
  display.display();
  delay(5000);
  display.clearDisplay();   // clears the screen and, WHITE buffer  
  
display.setTextSize(1);
}

void writeFrequencyToEEPROM(float *freq)
{
 byte ByteArray&#91;4];
 memcpy(ByteArray, freq, 4);
 for(int x = 0; x &lt; 4; x++)
 {
   EEPROM.write(x, ByteArray&#91;x]);
 }  
 Serial.println("writeFrequencyFromEEPROM(): "+String(frekans));
}

float readFrequencyFromEEPROM()
{
  float frekans = 86.0;
  byte ByteArray&#91;4];
  for(int x = 0; x &lt; 4; x++)
  {
   ByteArray&#91;x] = EEPROM.read(x);    
  }
  memcpy(&amp;frekans, ByteArray, 4);
  Serial.println("readFrequencyFromEEPROM(): "+String(frekans));
  return frekans;
}

void RotaryEncoderKontrol()
{
    ClickEncoder::Button b = encoder-&gt;getButton();
  if (b != ClickEncoder::Open) {
    if(b==ClickEncoder::Clicked)
    {
      Serial.println("Toggle BackLight");
      if(arkaisikACIK == false)
      {
        arkaisikACIK = true;
        turnOnBacklight();
      }else
      {
        arkaisikACIK = false;
        turnOffBacklight();
      }
    }
  }
}

void turnOnBacklight()
{
  digitalWrite(7,LOW);
}

void turnOffBacklight()
{
  digitalWrite(7,HIGH);
}

void readRotaryEncoder()
{
  value += encoder-&gt;getValue();
  
  if (value/2 &gt; son_deger) {
    son_deger = value/2;
    yukari = true;
    delay(50);
  }else   if (value/2 &lt; son_deger) {
    son_deger = value/2;
    asagi = true;
    delay(50);
  }
}</code></pre>



<p>Bu proje ile ilgili sorularınız veya yardıma ihtiyaç duyduğunuz konular varsa yorum yaparak bana ulaşabilirsiniz. Keyifli projeler dilerim!</p>



<p></p>
<p><a rel="nofollow" href="https://blog.robo90.com/arduino-ile-fm-radyo-uygulamasi/">Arduino ile FM Radyo Uygulaması</a> yazısı ilk önce <a rel="nofollow" href="https://blog.robo90.com">Robo90 - Blog</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.robo90.com/arduino-ile-fm-radyo-uygulamasi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://blog.robo90.com/wp-content/uploads/2024/04/SirProgramming-FM-Radyo.mp4" length="3902251" type="video/mp4" />

			</item>
	</channel>
</rss>
