بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
فتح الله عليك ما لاحظته و ما غيرته بفضل الله نبهنى لتغيير جزء , عذرا ليس عندى مشروع لاجربه .
توكل على الحى الذى لا يموت و جرب :
يمكنك تغيير قيمة الرقم الموجود بالسطر الاحمر بالزيادة و النقصان
كود:
char i = 0 ;
char stepdelay = 0;
unsigned int numbofturns = 0;
void step_Move(char step){
for (i=0; i< step; i++){
delay_us(300); // غير هذه القيمة لتغيير المسافة التى يتحركها الحرف ان شاء الله
}
}
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 main() {
DDRD = 0XFF;
PORTD = 0;
DDRB = 0XFD;
PORTB = 2;
while(1){
while(PINB & 0x02){}
numbofturns++;
if (numbofturns > 10) { // غير هذه القيمة لتغيير الزمن بين الحركات
numbofturns = 0;
stepdelay++;
}
step_Move(stepdelay);
for(i=0; i<7; i++){PORTD=letter_M[i]; delay_us(300);}
PORTD=0; delay_us(1200);
for(i=0; i<7; i++){PORTD=letter_i[i]; delay_us(300);}
PORTD=0; delay_us(1200);
for(i=0; i<7; i++){PORTD=letter_c[i]; delay_us(300);}
PORTD=0; delay_us(1200);
for(i=0;i<7;i++){PORTD=letter_R[i]; delay_us(300);}
PORTD=0; delay_us(1200);
for(i=0;i<7;i++){PORTD=letter_O [i]; delay_us(300);}
PORTD=0; delay_us(1200);
for(i=0;i<7;i++){PORTD=letter_P[i]; delay_us(300);}
PORTD=0; delay_us(1200);
for(i=0;i<7;i++){PORTD=letter_Rr[i]; delay_us(300);}
PORTD=0;
}
}
اذا حدث ومضات فى الدورة الثانية , فارجو ان تحسب زمن الدورة الواحدة , او عدد الاعمدة فيها .
و اذا عدلت قيم الاسطر بالاحمر ارجو ان ترسل لى قيم التعديل المناسبة .
و ما توفيقى الا بالله
و لا حول و لا قوة الا بالله