ابشركم احبائي فقد نجحت الفكرة
حيث تمكن من التحكم بسرعة المحرك الخطوي ببساطة ولكن بدون مدخل انالوج وانما بواسطة مفتاحين واحد يزيد السرعة والاخر ينقصها وذلك عن طريق التحكم بالتأخير الزمني
وللعلم اخي حيدر لقد رأيت طريقة لوضع متغير في دالة الزمن ولكني لم اتمكن من فهمها جيدا ولم استخدمها حيث يجب تعريف برنامج خاص بالزمن في بداية المشروع
....وهذا كود تجربتي التي نفذتها على البروتس وانشا الله غدا بالنهار اجربها عمليا على محرك طابعة
مع العلم ان هذا الكود ينقصه الكثير فأنا اريد ان اشبكه مع كاميرا فإذا يجب ان احدد اقصى دوران له كما يجب تحديد اقصى سرعة فأتمنى ممن يمكنه مساعدتي ان لا يبخل علي وعلى المنتدى
واعذروني ان رأيتم بالكود رداءة فحقا انا مبتدء كما انني لم اعمل هليه الا لبضع
ساعات
كود:
int i,x=20;
void main() {
CMCON=0x07;
TRISA=0xff;
TRISB=0;
PORTB=0;
loop1:
while(PORTA.F0==0)
{
loop2:
if(PORTA.F1==0){x=x+5;Delay_ms(100);goto loop2; }
loop3:
if(PORTA.F2==0){x=x-5; Delay_ms(100);goto loop3;}
PORTB=0b00000001;
for(i=0;i<x;i++)delay_ms(1);
PORTB=0b00000011;
for(i=0;i<x;i++)delay_ms(1);
PORTB=0b00000010;
for(i=0;i<x;i++)delay_ms(1);
PORTB=0b00000110;
for(i=0;i<x;i++)delay_ms(1);
PORTB=0b00000100;
for(i=0;i<x;i++)delay_ms(1);
PORTB=0b00001100;
for(i=0;i<x;i++)delay_ms(1);
PORTB=0b00001000;
for(i=0;i<x;i++)delay_ms(1);
PORTB=0b00001001;
for(i=0;i<x;i++)delay_ms(1);
}
goto loop1;