إصنع جرس مؤسسة أوتوماتيكي بالأردوينو -How to make an automatic foundation bell
HTML-код
- Опубликовано: 8 сен 2024
- مرحبا بكم في القناة التعليمية الخاصة بالبرمجة
----------------------------------------------------------------------------------
قناة التلغرام للانضمام لمحبي الاردوينو (القناة مختصة فقط بتبادل الخبرات وليست ربحية بأي شكل من الاشكال )
t.me/+h93CaMzQ...
----------------------------------------------------------------------------------
وصف الفيديو
الفيديو يستعرض عملية صناعة جرس مؤسسة بشكل مفصل، حيث يتم استخدام لوحة التطوير Arduino وموديل RTC3231 للحصول على توقيت دقيق. يظهر الفيديو كيفية توصيل شاشة OLED وبرمجتها لعرض الوقت بشكل بارز وواضح. بالإضافة إلى ذلك، يشرح الفيديو كيفية برمجة الجرس ليصدر إنذارًا في الأوقات المحددة، توفر الشاشة OLED واجهة مرئية سهلة لعرض الوقت
1. **لوحة التطوير Arduino**: تعتبر القاعدة الرئيسية للمشروع وتعمل كوحدة التحكم الرئيسية. تستقبل المعلومات من موديل RTC3231 وتتحكم في عملية عرض الوقت على شاشة OLED وتنفيذ الوظائف المبرمجة مثل إصدار الإنذارات.
2. **موديل RTC3231**: يقوم بتوفير توقيت دقيق للمشروع. يحتوي على مدخل للبطارية للحفاظ على التوقيت حتى في حالة انقطاع التيار الكهربائي. يقوم بتزويد لوحة التطوير Arduino بالوقت الحالي والتاريخ.
3. **شاشة OLED**: تستخدم لعرض الوقت والتاريخ بشكل بارز وواضح. تعمل كواجهة مرئية للمستخدم لتوفير معلومات حول الوقت الحالي والإعدادات المختلفة.
4. **مكبر الصوت او الجرس **: يستخدم لإصدار الإنذارات في الأوقات المحددة. يتم تشغيله عندما يحين وقت الإنذار ويتم إيقافه عند إيقاف الإنذار.
باستخدام هذه المكونات معًا وبرمجتها بشكل صحيح، يتمكن المشروع من عرض الوقت والتاريخ على الشاشة OLED بدقة، وتنفيذ وظيفة الإنذار عند الحاجة، مما يجعلها جهازًا مفيدًا لاستخدامه في المدرسة مثلا
----------------------------------------------------------------------------------
الكود البرمجي ....كل دقيقة يرن الجرس ..يمكنكم تعديله حسب الحاجة
#include
#include "RTClib.h"
#include
#include
#include
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
RTC_DS3231 rtc;
DateTime now;
const int LED = 13;
const int buz = 6;
int alarmHour = 0; // default alarm hour
int alarmMinute = 0; // default alarm minute
bool alarmOn = true; // default alarm state
int previousMinute = -1; // to keep track of previous hour
void setup() {
pinMode(buz, OUTPUT);
pinMode(LED, OUTPUT);
if (!rtc.begin()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(__DATE__, __TIME__));
}
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.println("Current time:");
display.display();
// rtc.adjust(DateTime(2023, 4, 7, 15, 5, 0)); هنا ضبط الوقت ولا تنى تعليق التعليمة ثاني مرة ةحرق الكود
delay(500);
}
void loop() {
display.display();
DateTime now = rtc.now();
display.clearDisplay();
display.setTextSize(2);
display.setCursor(10, 0);
display.print(now.year(), DEC);
display.print('/');
display.print(now.month(), DEC);
display.print('/');
display.print(now.day(), DEC);
display.setCursor(10, 20);
display.print(now.hour(), DEC);
display.print(':');
display.print(now.minute(), DEC);
display.print(':');
display.println(now.second(), DEC);
if (now.minute() != previousMinute) {// التنبيه هنا كل دقيقة
display.clearDisplay();
display.setCursor(20, 20);
display.setTextSize(2);
digitalWrite(buz, HIGH);
digitalWrite(LED, HIGH);
display.println("ALARM!");
delay(1000); // Wait for 4 seconds مدة اشتغال الجرس او المصباح
digitalWrite(buz, LOW);
digitalWrite(LED, LOW);
previousMinute = now.minute(); // Update previous hour
}
}
Promo-SM