مواجهة وحدة الوقت DS1307 RTC و شاشة OLED مع الأردوينو اكتب تعليقُا

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث أي مشكلة لا سمح الله.

شرح فكرة المشروع

  • في هذا المشروع، سنتعرف على كيفية ربط وحدة الوقت DS1307 RTC مع لوحة أردوينو UNO وعرض بيانات الوقت والتاريخ على شاشة OLED.
  • يتم استخدام ساعة الوقت الحقيقي (RTC) لتتبع الوقت بدقة.
  • كما تستخدم في عدة أجهزة الكترونية رقمية مثل الحواسيب والساعات الذكية الرقمية.
  • واحدة من المزايا الرئيسية لساعة الوقت الحقيقي هي قدرتها على الاستمرار في تتبع الوقت حتى عندما يكون التيار الكهربائي غير متوفر أو يتعرض لانقطاع.
  • سيتم استخدام شاشة OLED لعرض بصري للوقت والتاريخ المحصل عليهما من وحدة DS1307 RTC.

ادوات المشروع

  • شاشة عرض 0.96 بوصة OLED: عدد 1
  • 9V Maxell Alkaline Battery بطارية قلوية: عدد 1
  • موصل بطارية 9 فولت + مقبس تيار مستمر (غطاء موصل البطارية) Battery snap connector: عدد 1
  • اردوينو اونو مع سلك توصيل Arduino Uno: عدد 1
  • وحدة ساعة الوقت الحقيقي DS1307 RTC بدون بطارية Real Time Clock: عدد 1
  • 20cm Male to Female jumper wires 40pcs
  • 20cm Male to male jumper wires 40pcs
  • لوحة تجارب 400 نقطة: عدد 1
  • بطارية ليثيوم 3 فولت من دوراسيل موديل CR2032 حبة واحدة Lithium Coin Battery: عدد 1

تنويه: استخدم لوحة Bread board لتوصيل الوحدات بمنفذ 5V و GND

مخطط المشروع

الكود البرمجي

تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.
  • للتعرف على تجهيز لوحة أردوينو للبرمجة قم بزيارة الرابط التالي.
  • للإطلاع على كيفية تحميل وتنصيب المكتبات قم بزيارة الرابط التالي.
  • قبل تحميل الكود البرمجي، عليك تنزيل المكتبات التالية:
  • Wire.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • RTClib.h
  • في حال لم يعمل هذا الكود البرمجي، قم بتحميل ملف الكود بالضغط على زر التحميل الموجود في الأسفل.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include “RTClib.h”

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
RTC_DS1307 RTC;
char days[7][12] = {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”};

void setup() {
Serial.begin(115200);

if (! RTC.begin()) {
Serial.println(“Couldn’t find RTC”);
Serial.flush();
abort();
}
RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));

if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128×64
Serial.println(F(“SSD1306 allocation failed”));
for (;;);
}
delay(1000);
display.clearDisplay();

display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(30, 20);
// Display static text
display.println(“RTC”);
display.display();
delay(3000);
display.clearDisplay();
}

void loop() {
DateTime now = RTC.now();

display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 0);
display.print(now.day());
display.print(‘/’);
display.print(now.month());
display.print(‘/’);
display.println(now.year());
display.println(days[now.dayOfTheWeek()]);
display.println(‘ ‘);
display.setCursor(0, 40);
if (now.hour() < 10)
display.print(‘0’);
display.print(now.hour());
display.print(‘:’);
if (now.minute() < 10)
display.print(‘0’);
display.print(now.minute());
display.print(‘:’);
if (now.second() < 10)
display.print(‘0’);
display.println(now.second());
display.display();
}

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *