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

   

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 29-12-2019, 08:03 PM المشاركة 65   
افتراضي



السلام عليكم

الرمز المكرر(==) خاص بالسويتش وإليك هذه الصور من المؤلف أحمد سمير فايد حفظه الله مباشرة ....تحياتي.


مشكور اخي عصام على الاضافة الله ببارك لك وبك والاخ عريبي .
تحياتي لكم

اعلانات

الصورة الرمزية عريبى محمود
عريبى محمود
:: ( رحمه الله عليه ) ::
تاريخ التسجيل: Feb 2009
الدولة: لا تسأل الطغاه لماذا طغو بل اسأل العبيد لماذا انحنو
المشاركات: 3,126
نشاط [ عريبى محمود ]
قوة السمعة:
قديم 30-12-2019, 02:21 AM المشاركة 66   
x4



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


https://up.top4top.net/downloadf-14588qk1g1-rar.html

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

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 30-12-2019, 04:10 AM المشاركة 67   
افتراضي


السلام عليكم ورحمة الله

ابشر أخي .. مسلم لقد انتهيت من تصميم المحكاة وجاري كتابة البرنامج ..
وأدعوك للمتابعه هنا لأن توجد بعض الإستفسارات حول ( حساس القلويات ) و ( محرك القشط الجنوبي والشمالي ) اريد بعض التوضيح والشرح .. والباقي مفهوم انشاء الله ..

لقد وضعت انذار وسوف نفكر فيما نستخدمة في البرنامج ..

الأن انظر الي هذة الصورة هل مسميات المحركات والحساسات مظبوطه بالتسمية أم هناك خطأ ..
ايضا أن كان هناك شئ تريد اضافتة اعلمني به لكي اتخذ حسابة في المشروع فكر في كل ما تحتاجه لكي تحصل علي برنامج جيد وذكي في التحكم في الخزان

ايضا هل تستطيع الحصول علي هذا الميكرو PIC18F4550 أم نعتمد الميكرو PIC16F877A





انتظر الملاحظات حيث أقوم بكتابة هيكل البرنامج وانتظرك لأعطائي اشارة البدأ



الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 30-12-2019, 08:46 AM المشاركة 68   
افتراضي


السلام عليكم ورحمة الله

احمد الله علي توفيقه لقد انهيت كتابة البرنامج في هذة اليله استغرق وقت 7 ساعات في تصميم المحكاة وكتابة البرنامج ..

اليك صورة للمحكاة







كود البرنامج



كود:
     // ENG / ABDALLA HEGAZY **
    // DATA / 2019/12/30     **
    // controller            **

  // Lcd pinout settings
   sbit LCD_RS at RB0_bit;
   sbit LCD_EN at RB1_bit;
   sbit LCD_D7 at RB5_bit;
   sbit LCD_D6 at RB4_bit;
   sbit LCD_D5 at RB3_bit;
   sbit LCD_D4 at RB2_bit;

   // Pin direction
   sbit LCD_RS_Direction at TRISB0_bit;
   sbit LCD_EN_Direction at TRISB1_bit;
   sbit LCD_D7_Direction at TRISB5_bit;
   sbit LCD_D6_Direction at TRISB4_bit;
   sbit LCD_D5_Direction at TRISB3_bit;
   sbit LCD_D4_Direction at TRISB2_bit;

  #define  MOTOR_vibrator_M11     PORTC.F7
  #define  MOTOR_Mixing_M62      PORTC.F6
  #define  Helical_motor_M61      PORTC.F5
  #define  MOTOR_Y33              PORTC.F4
  #define  MOTOR_Water_valve_Y32  PORTA.F5
  #define SENSOR_LEVEL_1  PORTD.F2
  #define SENSOR_LEVEL_2  PORTD.F3
  #define SENSOR_LEVEL_3  PORTD.F4
  #define SENSOR_LEVEL_4  PORTD.F5
  #define SENSOR_LEVEL_5  PORTD.F6
  #define SENSOR_LEVEL_6  PORTD.F7
  #define BEZR  PORTD.F1=1; delay_ms(120); PORTD.F1=0; delay_ms(350);
  #define BEZRR  PORTD.F1=1; delay_ms(150); PORTD.F1=0; delay_ms(50);  PORTD.F1=1; delay_ms(150); PORTD.F1=0; delay_ms(1500);
   unsigned X1=0,X2=0,X3=0,M=0,A=0;
   unsigned DATA_SHOW=0,DATA_SHOW2=0;
   unsigned W1=0,W2=0,W3=0,W4=0;
   //===================================//
       void AUTO() {
       PORTE.F0=1;
       W1=0;
       while(X1==0)
   {
      if(W1==0 ){
      MOTOR_vibrator_M11=1; MOTOR_Water_valve_Y32 =1; W1=1; }

     if( SENSOR_LEVEL_1 ==1  ){ MOTOR_Mixing_M62 =1; }
     if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61 =1; }
     if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11=0; }
     if( SENSOR_LEVEL_4 ==1 )
    {
  MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
  MOTOR_Y33 =1;
     X1=1;
   }

   }
     X1=0;
      while( X1==0 )
    {
      if( SENSOR_LEVEL_1 ==0){
      for(X3=0; X3<M; X3++){ delay_ms(60000); }
      MOTOR_Y33 =0;
      Helical_motor_M61 =0;
      MOTOR_Mixing_M62 =0;
      MOTOR_vibrator_M11=0;
      MOTOR_Water_valve_Y32 =1;
      X1 =1;
      }
   }


   X1=0;
 }

  //====================================//
  //************************************//
        void MANUAL() {
        PORTB.F7=1;
        while(1)
     {

     MOTOR_vibrator_M11    =1;
     MOTOR_Water_valve_Y32 =1;
     if( SENSOR_LEVEL_1 ==1 ){ MOTOR_Mixing_M62      =1; }
     if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61     =1; }
     if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11    =0; }
     if( SENSOR_LEVEL_4 ==1 )
    {
  MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
  MOTOR_Y33 =1;        // &#221;&#202;&#205; &#213;&#227;&#199;&#227; &#199;&#225;&#202;&#221;&#209;&#237;&#219; //

      while( X1==1 )
    {
      if( SENSOR_LEVEL_1 ==0){
      for(X3=0; X3<M; X3++){ delay_ms(60000); }
      MOTOR_Y33 =0;  X1 =1; }
   }
   }
   }
 }

   //===========================================//
      void SET_PROGRAM() {
      X2=0;
      Lcd_Cmd(_LCD_CLEAR);  // Clear display
      Lcd_Out(1, 1, " Time settings " );
      Lcd_Out(1, 1, "Tim1:   /Tim2:  " );

       while(X2==0)
    {
      LCD_Chr(1, 15, 48 + ((A / 10) % 10));
      LCD_Chr(1, 16, 48 + ( A % 10));
    //=======================================//
      LCD_Chr(1, 6, 48 + ((M / 10) % 10));
      LCD_Chr(1, 7, 48 + ( M % 10));
      if(PORTC.F1==1){BEZR M ++;  }
      if(PORTC.F2==1){BEZR M --;  }
      if(PORTC.F3==1){BEZR  X2=1;  }
    }

      X2=0;
      while(X2==0)
    {
      LCD_Chr(1, 15, 48 + ((A / 10) % 10));
      LCD_Chr(1, 16, 48 + ( A % 10));
      if(PORTC.F1==1){BEZR A ++;  }
      if(PORTC.F2==1){BEZR A ++;  }
      if(PORTC.F3==1){BEZR  X2=1;  }
    }
        Lcd_Cmd(_LCD_CLEAR);
        Lcd_Out(2, 1, "The time is set" );
        Lcd_Out(1, 1, "Ready to run" );  delay_ms(6000);

        Lcd_Cmd(_LCD_CLEAR);  // Clear display
        Lcd_Out(1, 1, " Water tank " );
        Lcd_Out(2, 1, " controller " );

        X2=0;
    }

 //===========================================//
  //************************************//
         void main() {
        TRISB=0;   PORTB=0;
        TRISD=252; PORTD=0;
        TRISC=15; PORTC=0;
        TRISA=1;   PORTA=0;
        TRISE=6;   PORTE=0;
        ADC_Init();  // Initialize ADC module with default settings  //
        Lcd_Init();  // Initialize LCD  //
        adcon1=0x07;
        Lcd_Cmd(_LCD_CLEAR);  // Clear display
        Lcd_Cmd(_LCD_CURSOR_OFF);  // Cursor off
        Lcd_Out(1, 3, "Hello!"); delay_ms(3000);
        Lcd_Cmd(_LCD_CLEAR);  // Clear display
        Lcd_Out(1, 1, " Water tank " );
        Lcd_Out(2, 1, " controller " );
       BEZRR BEZRR  BEZRR delay_ms(3000);


     //====================//

       while(1){

     if (Button(&PORTC, 0, 10, 1)) {BEZR delay_ms(350); SET_PROGRAM();} // SET //
     if (Button(&PORTE, 1, 10, 1)) {BEZR  AUTO();   }
     if (Button(&PORTE, 2, 10, 1)) {BEZR  MANUAL(); }


    }
   }




