البرمجة
بالبداية ستحتاج إلى تحميل مكتبة (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); }