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

   

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



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

الحمد لله الذى بنعمته تتم الصالحات , الله المستعان ,
جرب و بانتظار الفيديو ان شاء الله
الكود 122 :
كود:
#define numletterBytes 7
void step_Move(char step);
unsigned char i = 0 ,j =0 ,k=0 , n=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};


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

void step_Move(char step){
char i;
 for (i=0; i< step; i++){
     delay_us(800);        // increase for more speed  in moving.
 }
}
char *all_letters[] = {letter_m,letter_i,letter_c,letter_r,letter_o} ;
char message[] = "ABCDE";
char divide =0;

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

SREG_I_bit = 1;
PCICR |= 1<<PCIE0;
PCMSK0 |= 1<<PCINT1;
      while(1){
              stepdelay = 0;
              START_flag = 0;
              SREG_I_bit = 1;
                  for(i=(numletterBytes * strlen(message)); i>0; i--){
                     while(1){
                       while(START_flag == 0){ }
                        SREG_I_bit = 1;
                        step_Move(stepdelay);

                          for (k=i-1 ; k<(numletterBytes * strlen(message)); k++){
                             divide = k/numletterBytes;
                             PORTD=all_letters[(message[divide] - 65)][k - divide*numletterBytes];
                            
                             if (RELOAD_flag ==1){SREG_I_bit = 0; break;}/////
                            
                             delay_us(400);
                             if (( !(k - divide)%(numletterBytes-1)) && (k % numletterBytes)){
                                   portd = 0;
                                   delay_us(1200);
                              }
                          }
                         portd = 0;
                         START_flag = 0;
                         
                         numbofturns++;
                          if (numbofturns == 3 ) {     // decrease for more speed  in writing message .
                                  numbofturns = 0;
                                    if((i-1)==0){stepdelay++;
                                              if (RELOAD_flag ==1){ RELOAD_flag = 0; START_flag = 1;}
                                              if(k==0){break;}
                                              continue;
                                     }
                                  break;
                           }
 if (RELOAD_flag ==1){ RELOAD_flag = 0; START_flag = 1;}
                           
                      }

                  }
          }
 }
الكود 123 :

كود:
#define numletterBytes 7
void step_Move(char step);
unsigned char i = 0 ,j =0 ,k=0 , n=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};


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

void step_Move(char step){
char i;
 for (i=0; i< step; i++){
     delay_us(800);        // increase for more speed  in moving.
 }
}
char *all_letters[] = {letter_m,letter_i,letter_c,letter_r,letter_o} ;
char message[] = "ABCDEABCDEABCDEABCDEABCDEABCDEABCDE";
char divide =0;

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

SREG_I_bit = 1;
PCICR |= 1<<PCIE0;
PCMSK0 |= 1<<PCINT1;
      while(1){
              stepdelay = 0;
              START_flag = 0;
              SREG_I_bit = 1;
                  for(i=(numletterBytes * strlen(message)); i>0; i--){
                     while(1){
                       while(START_flag == 0){ }
                        SREG_I_bit = 1;
                        step_Move(stepdelay);

                          for (k=i-1 ; k<(numletterBytes * strlen(message)); k++){
                             divide = k/numletterBytes;
                             PORTD=all_letters[(message[divide] - 65)][k - divide*numletterBytes];
                            
                             if (RELOAD_flag ==1){SREG_I_bit = 0; break;}/////
                            
                             delay_us(400);
                             if (( !(k - divide)%(numletterBytes-1)) && (k % numletterBytes)){
                                   portd = 0;
                                   delay_us(1200);
                              }
                          }
                         portd = 0;
                         START_flag = 0;
                         
                         numbofturns++;
                          if (numbofturns == 3 ) {     // decrease for more speed  in writing message .
                                  numbofturns = 0;
                                    if((i-1)==0){stepdelay++;
                                              if (RELOAD_flag ==1){ RELOAD_flag = 0; START_flag = 1;}
                                              if(k==0){break;}
                                              continue;
                                     }
                                  break;
                           }
                          if (RELOAD_flag ==1){ RELOAD_flag = 0; START_flag = 1;}
                           
                      }

                  }
          }
 }
اللهم صبرك و نصرك
و الله المستعان
ولا حول و لا قوة الا بالله


اعلانات

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


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

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

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


السلام عليكم اخي العزيز ،قمت بتجربة الكودين 122/123 والكود 122 اعطي نتائج مذهلة بارك الله فيك واما الكود123 فخرجت الحروف متكررة خلف بعض ولو تفضلت لي عندك طلب اخير وننهي المشروع وهو كيف بامكاني وضع فراغات بين الاحرف لاني جربت كل الطرق و. ,delay 1200. لم تغير شي اذا زادت ام نقصت والف شكر استاذي العظيم ودمت بامان الله


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