انشاء الله اشرح لك خطوات البرنامج وكيف يعمل

وللعلم البرنامج مظبوت بكل الخطوات اللتي طلبتها ولو هناك أي اضافات انا متابع معك
يمكنك اختيار وقت الإنتظار في الحالتين اللتي ذكرتهما في طلبك

باقي فقط اضيف كود لحفظ اعدادات للمستخدم ليتذكر البرنامج الأوقات المدخلة عند فصل التيار عن الدائرة واعادة تشغيلة يتم استرجاع البيانات بشكل اوتوماتيك


رابط تحميل المشروع كامل
https://drive.google.com/open?id=1R_...Ojww4WPk-XA-7U




التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 30-12-2019 الساعة 09:08 AM

الصورة الرمزية burai nuraldaem
burai nuraldaem
:: عضو فضى ::
تاريخ التسجيل: Nov 2015
الدولة: السودان
المشاركات: 501
نشاط [ burai nuraldaem ]
قوة السمعة:
قديم 30-12-2019, 12:20 PM المشاركة 69   
افتراضي


السلام عليكم ورحمة الله

احمد الله علي توفيقه لقد انهيت كتابة البرنامج في هذة اليله استغرق وقت 7 ساعات في تصميم المحكاة وكتابة البرنامج ..

اليك صورة للمحكاة







كود البرنامج



