قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

ho0oney
:: مهندس ::
تاريخ التسجيل: Oct 2011
المشاركات: 6
نشاط [ ho0oney ]
قوة السمعة:0
قديم 09-04-2016, 10:19 PM المشاركة 1   
افتراضي عندي مشكلة في كود alarm clock Twitter FaceBook Google+



سلام عليكم
عندي مشروع وقاعدة اشتغل على الساعة وضبطت عندي ولكن لم وصلت لمرحلة اضافة الالارم صارت عندي مشكلة ومافي output ممكن تساعدوني بتعديل الكود؟

انا احتاج اول شي اعرض الوقت والتاريخ
وبعدين يطلع لي 3 خيارات اقدر احدد فيها الوقت
يعني الاول اختار مثلا الساعة 3 والثاني 4 والثالث 5

وبعدين البرنامج يرجع للساعة والتاريخ ويعرضهم

ويرن طبيعي بالتوقيت الي انا اخترته 3 مرات

مشكلة البرنامج الي عندي

ان اول مايشتغل يطلع لي
Enter Time 1
واذا بغيت اختار توقيت يختار لي 1 ومااقدر اغير الرقم يعني ماينتقل الى 2
وبعدها ينتقل للشاشة الثانية
Enter Time2
وفقط اقدر اختار رقم 2 وماقادر انتقل اختار رقم غيره

وبعد مااختار 3 اوقات

يرجع الى شاشة اختيرا الوقت من جديد لكن الغريب انه يطلع التوقيت الحقيقي نفس كمبيوتري

ماهو الحل بالكود؟

بالبداية استخدمت هذا الكود وقدرت اعرض الساعة والتاريخ

كود:
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>

RTC_DS1307 RTC;
LiquidCrystal lcd (7, 4, 5, 11, 3, 2);