السلام عليكم اخي العزيز ،قمت بتجربة الكودين 122/123 والكود 122 اعطي نتائج مذهلة بارك الله فيك واما الكود123 فخرجت الحروف متكررة خلف بعض ولو تفضلت لي عندك طلب اخير وننهي المشروع وهو كيف بامكاني وضع فراغات بين الاحرف لاني جربت كل الطرق و. ,delay 1200. لم تغير شي اذا زادت ام نقصت والف شكر استاذي العظيم ودمت بامان الله
ما شاء الله لا قوة الا بالله , هذا من فضل ربى ليبلونى ءأشكر ام اكفر فاللهم لك الحمد و الشكر.
اولا : بخصوص الفواصل ساراجعها و ان شاء الله اعدلها .
ثانيا : محتاج جدا فيديو لل 123 لانه قيمته مهمة جدا حيث فيه افتراض ان الرسالة اطول من المسار , و المفروض ان تخرج الكلمة ان شاء الله 7 مرات وراء بعض حتى تكمل الدورة و هى ما زالت تخرج لذلك مهم ان شاء الله يكون الفيديو لدورة كاملة و بداية الثانية.
ثالثا: ان شاء الله نريد ضبط الرسالة بحيث يمكن كتابة ما نريد بطريقة طبيعية ... شكلك تعبت .




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


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

الحمد لله الذى بنعمته تتم الصالحات , الله المستعان ,
جرب و بانتظار الفيديو ان شاء الله و هذا الفيديو ان شاء الله سيغنى عن فيديو كود 123 لانه الجملة كررتها 10 مرات , طبعا ممكن تصغرها كما تحب .
الكود 124 :
كود:
#define numletterBytes 7
void step_Move(char step);
unsigned char i = 0 ,j =0 ,k=0 , n=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};



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

void step_Move(char step){
char i;
 for (i=0; i< step; i++){
     delay_us(800);        // increase for more speed  in moving.
 }
}
char *all_letters[] = {letter_m,letter_i,letter_c,letter_r,letter_o} ;
 char message[] = "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE";
char divide =0;

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

SREG_I_bit = 1;
PCICR |= 1<<PCIE0;
PCMSK0 |= 1<<PCINT1;
      while(1){
              stepdelay = 0;
              START_flag = 0;
              SREG_I_bit = 1;
                  for(i=(numletterBytes * strlen(message)); i>0; i--){
                     while(1){
                       while(START_flag == 0){ }
                        SREG_I_bit = 1;
                        step_Move(stepdelay);

                          for (k=i-1 ; k<(numletterBytes * strlen(message)); k++){
                             divide = k/numletterBytes;
                             PORTD=all_letters[(message[divide] - 65)][k - divide*numletterBytes];
                            
                             if (RELOAD_flag ==1){SREG_I_bit = 0; break;}/////
                            
                             delay_us(400);
                             if (( !((k - divide)%(numletterBytes-1))) && (k % numletterBytes)){
                                   portd = 0;
                                   delay_us(1000);
                              }
                          }
                         portd = 0;
                         START_flag = 0;
                         
                         numbofturns++;
                          if (numbofturns == 3 ) {     // decrease for more speed  in writing message .
                                  numbofturns = 0;
                                    if((i-1)==0){stepdelay++;
                                              if (RELOAD_flag ==1){ RELOAD_flag = 0; START_flag = 1;}
                                              if(k==0){break;}
                                              continue;
                                     }
                                  break;
                           }
                          if (RELOAD_flag ==1){ RELOAD_flag = 0; START_flag = 1;}
                           
                      }

                  }
          }
 }
ان شاء الله ستجد ان الفواصل ظهرت جيدا . و يمكنك تغييرها بالسطر الاحمر


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




التعديل الأخير تم بواسطة : مشتاق الله بتاريخ 18-11-2016 الساعة 05:13 PM

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


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


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


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


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


استاذي العزيز، اذا دققت بالفيديو 122 تلاحظ دقة اكثر بالحرف لاني وضعت فراغات بين الاعمدة وذلك بوضع اصفار بالكود ،فمثلا }0xfe;0x00;0xfeوهكذا وقللت من الdelay 400 وضعته 40 حتي اتحاشي موضوع تلاصق الاعمدة وتعطي انطباع اجمل
ودمت باملن الله ياطيب



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