كود:
     // ENG / ABDALLA HEGAZY **
    // DATA / 2019/12/30     **
    // controller            **

  // Lcd pinout settings
   sbit LCD_RS at RB0_bit;
   sbit LCD_EN at RB1_bit;
   sbit LCD_D7 at RB5_bit;
   sbit LCD_D6 at RB4_bit;
   sbit LCD_D5 at RB3_bit;
   sbit LCD_D4 at RB2_bit;

   // Pin direction
   sbit LCD_RS_Direction at TRISB0_bit;
   sbit LCD_EN_Direction at TRISB1_bit;
   sbit LCD_D7_Direction at TRISB5_bit;
   sbit LCD_D6_Direction at TRISB4_bit;
   sbit LCD_D5_Direction at TRISB3_bit;
   sbit LCD_D4_Direction at TRISB2_bit;

  #define  MOTOR_vibrator_M11     PORTC.F7
  #define  MOTOR_Mixing_M62      PORTC.F6
  #define  Helical_motor_M61      PORTC.F5
  #define  MOTOR_Y33              PORTC.F4
  #define  MOTOR_Water_valve_Y32  PORTA.F5
  #define SENSOR_LEVEL_1  PORTD.F2
  #define SENSOR_LEVEL_2  PORTD.F3
  #define SENSOR_LEVEL_3  PORTD.F4
  #define SENSOR_LEVEL_4  PORTD.F5
  #define SENSOR_LEVEL_5  PORTD.F6
  #define SENSOR_LEVEL_6  PORTD.F7
  #define BEZR  PORTD.F1=1; delay_ms(120); PORTD.F1=0; delay_ms(350);
  #define BEZRR  PORTD.F1=1; delay_ms(150); PORTD.F1=0; delay_ms(50);  PORTD.F1=1; delay_ms(150); PORTD.F1=0; delay_ms(1500);
   unsigned X1=0,X2=0,X3=0,M=0,A=0;
   unsigned DATA_SHOW=0,DATA_SHOW2=0;
   unsigned W1=0,W2=0,W3=0,W4=0;
   //===================================//
       void AUTO() {
       PORTE.F0=1;
       W1=0;
       while(X1==0)
   {
      if(W1==0 ){
      MOTOR_vibrator_M11=1; MOTOR_Water_valve_Y32 =1; W1=1; }

     if( SENSOR_LEVEL_1 ==1  ){ MOTOR_Mixing_M62 =1; }
     if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61 =1; }
     if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11=0; }
     if( SENSOR_LEVEL_4 ==1 )
    {
  MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
  MOTOR_Y33 =1;
     X1=1;
   }

   }
     X1=0;
      while( X1==0 )
    {
      if( SENSOR_LEVEL_1 ==0){
      for(X3=0; X3<M; X3++){ delay_ms(60000); }
      MOTOR_Y33 =0;
      Helical_motor_M61 =0;
      MOTOR_Mixing_M62 =0;
      MOTOR_vibrator_M11=0;
      MOTOR_Water_valve_Y32 =1;
      X1 =1;
      }
   }


   X1=0;
 }

  //====================================//
  //************************************//
        void MANUAL() {
        PORTB.F7=1;
        while(1)
     {

     MOTOR_vibrator_M11    =1;
     MOTOR_Water_valve_Y32 =1;
     if( SENSOR_LEVEL_1 ==1 ){ MOTOR_Mixing_M62      =1; }
     if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61     =1; }
     if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11    =0; }
     if( SENSOR_LEVEL_4 ==1 )
    {
  MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
  MOTOR_Y33 =1;        // &#221;&#202;&#205; &#213;&#227;&#199;&#227; &#199;&#225;&#202;&#221;&#209;&#237;&#219; //

      while( X1==1 )
    {
      if( SENSOR_LEVEL_1 ==0){
      for(X3=0; X3<M; X3++){ delay_ms(60000); }
      MOTOR_Y33 =0;  X1 =1; }
   }
   }
   }
 }

   //===========================================//
      void SET_PROGRAM() {
      X2=0;
      Lcd_Cmd(_LCD_CLEAR);  // Clear display
      Lcd_Out(1, 1, " Time settings " );
      Lcd_Out(1, 1, "Tim1:   /Tim2:  " );

       while(X2==0)
    {
      LCD_Chr(1, 15, 48 + ((A / 10) % 10));
      LCD_Chr(1, 16, 48 + ( A % 10));
    //=======================================//
      LCD_Chr(1, 6, 48 + ((M / 10) % 10));
      LCD_Chr(1, 7, 48 + ( M % 10));
      if(PORTC.F1==1){BEZR M ++;  }
      if(PORTC.F2==1){BEZR M --;  }
      if(PORTC.F3==1){BEZR  X2=1;  }
    }

      X2=0;
      while(X2==0)
    {
      LCD_Chr(1, 15, 48 + ((A / 10) % 10));
      LCD_Chr(1, 16, 48 + ( A % 10));
      if(PORTC.F1==1){BEZR A ++;  }
      if(PORTC.F2==1){BEZR A ++;  }
      if(PORTC.F3==1){BEZR  X2=1;  }
    }
        Lcd_Cmd(_LCD_CLEAR);
        Lcd_Out(2, 1, "The time is set" );
        Lcd_Out(1, 1, "Ready to run" );  delay_ms(6000);

        Lcd_Cmd(_LCD_CLEAR);  // Clear display
        Lcd_Out(1, 1, " Water tank " );
        Lcd_Out(2, 1, " controller " );

        X2=0;
    }

 //===========================================//
  //************************************//
         void main() {
        TRISB=0;   PORTB=0;
        TRISD=252; PORTD=0;
        TRISC=15; PORTC=0;
        TRISA=1;   PORTA=0;
        TRISE=6;   PORTE=0;
        ADC_Init();  // Initialize ADC module with default settings  //
        Lcd_Init();  // Initialize LCD  //
        adcon1=0x07;
        Lcd_Cmd(_LCD_CLEAR);  // Clear display
        Lcd_Cmd(_LCD_CURSOR_OFF);  // Cursor off
        Lcd_Out(1, 3, "Hello!"); delay_ms(3000);
        Lcd_Cmd(_LCD_CLEAR);  // Clear display
        Lcd_Out(1, 1, " Water tank " );
        Lcd_Out(2, 1, " controller " );
       BEZRR BEZRR  BEZRR delay_ms(3000);


     //====================//

       while(1){

     if (Button(&PORTC, 0, 10, 1)) {BEZR delay_ms(350); SET_PROGRAM();} // SET //
     if (Button(&PORTE, 1, 10, 1)) {BEZR  AUTO();   }
     if (Button(&PORTE, 2, 10, 1)) {BEZR  MANUAL(); }


    }
   }


