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

   

hassan.pic
:: مهندس متميز ::
تاريخ التسجيل: Aug 2016
المشاركات: 300
نشاط [ hassan.pic ]
قوة السمعة:
قديم 06-11-2016, 03:54 PM المشاركة 433   
افتراضي



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

اعلانات

hassan.pic
:: مهندس متميز ::
تاريخ التسجيل: Aug 2016
المشاركات: 300
نشاط [ hassan.pic ]
قوة السمعة:
قديم 06-11-2016, 04:28 PM المشاركة 434   
افتراضي


اخي العزيز في كود الdelay الذي في الاعلي اذاوضعت قيمة بين 150 وما تحت لاتكتمل الدورة واذا 150 ومافوق تخرج الحركات مشوهة ومعها شطات ضوئية ، بارك الله فيك

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

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 06-11-2016, 09:05 PM المشاركة 435   
sun


بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته
توكل على الله الذى لا اله الا هو :

كود:
void step_Move(char step);
char i = 0 , START_flag = 0 , RELOAD_flag = 0 ;
char stepdelay = 0;
unsigned int  numbofturns = 0;

char letter_M[] = {0xfe,0xfe,0x60,0x30,0x60,0xfe,0xfe};
char letter_i[] = { 0x00,0x82,0xfe,0xfe,0x82,0x00,0x00};
char letter_c[] = { 0x38,0x7c,0xc6,0x82,0x82,0xc6,0x44};
char letter_R[] = {0x82,0xfe,0xfe,0x98,0x9c,0xf6,0x62};
char letter_O[] = {0X38,0X7C,0XC6,0X82,0XC6,0X7C,0X38};
char letter_p[] = { 0x82,0xfe,0xfe,0x92,0x90,0xf0,0x60};
char letter_Rr[] = { 0x82,0xfe,0xfe,0x98,0x9c,0xf6,0x62};

void interrup() iv IVT_ADDR_PCINT0 ics ICS_AUTO {
 PCIFR.PCIF0 = 1;
 if ((PINB & 0X02) && (START_flag == 0) ) {START_flag = 1;}
 if ((PINB & 0X02) && (START_flag == 1) ) {RELOAD_flag = 1;}
}

void step_Move(char step){
 for (i=0; i< step; i++){
     delay_us(600);       //
 }
}

