البرمجة
بالبداية ستحتاج إلى تحميل مكتبة (TEA5767 FM) و من ثم تثبيتها في بيئة تطوير الاردوينو (اردوينو IDE) يمكنك الاطلاع على الدرس الأول -تنصيب برنامج اردوينو لمعرفة كيف يتم تثبيت المكتبات
#include<Wire.h>
#include <TEA5767Radio.h>
#include <LiquidCrystal.h>
TEA5767Radio radio = TEA5767Radio();
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
float frequency = 0;
int fUP = A0;
int fDOWN = A1;
int count = 0;
void setup()
{
delay(1000);
Wire.begin();
frequency = 91.1; //starting frequency
radio.setFrequency(frequency);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("FM: ");
lcd.setCursor(0, 1);
lcd.print(frequency);
}void loop()
{
if(digitalRead(fUP))
{
count=0;
while (digitalRead(fUP))
{
count++;
if(count > 0 && count <= 6)
{
frequency += 0.1;
frequencyUpdate();
delay(200);
}
else if (count > 6 && count <= 2)
{
frequency += 0.1;
frequencyUpdate();
delay(80);
}
else
{
frequency += 0.1;
frequencyUpdate();
delay(5);
}
}}
if(digitalRead(fDOWN))
{
count = 0;
while (digitalRead(fDOWN))
{
count--;
if(count < 0 && count >= -6)
{
frequency -= 0.1;
frequencyUpdate();
delay(200);
}
else if (count < -6 && count >= -12)
{
frequency -= 0.1;
frequencyUpdate();
delay(80);
}
else
{
frequency -= 0.1;
frequencyUpdate();
delay(5);
}
}
}
}
void frequencyUpdate()
{
frequency = constrain(frequency, 88.0, 108.0);
lcd.setCursor(0,0);
lcd.print("ESTACION DE FM:");
lcd.setCursor(0,1);
lcd.print(frequency);
radio.setFrequency(frequency);
}
شرح الكود البرمجي
بالبدية سيتم استدعاء المكتبات الضرورية في المشروع
#include<Wire.h> #include <TEA5767Radio.h> #include <LiquidCrystal.h>
نعرف كائن باسم (radio)
TEA5767Radio radio = TEA5767Radio();
نعرف منافذ الشاشة الكرستالية
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
نعرف متغيرات تشيل إلى التردد و منفذ ضغاط التحكم لزيادة و تنقيص قيمة التردد
يمثل ضغاط التحكم الموصل مع المنفذ A0 مفتاح التحكم بزيادة التردد بقيمة 0.1
و يمثل ضغاط التحكم الموصل مع المنفذ A1 مفتاح التحكم بتنقيص التردد بقيمة 0.1
float frequency = 0; int fUP = A0; int fDOWN = A1; int count = 0;
في دالة التهيئة نهيئة الاتصال و الشاشة الكرستالية
void setup()
{
delay(1000);
Wire.begin();
frequency = 91.1; //starting frequency
radio.setFrequency(frequency);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("FM: ");
lcd.setCursor(0, 1);
lcd.print(frequency);
}
في دالة ال(void loop) نبرمج دوال التحكم زيادة ونقصان قيمة التردد بناء على مدخلات مفاتيح التحكم
void loop()
{
if(digitalRead(fUP))
{
count=0;
while (digitalRead(fUP))
{
count++;
if(count > 0 && count <= 6)
{
frequency += 0.1;
frequencyUpdate();
delay(200);
}
else if (count > 6 && count <= 2)
{
frequency += 0.1;
frequencyUpdate();
delay(80);
}
else
{
frequency += 0.1;
frequencyUpdate();
delay(5);
}
}}
if(digitalRead(fDOWN))
{
count = 0;
while (digitalRead(fDOWN))
{
count--;
if(count < 0 && count >= -6)
{
frequency -= 0.1;
frequencyUpdate();
delay(200);
}
else if (count < -6 && count >= -12)
{
frequency -= 0.1;
frequencyUpdate();
delay(80);
}
else
{
frequency -= 0.1;
frequencyUpdate();
delay(5);
}
}
}
}
في دالة (frequencyUpdate) يتم تحديث قيم التررد بناء على المدخلات من المفاتيح
void frequencyUpdate()
{
frequency = constrain(frequency, 88.0, 108.0);
lcd.setCursor(0,0);
lcd.print("STACION FM:");
lcd.setCursor(0,1);
lcd.print(frequency);
radio.setFrequency(frequency);
}