انشاء الله اشرح لك خطوات البرنامج وكيف يعمل

وللعلم البرنامج مظبوت بكل الخطوات اللتي طلبتها ولو هناك أي اضافات انا متابع معك
يمكنك اختيار وقت الإنتظار في الحالتين اللتي ذكرتهما في طلبك

باقي فقط اضيف كود لحفظ اعدادات للمستخدم ليتذكر البرنامج الأوقات المدخلة عند فصل التيار عن الدائرة واعادة تشغيلة يتم استرجاع البيانات بشكل اوتوماتيك


رابط تحميل المشروع كامل
https://drive.google.com/open?id=1R_...Ojww4WPk-XA-7U


مجهود ممتاز وكبير ربنا يوفقك


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 30-12-2019, 05:25 PM المشاركة 70   
افتراضي


السلام عليكم ورحمة الله
الله يبارك فيكم وعليكم شكرا لكم على مجهودكم اخوتي عريبي و عبد الله و عصام واهلا بالاخ برعي .
نعم اخي عبد الله توكل على الله .
جاري رفع الملفات لكن توكل على الله اخي عبد الله و ابدأ المعالج ٨٧٧ موجود والثاني لا قال البائع يوجد عدة انواع من atmell ولا يوجد سوى ٨٧٧ ونوع آخر باربعة منافذ فقط يعني صغير .
جزاكم الله خيرا عني .
اخي عبد الله بالنسبة لمقياس القلوية و القواشط ساصورهم لك لفقط القواشط واريك الدارة القديمة التي نفذتها له وارفق لك المطلوب اما جهاز مقياس القلوية ساشرحه لك لاحقا ان شاء الله .
بارك الله بكم .


salim2
:: مهندس ::
تاريخ التسجيل: Aug 2007
الدولة: الجزائر
المشاركات: 38
نشاط [ salim2 ]
قوة السمعة:
قديم 30-12-2019, 06:25 PM المشاركة 71   
افتراضي


بارك الله فيك أستاذنا الفاضل.
لي طلب لو سمحت :
اريد أن تقوم بمشروع عمل جهاز مستقبل إشارة RF بقناتين عن طريق البيك 16f84a باستعمال ريموت سنترلوك أبواب السيارة حيث تتم العملية كما يلي:
عند الضغط على سويتش الريموت يشتغل الريلي رقم 1 ،عند الضغط على السويتش مرة أخرى الريلي رقم 1 يفصل ، عند الضغط على السويتش مرة أخرى يشتغل الريلي رقم 2 وعند الضغط مرة أخرى على السويتش يفصل الريلي رقم 2 وهكذا باستمرار.


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 30-12-2019, 06:52 PM المشاركة 72   
افتراضي


السلام عليكم ورحمة الله

احمد الله علي توفيقه لقد انهيت كتابة البرنامج في هذة اليله استغرق وقت 7 ساعات في تصميم المحكاة وكتابة البرنامج ..

اليك صورة للمحكاة







كود البرنامج