void main() {
DDRD = 0XFF;
PORTD = 0;
DDRB = 0XFD;
PORTB = 2;

SREG_I_bit = 1;
PCICR |= 1<<PCIE0;
PCMSK0 |= 1<<PCINT1;
while(1){ 
 if (START_flag == 1){
          numbofturns++;
          if (numbofturns == 4 ) {   //
             numbofturns = 0;
             stepdelay++;
          }
          step_Move(stepdelay);

          for(i=0; i<7; i++){PORTD=letter_M[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          
          if (RELOAD_flag == 1) {RELOAD_flag = 0;
                                 if (i == 0) {stepdelay = 0;}
                                 continue;
                                }
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_I[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_C[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

         for(i=0; i<7; i++){PORTD=letter_R[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_O[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_P[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_Rr[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);
          
          START_flag = 0;

    }
 }
}
و ما توفيقى الا بالله

و لا حول و لا قوة الا بالله
اللهم صبرك و نصرك




hassan.pic
:: مهندس متميز ::
تاريخ التسجيل: Aug 2016
المشاركات: 300
نشاط [ hassan.pic ]
قوة السمعة:
قديم 06-11-2016, 10:18 PM المشاركة 436   
افتراضي


حياك الله اخي العزيز . قمت بتجربة الكود والحروف لم تتحرك ابدا وعند تعديل 0 الحى 1 تتحرك الحروف لكن نفس المشكلةif(i==0 حياك الله اخي العزيز


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 06-11-2016, 10:38 PM المشاركة 437   
sun


بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته
توكل على الله الذى لا اله الا هو :
جرب هذا الكود مرة , ثم امسح السطر الاحمر و جرب مرة اخرى .
كود:
void step_Move(char step);
char i = 0 , START_flag = 0 , RELOAD_flag = 0 ;
char stepdelay = 0;
unsigned int  numbofturns = 0;

char letter_M[] = {0xfe,0xfe,0x60,0x30,0x60,0xfe,0xfe};
char letter_i[] = { 0x00,0x82,0xfe,0xfe,0x82,0x00,0x00};
char letter_c[] = { 0x38,0x7c,0xc6,0x82,0x82,0xc6,0x44};
char letter_R[] = {0x82,0xfe,0xfe,0x98,0x9c,0xf6,0x62};
char letter_O[] = {0X38,0X7C,0XC6,0X82,0XC6,0X7C,0X38};
char letter_p[] = { 0x82,0xfe,0xfe,0x92,0x90,0xf0,0x60};
char letter_Rr[] = { 0x82,0xfe,0xfe,0x98,0x9c,0xf6,0x62};

void interrup() iv IVT_ADDR_PCINT0 ics ICS_AUTO {
 PCIFR.PCIF0 = 1;
 if ((PINB & 0X02) && (START_flag == 0) ) {START_flag = 1;}
 if ((PINB & 0X02) && (START_flag == 1) ) {RELOAD_flag = 1;}
}

void step_Move(char step){
 for (i=0; i< step; i++){
     delay_us(600);       //
 }
}

void main() {
DDRD = 0XFF;
PORTD = 0;
DDRB = 0XFD;
PORTB = 2;

SREG_I_bit = 1;
PCICR |= 1<<PCIE0;
PCMSK0 |= 1<<PCINT1;
while(1){ 
 if (START_flag == 1){
          numbofturns++;
          if (numbofturns == 4 ) {   //
             numbofturns = 0;
             stepdelay++;
          }
          step_Move(stepdelay);

          for(i=0; i<7; i++){PORTD=letter_M[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          
          if (RELOAD_flag == 1) {RELOAD_flag = 0;
                                 if (i <= 1) {stepdelay = 0;}
                                 continue;
                                }
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_I[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_C[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

         for(i=0; i<7; i++){PORTD=letter_R[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_O[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_P[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_Rr[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);
          
          START_flag = 0;

    }
 }
}

و ما توفيقى الا بالله

و لا حول و لا قوة الا بالله
اللهم صبرك و نصرك




hassan.pic
:: مهندس متميز ::
تاريخ التسجيل: Aug 2016
المشاركات: 300
نشاط [ hassan.pic ]
قوة السمعة:
قديم 06-11-2016, 11:56 PM المشاركة 438   
افتراضي


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


hassan.pic
:: مهندس متميز ::
تاريخ التسجيل: Aug 2016
المشاركات: 300
نشاط [ hassan.pic ]
قوة السمعة:
قديم 07-11-2016, 12:10 AM المشاركة 439   
افتراضي


اخي العزيز ، فط استشارة صغيرة ،هل ممكن ان نجمع بين المثال الموجود في موقع ROBO ZONE بما يتعلق بطريقة تحريك الحروف ومشروعنا هذا كاستعمالنا للسينسور وبداية انطلاق الحروف ولو بحرف واحد كتجربة ، ادامك الله بالف خير ياطيب


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 07-11-2016, 12:22 AM المشاركة 440   
sun


بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته
توكل على الله الذى لا اله الا هو :
اخى العزيز ايضا اريدك تجربة هذا الكود , مع ملاحظة انك عند تجربة كل كود تكتب ملاحظتك و وصفك لطريقة عمله فورا حتى لا يختلط مع كود اخر
لذلك سنسمى الكود السابق فى المشاركة 437 بالكود القديم ,
وهذا الكود مشاركة 440 سنسميه كود جديد .

كود:
void step_Move(char step);
char i = 0 , START_flag = 0 , RELOAD_flag = 0 ;
char stepdelay = 0;
unsigned int  numbofturns = 0;

char letter_M[] = {0xfe,0xfe,0x60,0x30,0x60,0xfe,0xfe};
char letter_i[] = { 0x00,0x82,0xfe,0xfe,0x82,0x00,0x00};
char letter_c[] = { 0x38,0x7c,0xc6,0x82,0x82,0xc6,0x44};
char letter_R[] = {0x82,0xfe,0xfe,0x98,0x9c,0xf6,0x62};
char letter_O[] = {0X38,0X7C,0XC6,0X82,0XC6,0X7C,0X38};
char letter_p[] = { 0x82,0xfe,0xfe,0x92,0x90,0xf0,0x60};
char letter_Rr[] = { 0x82,0xfe,0xfe,0x98,0x9c,0xf6,0x62};

void interrup() iv IVT_ADDR_PCINT0 ics ICS_AUTO {
 PCIFR.PCIF0 = 1;
 if ((PINB & 0X02) && (START_flag == 0) ) {START_flag = 1;}
 if ((PINB & 0X02) && (START_flag == 1) ) {RELOAD_flag = 1;}
}

void step_Move(char step){
 for (i=0; i< step; i++){
     delay_us(600);       //
 }
}

void main() {
DDRD = 0XFF;
PORTD = 0;
DDRB = 0XFD;
PORTB = 2;

SREG_I_bit = 1;
PCICR |= 1<<PCIE0;
PCMSK0 |= 1<<PCINT1;
while(1){ 
 if (START_flag == 1){
          numbofturns++;
          if (numbofturns == 4 ) {   //
             numbofturns = 0;
             stepdelay++;
          }
          step_Move(stepdelay);

          for(i=0; i<7; i++){PORTD=letter_M[i]; if (RELOAD_flag == 1){ if (i==0){stepdelay=0;} PORTD = 0; break ;} delay_us(300);}
          
          if (RELOAD_flag == 1) {RELOAD_flag = 0;
                               //  if (i <= 1) {stepdelay = 0;}
                                 continue;
                                }
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_I[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_C[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

         for(i=0; i<7; i++){PORTD=letter_R[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_O[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_P[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);

          for(i=0; i<7; i++){PORTD=letter_Rr[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
          if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
          PORTD=0; delay_us(1200);
          
          START_flag = 0;

    }
 }
}
و ما توفيقى الا بالله
و لا حول و لا قوة الا بالله
اللهم صبرك و نصرك





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