Children's Play Garage with Arduino - Fun and Educational DIY Project كراج بواسطة أردوينو - مشروع

  Рет қаралды 63

Ahmad Tarik Dassouki

Ahmad Tarik Dassouki

Күн бұрын

Пікірлер: 2
@atd20071
@atd20071 Жыл бұрын
الكود البرمجي / Programming Code #include #include #include // تضمين مكتبة Servo // Ahmad Dassouki Traffic Signal Project dassoukide@gmail.com LiquidCrystal_I2C lcd(0x27, 16, 2); // عنوان الشاشة وعدد الأعمدة والصفوف Servo servo; // إنشاء كائن Servo const int buttonPin = 2; // دبوس الزر const int redLEDPin = 8; // دبوس LED الأحمر const int yellowLEDPin = 9; // دبوس LED البرتقالي const int greenLEDPin = 10; // دبوس LED الأخضر enum TrafficSignalState { RED, ORANGE, GREEN, FINISH }; TrafficSignalState currentState = RED; unsigned long stateStartTime = 0; unsigned long remainingTime = 0; unsigned long delayDuration = 5000; // تأخير افتراضي لمدة 5 ثواني unsigned long orangeDuration = 3000; // مدة اللون البرتقالي لمدة 3 ثواني unsigned long greenDuration = 15000; // مدة اللون الأخضر لمدة 15 ثانية unsigned long crossingDuration = 10000; // مدة العبور الممكنة لمدة 10 ثواني bool waiting = false; void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Traffic Signal"); servo.attach(7); // توصيل محرك السيرفو بالدبوس رقم 7 pinMode(buttonPin, INPUT_PULLUP); pinMode(redLEDPin, OUTPUT); pinMode(yellowLEDPin, OUTPUT); pinMode(greenLEDPin, OUTPUT); // الإشارة الافتراضية هي اللون الأحمر currentState = RED; digitalWrite(redLEDPin, HIGH); } void loop() { int buttonState = digitalRead(buttonPin); if (buttonState == LOW && !waiting) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Please Wait..."); waiting = true; stateStartTime = millis(); remainingTime = delayDuration; currentState = RED; } updateTrafficSignal(); updateTimerDisplay(); } void updateTrafficSignal() { unsigned long currentTime = millis(); if (waiting) { if (currentState == RED && (currentTime - stateStartTime) >= remainingTime) { currentState = ORANGE; stateStartTime = currentTime; remainingTime = orangeDuration; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Get Ready"); } else if (currentState == ORANGE && (currentTime - stateStartTime) >= remainingTime) { currentState = GREEN; stateStartTime = currentTime; remainingTime = greenDuration; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Cross Now"); // تدوير محرك السيرفو إلى الزاوية 90 درجة servo.write(90); } else if (currentState == GREEN && (currentTime - stateStartTime) >= remainingTime) { currentState = RED; waiting = false; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Traffic Signal"); // تدوير محرك السيرفو إلى الزاوية 0 درجة servo.write(0); } } digitalWrite(redLEDPin, LOW); digitalWrite(yellowLEDPin, LOW); digitalWrite(greenLEDPin, LOW); switch (currentState) { case RED: digitalWrite(redLEDPin, HIGH); break; case ORANGE: digitalWrite(yellowLEDPin, HIGH); break; case GREEN: digitalWrite(greenLEDPin, HIGH); break; case FINISH: lcd.clear(); } } void updateTimerDisplay() { if (waiting) { lcd.setCursor(0, 1); lcd.print("Time Left: "); lcd.print((remainingTime - (millis() - stateStartTime) + 999) / 1000); } } // Ahmad Dassouki Traffic Signal Project dassoukide@gmail.com
@atd20071
@atd20071 Жыл бұрын
طريقة التوصيل / Connection Instructions لتوصيل محرك السيرفو ومكونات الإشارة مع Arduino، يجب أن تقوم بتوصيل كل جزء بالمنفذ المناسب على اللوحة. إليك كيفية توصيلها 1. محرك السيرفو (Servo Motor) - يتم توصيل محرك السيرفو بمكونين فقط السلك الأحمر (الطاقة) والسلك البني (الأرضي)، حيث يمكن ترك السلك الأصفر غير متصلاً. - قم بتوصيل السلك الأحمر إلى دبوس الطاقة (5V) على اللوحة Arduino. - قم بتوصيل السلك البني إلى دبوس الأرضي (GND) على اللوحة Arduino. - السلك الأصفر (الإشارة) يجب توصيله بدبوس PWM على اللوحة Arduino. في هذا السياق، قم بتوصيله بدبوس رقم 7. 2. شاشة العرض (Liquid Crystal Display - LCD) - يمكن توصيل شاشة العرض باستخدام واجهة I2C. يجب توصيلها بأربعة أسلاك فقط VCC، GND، SDA، و SCL. - قم بتوصيل السلك الأحمر (VCC) إلى الدبوس VCC على اللوحة Arduino (عادة 5V). - قم بتوصيل السلك الأرضي (GND) إلى الدبوس GND على اللوحة Arduino. - قم بتوصيل السلك الأزرق (SDA) إلى دبوس SDA على اللوحة Arduino (عادة A4). - قم بتوصيل السلك الأخضر (SCL) إلى دبوس SCL على اللوحة Arduino (عادة A5). 3. مكونات الإشارة (LEDs) - قم بتوصيل الدبوس الإيجابي (الأنود) لكل LED بمقاومة (حوالي 220 أوم) وقم بتوصيل الدبوس السلبي (الكاثود) مباشرة بدبوس GND على اللوحة Arduino. - يجب توصيل الدبوسات الأخرى (الإيجابية) لكل LED بدبوسات دخل التحكم الخاصة بك على اللوحة Arduino. في الكود السابق، تم استخدام الأدبوس 8، 9، و 10 لتحكم في الإشارة الحمراء، البرتقالية، والخضراء على التوالي. 4. زر الضغط (Push Button) - قم بتوصيل طرفي زر الضغط بدبوسين على اللوحة Arduino. - يجب توصيل طرف واحد من الزر بالدبوس الأرضي (GND) على اللوحة Arduino. - قم بتوصيل الطرف الآخر من الزر بدبوس رقم 2 على اللوحة Arduino، ويفضل استخدام المقاومة الداخلية للسحب عالي الأمان (INPUT_PULLUP) عبر توصيل دبوس الزر بالأرضي وبدبوس الإدخال (2). بهذا الشكل، يجب أن يمكنك تنفيذ الكود بنجاح .
70 شيء غريب في ماين كرافت !!
8:35
iZeox
Рет қаралды 26 М.
How Strong Is Tape?
00:24
Stokes Twins
Рет қаралды 96 МЛН
黑天使只对C罗有感觉#short #angel #clown
00:39
Super Beauty team
Рет қаралды 36 МЛН
Chế bộ cân bằng điện áp cell pin từ đế pin 18650 cũ!
19:46
Điện tử Ánh Dương
Рет қаралды 2
Phantom 31.12.2017 Ahmad & Maya Dassouki
13:24
Ahmad Tarik Dassouki
Рет қаралды 165
AIR QUALITY MEASUREMENT
13:09
Future ISRO scientist
Рет қаралды 35
Ödev 2   Bitirme   Fiziksel Arduino Devreleri
8:51:34
K22ö0010 Mehmet Emin ŞAHİN
Рет қаралды 17
How Strong Is Tape?
00:24
Stokes Twins
Рет қаралды 96 МЛН