كود:
     // ENG / ABDALLA HEGAZY **
    // DATA / 2019/12/30     **
    // controller            **

  // Lcd pinout settings
   sbit LCD_RS at RB0_bit;
   sbit LCD_EN at RB1_bit;
   sbit LCD_D7 at RB5_bit;
   sbit LCD_D6 at RB4_bit;
   sbit LCD_D5 at RB3_bit;
   sbit LCD_D4 at RB2_bit;

   // Pin direction
   sbit LCD_RS_Direction at TRISB0_bit;
   sbit LCD_EN_Direction at TRISB1_bit;
   sbit LCD_D7_Direction at TRISB5_bit;
   sbit LCD_D6_Direction at TRISB4_bit;
   sbit LCD_D5_Direction at TRISB3_bit;
   sbit LCD_D4_Direction at TRISB2_bit;

  #define  MOTOR_vibrator_M11     PORTC.F7
  #define  MOTOR_Mixing_M62      PORTC.F6
  #define  Helical_motor_M61      PORTC.F5
  #define  MOTOR_Y33              PORTC.F4
  #define  MOTOR_Water_valve_Y32  PORTA.F5
  #define SENSOR_LEVEL_1  PORTD.F2
  #define SENSOR_LEVEL_2  PORTD.F3
  #define SENSOR_LEVEL_3  PORTD.F4
  #define SENSOR_LEVEL_4  PORTD.F5
  #define SENSOR_LEVEL_5  PORTD.F6
  #define SENSOR_LEVEL_6  PORTD.F7
  #define BEZR  PORTD.F1=1; delay_ms(120); PORTD.F1=0; delay_ms(350);
  #define BEZRR  PORTD.F1=1; delay_ms(150); PORTD.F1=0; delay_ms(50);  PORTD.F1=1; delay_ms(150); PORTD.F1=0; delay_ms(1500);
   unsigned X1=0,X2=0,X3=0,M=0,A=0;
   unsigned DATA_SHOW=0,DATA_SHOW2=0;
   unsigned W1=0,W2=0,W3=0,W4=0;
   //===================================//
       void AUTO() {
       PORTE.F0=1;
       W1=0;
       while(X1==0)
   {
      if(W1==0 ){
      MOTOR_vibrator_M11=1; MOTOR_Water_valve_Y32 =1; W1=1; }

     if( SENSOR_LEVEL_1 ==1  ){ MOTOR_Mixing_M62 =1; }
     if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61 =1; }
     if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11=0; }
     if( SENSOR_LEVEL_4 ==1 )
    {
  MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
  MOTOR_Y33 =1;
     X1=1;
   }

   }
     X1=0;
      while( X1==0 )
    {
      if( SENSOR_LEVEL_1 ==0){
      for(X3=0; X3<M; X3++){ delay_ms(60000); }
      MOTOR_Y33 =0;
      Helical_motor_M61 =0;
      MOTOR_Mixing_M62 =0;
      MOTOR_vibrator_M11=0;
      MOTOR_Water_valve_Y32 =1;
      X1 =1;
      }
   }


   X1=0;
 }

  //====================================//
  //************************************//
        void MANUAL() {
        PORTB.F7=1;
        while(1)
     {

     MOTOR_vibrator_M11    =1;
     MOTOR_Water_valve_Y32 =1;
     if( SENSOR_LEVEL_1 ==1 ){ MOTOR_Mixing_M62      =1; }
     if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61     =1; }
     if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11    =0; }
     if( SENSOR_LEVEL_4 ==1 )
    {
  MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
  MOTOR_Y33 =1;        // &#221;&#202;&#205; &#213;&#227;&#199;&#227; &#199;&#225;&#202;&#221;&#209;&#237;&#219; //

      while( X1==1 )
    {
      if( SENSOR_LEVEL_1 ==0){
      for(X3=0; X3<M; X3++){ delay_ms(60000); }
      MOTOR_Y33 =0;  X1 =1; }
   }
   }
   }
 }

   //===========================================//
      void SET_PROGRAM() {
      X2=0;
      Lcd_Cmd(_LCD_CLEAR);  // Clear display
      Lcd_Out(1, 1, " Time settings " );
      Lcd_Out(1, 1, "Tim1:   /Tim2:  " );

       while(X2==0)
    {
      LCD_Chr(1, 15, 48 + ((A / 10) % 10));
      LCD_Chr(1, 16, 48 + ( A % 10));
    //=======================================//
      LCD_Chr(1, 6, 48 + ((M / 10) % 10));
      LCD_Chr(1, 7, 48 + ( M % 10));
      if(PORTC.F1==1){BEZR M ++;  }
      if(PORTC.F2==1){BEZR M --;  }
      if(PORTC.F3==1){BEZR  X2=1;  }
    }

      X2=0;
      while(X2==0)
    {
      LCD_Chr(1, 15, 48 + ((A / 10) % 10));
      LCD_Chr(1, 16, 48 + ( A % 10));
      if(PORTC.F1==1){BEZR A ++;  }
      if(PORTC.F2==1){BEZR A ++;  }
      if(PORTC.F3==1){BEZR  X2=1;  }
    }
        Lcd_Cmd(_LCD_CLEAR);
        Lcd_Out(2, 1, "The time is set" );
        Lcd_Out(1, 1, "Ready to run" );  delay_ms(6000);

        Lcd_Cmd(_LCD_CLEAR);  // Clear display
        Lcd_Out(1, 1, " Water tank " );
        Lcd_Out(2, 1, " controller " );

        X2=0;
    }

 //===========================================//
  //************************************//
         void main() {
        TRISB=0;   PORTB=0;
        TRISD=252; PORTD=0;
        TRISC=15; PORTC=0;
        TRISA=1;   PORTA=0;
        TRISE=6;   PORTE=0;
        ADC_Init();  // Initialize ADC module with default settings  //
        Lcd_Init();  // Initialize LCD  //
        adcon1=0x07;
        Lcd_Cmd(_LCD_CLEAR);  // Clear display
        Lcd_Cmd(_LCD_CURSOR_OFF);  // Cursor off
        Lcd_Out(1, 3, "Hello!"); delay_ms(3000);
        Lcd_Cmd(_LCD_CLEAR);  // Clear display
        Lcd_Out(1, 1, " Water tank " );
        Lcd_Out(2, 1, " controller " );
       BEZRR BEZRR  BEZRR delay_ms(3000);


     //====================//

       while(1){

     if (Button(&PORTC, 0, 10, 1)) {BEZR delay_ms(350); SET_PROGRAM();} // SET //
     if (Button(&PORTE, 1, 10, 1)) {BEZR  AUTO();   }
     if (Button(&PORTE, 2, 10, 1)) {BEZR  MANUAL(); }


    }
   }