void setup () {
  Serial.begin(9600);
  lcd.begin(16, 2);
  Wire.begin();
  RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop () {
    DateTime now = RTC.now();
    
    lcd.setCursor(0,0);
    lcd.print("TIME: ");
    lcd.print(now.hour(), DEC);
    lcd.print(":");
    lcd.print(now.minute(), DEC);
    lcd.print(":");
    lcd.print(now.second(), DEC); 
    
    lcd.setCursor(0,1);
    lcd.print("DATE: ");
    lcd.print(now.year(), DEC);
    lcd.print("/");
    lcd.print(now.month(), DEC);
    lcd.print("/");
    lcd.print(now.day(), DEC);

    delay(1000);
}

مع تطوير الكود لم وصلت لمرحلة الالارم هنا صارت المشاكل

كود:
#include <Wire.h>
#include<EEPROM.h>
#include <RTClib.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd (7, 4, 5, 11, 3, 2);
RTC_DS1307 RTC;
int temp,inc,hours1,minut,add=11;
int next=10;    
int INC=9;
int set_mad=8;
 
#define buzzer 13

int HOUR,MINUT,SECOND;
 
void setup()
{
 Wire.begin();
 RTC.begin();
 lcd.begin(16,2);
 pinMode(INC, INPUT);
 pinMode(next, INPUT);
 pinMode(set_mad, INPUT);
 pinMode(buzzer, OUTPUT);
 digitalWrite(next, HIGH);
 digitalWrite(set_mad, HIGH);
 digitalWrite(INC, HIGH);

 
   lcd.setCursor(0,0);
   lcd.print("Medicin reminder");
   
    delay(2000);
  
 
 if(!RTC.isrunning())
 {
 RTC.adjust(DateTime(__DATE__,__TIME__));
 }
}
 
void loop()
{
   int temp=0,val=1,temp4;
   DateTime now = RTC.now();
   if(digitalRead(set_mad) == 0)      //set medicine time
   { 
     lcd.setCursor(0,0);
    lcd.print("  Set Medicine  ");
    lcd.setCursor(0,1);
    lcd.print("  Reminder time ");
    delay(2000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Enter Time 1");
    defualt();
    time(1);
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Enter Time 2");
    defualt();
    delay(1000);
    time(2);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Enter Time 3");
    defualt();    
time(3);
     lcd.setCursor(0,0);
   lcd.print("Medicin reminder");
   lcd.setCursor(0,1);
   lcd.print("  time has set  ");
    delay(2000);
 }
 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("Time:");
 lcd.setCursor(6,0);
 lcd.print(HOUR=now.hour(),DEC); 
 lcd.print(":");
 lcd.print(MINUT=now.minute(),DEC);
 lcd.print(":");
 lcd.print(SECOND=now.second(),DEC);
 lcd.setCursor(0,1);
 lcd.print("Date: ");
 lcd.print(now.day(),DEC);
 lcd.print("/");
 lcd.print(now.month(),DEC);
 lcd.print("/");
 lcd.print(now.year(),DEC);
 match();
 delay(200);
}
 
void defualt()
{
  lcd.setCursor(0,1);
  lcd.print(HOUR);
  lcd.print(":");
  lcd.print(MINUT);
  lcd.print(":");
  lcd.print(SECOND);
}
 
/*Function to set alarm time and feed time into Internal eeprom*/
 
void time(int x)  
{
  int temp=1,minuts=0,hours=0,seconds=0;
    while(temp==1)
    {
     if(digitalRead(INC)==0)
     {
      HOUR++;
      if(HOUR==24)
      {
       HOUR=0;
      }
      while(digitalRead(INC)==0);
     }     
lcd.clear();
      lcd.setCursor(0,0);
    lcd.print("Enter Time ");
   lcd.print(x); 
    lcd.setCursor(0,1);
    lcd.print(HOUR);
    lcd.print(":");
    lcd.print(MINUT);
    lcd.print(":");
    lcd.print(SECOND);
    delay(100);
    if(digitalRead(next)==0)
    {
      hours1=HOUR;
      EEPROM.write(add++,hours1);
     temp=2;
     while(digitalRead(next)==0);
    }
    } 
    while(temp==2)
    {     
if(digitalRead(INC)==0)
     {
      MINUT++;
      if(MINUT==60)
      {MINUT=0;}
      while(digitalRead(INC)==0);
     }
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Enter Time ");
    lcd.print(x); 
    lcd.setCursor(0,1);
    lcd.print(HOUR);
    lcd.print(":");
    lcd.print(MINUT);
    lcd.print(":");
    lcd.print(SECOND);
    delay(100);
      if(digitalRead(next)==0)
      {
       minut=MINUT;
       EEPROM.write(add++, minut);
       temp=0;
       while(digitalRead(next)==0);
      }
    }
    delay(1000);
    
}
 
 
/* Function to check medication time */
 
void match()
{
  int tem[17];
  for(int i=11;i<17;i++)
  {
    tem[i]=EEPROM.read(i); 
 }
  if(HOUR == tem[11] && MINUT == tem[12]) 
  {
   beep();
   beep();
   beep();
   beep();
   lcd.setCursor(0,0);
   lcd.print("  Take Group One  ");
   lcd.setCursor(0,1);
   lcd.print("     Medicine     ");
   beep();
   beep();
   beep();
   beep();
  }
 
   if(HOUR == tem[13] && MINUT == tem[14])
   {
      beep();
   beep();
   beep();
   beep();
    lcd.setCursor(0,0);
   lcd.print("  Take Group Two  ");
   lcd.setCursor(0,1);
   lcd.print("     Medicine     ");
    beep();
   beep();
   beep();
   beep();
   }
 
 
   if(HOUR == tem[15] && MINUT == tem[16] )
   {  
     beep();
   beep();
   beep();
   beep();
    lcd.setCursor(0,0);
   lcd.print("Take Group Three ");
   lcd.setCursor(0,1);
   lcd.print("     Medicine    ");
   beep();
   beep();
   beep();
   beep();
   }
}
 
/* function to buzzer indication */
 
void beep()
{
   digitalWrite(buzzer,HIGH);
   delay(500);
   digitalWrite(buzzer, LOW);
   delay(500);
}

بالمرفقات النتايج مع الكود الثاني
مع صورة السيركت


اتمنى احد يقدر يساعدني بالمشكلة

وشكراً

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 10-04-2016, 05:05 PM المشاركة 2   
افتراضي


متابعة الكود صعب و بالاخص انه طويل و اللغة تبدو غريبة ...
يوجد كود كامل لساعة رقمية تعمل بنظام السفن سكمنت ليد و تحتوي على الزمن و المنبه فقط و ليس فيها التاريخ ...

حيدر علاج حسن
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

ho0oney
:: مهندس ::
تاريخ التسجيل: Oct 2011
المشاركات: 6
نشاط [ ho0oney ]
قوة السمعة:0
قديم 10-04-2016, 10:49 PM المشاركة 3   
افتراضي


مرحبا
هذه لغة الاردوينو المعتادة


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 11-04-2016, 02:53 PM المشاركة 4   
افتراضي


لم اتقن الاوردينيو في الحقيقة ...
معظم الاخوه هنا يعتمدون على المايكروسي

حيدر علاج حسن
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 12:25 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025