انشاء الله اشرح لك خطوات البرنامج وكيف يعمل

وللعلم البرنامج مظبوت بكل الخطوات اللتي طلبتها ولو هناك أي اضافات انا متابع معك
يمكنك اختيار وقت الإنتظار في الحالتين اللتي ذكرتهما في طلبك

باقي فقط اضيف كود لحفظ اعدادات للمستخدم ليتذكر البرنامج الأوقات المدخلة عند فصل التيار عن الدائرة واعادة تشغيلة يتم استرجاع البيانات بشكل اوتوماتيك


رابط تحميل المشروع كامل
https://drive.google.com/open?id=1R_...Ojww4WPk-XA-7U


بارك الله بك والله شيء رائع
لكن لا اريد شاشة عرض يكفي ليدات فقط كما رايت فكما اخبرتك لقد عرضت عليهم ذلك ولم يوافقوني .
اعجبني جدا التنبيه الصوتي ممتاز تفكير متقدم وعقل متاقلم .
اخي الكريم القاشط مرحلة مستقلة عن مرحلة تحضير الماء المعالج .
و ايضا لاحظت مفتاحان للتشغيل التلقائي .
ان المفتاح الذي ساستخدمه هو مفتاح دوار بثلاث وضعيات spdt يدوي واطفاء وتلقائي .
بالنسبة لجهاز قياس القلوية ايضا مستقل ولكن يقوم على تشغيل برنامج التحضير يدويا عند كل ساعة ان كانت حموضة الماء مرتفعة .
اي يتدخل بتشغيل البرنامج دورة واحدة فقط تلقائيا وهنا يقوم العمل عل وضعه تلقائيا ان كانت الحموضة اقل من ٦ .
بالنسبة لمفاتيح الضبط و المعايرة والتاكيد لماذا تم وضعها هنا .
ان كان من اجل الوقت ارجوك اجعل التحكم بالوقت اما عن طريق مقاومة متغيرة او طرف اوصل عليه ريليه زمنية .
الاسماء صحيحة وكل شيء تمام ان شاء الله .
بالنسبة للتنبيه الصوتي متى يعمل حقيقة يوجد بالغرفة جرس كبير يفيق الميت من موته من شدة صوته لقد ارعبني كثيرا عندما شغلوه .
قالوا من اجل ان يصحي النيام وقلت لهم اعتقد انكم تتقاتلوب كثيرا مع زوجاتكم مساء قالوا لما اجبت لانه لايوجد لدى نساءكم مثل هذا الجرس لاداء الواجب .😂😂😂😂😁😁😁.
شكرا لك



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