NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2901 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 1 از 1

موضوع: استپر موتور

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض استپر موتور

    سلام دوستان . من یه کد دارم برای استپر موتور(خودم ننوشتم از کسی گرفتم قبلا که الان دسترسی بهشون ندارم) بعضی قسمتاشو متوجه نمشم میشه کمکم کنید.
    1- nt چیه ؟
    2- اون تیکه اخر که میاد جهت رو مشخص میکنه این قسمتشو نمیفهمم.
    کد:
        if (stepMotor == 0x20) stepMotor = 0x2;                }
                    else
                    {
                        stepMotor = stepMotor >> 1;
                        if (stepMotor == 0x1) stepMotor = 0x10;
                    }
    3- آیا کتابخانه کیبورد قابلیت دریافت عدد دورقمی رو داره ؟
    کد:
    #include "lpc17xx.h"#include "ARM_delay.h"
    #include "ARM_keypad.h"
    
    
    
    
    /*--------------------------------------------------*/
    /* Char LCD definition */
    #define LCD_LPC1768       
    #define LCD_PORT_0
    #define LCD_RS     8
    #define LCD_RW     9    
    #define LCD_E      10
    #define LCD_DB4    11
    #define LCD_DB5    15
    #define LCD_DB6    16
    #define LCD_DB7    17
    
    
    #include "lcd.h"
    
    
    
    
    
    
    
    
    
    
    /*------------------------------------------------------*/
    
    
    // char ch1[] = { 'S', 'h', 'a', 'h', 'e', 'd', 'U', 'n', 'i', 'v', 'e', 'r', 's', 'i', 't', 'y' };
    // char ch2[] = { 'M', 'i', 'c', 'r', 'o', 'p', 'r', 'o', 'c', 'e', 's', 's', 'o', 'r', 'l', 'a', 'b', ' ', 'm', 'a', 'n', 'u', 'a', 'l' };
    // char ch3[] = { '2', '0', '1', '6', '-', 'a', 'p', 'r', 'i', 'l', '-', '1', '0' };
    char s[16];
    int  speed,ENTERflag=0, dir, i, stepMotor, k,nt=0;
    
    
    int main(){
        lcd_init();
        lcd_clear();
        LPC_GPIO0->FIODIR |= 0xFFF;
    
    
    
    
    
    
            speed = 0;
            dir = 0x2;
            stepMotor = 0x100;
            i = 0;
            while (1){
    
    
                    sprintf(s,"nt:          ");
                lcd_gotoxy(1, 1);    
    
    
                lcd_putsf(s);
                
                while ((ENTERflag!=1) || (nt == 0))//e:enter  s:set  r:reset  o:stop  a:start  m:mode
                {
                    i = keypad();
                    if(i=='e')
                     ENTERflag=1;
                    if((i!=20)&&(i<10))
                    nt = i + (nt*10);
                    if (i == 'r')
                        nt = 0;
                        lcd_gotoxy(2,1);
                        sprintf(s, "nt= %d       ", nt);
                        lcd_putsf(s);
    
    
                        while (keypad() != 20);
                    
                }
                nt=nt*22;
                ENTERflag=0;
                lcd_clear();
                        sprintf(s,"speed 1,2,3 :          ");
                lcd_gotoxy(1, 1);    
                lcd_putsf(s);
                
                while ((ENTERflag!=1) || (speed == 0))//e:enter  s:set  r:reset  o:stop  a:start  m:mode
                {
                    i = keypad();
                    if(i=='e')
                     ENTERflag=1;
                    if((i!=20)&&(i<4))
                    speed = i;
                    if (i == 'r')
                        speed = 0;
                    if ((speed == 1) || (speed == 2) || (speed == 3) || (speed == 0))
                    {
                        lcd_gotoxy(2,1);
                        sprintf(s, "speed= %d       ", speed);
    //                     for (k = 0; k < 16; k++)
    //                     {
    //                         lcd_putchar(s[k]);
    //                         delay_m(100);
    //                     }
                        lcd_putsf(s);
    
    
                        while (keypad() != 20);
                    }
                }
          ENTERflag=0;
                lcd_clear();
                lcd_gotoxy(1, 1);
    
    
                while (keypad() == 'e');
    
    
    
    
                sprintf(s, "DIRECTION 1,2            ");
    //             for (k = 0; k < 16; k++)
    //             {
    //                 lcd_putchar(s[k]);
    //                 delay_m(100);
    //             }
                lcd_putsf(s);
    
    
                while ((ENTERflag!=1) ||(dir == 0))
                {
                    i = keypad();
                    if(i=='e')
                     ENTERflag=1;
                    if((i!=20)&&(i<3))
                    dir = i;
                    if (i == 'r')
                        dir = 0;
                    if ((dir == 1) || (dir == 2)|| (dir == 0))
                    {
                        lcd_gotoxy(2, 1);
                        sprintf(s, "dir=%d       ", dir);
    //                     for (k = 0; k < 16; k++)
    //                     {
    //                         lcd_putchar(s[k]);
    //                         delay_m(100);
    //                     }
                        lcd_putsf(s);
    
    
                        while (keypad() != 20);
                    }
                }
                    lcd_clear();
                lcd_gotoxy(2, 1);
                sprintf(s, "start...      ");
    
    
                        lcd_putsf(s);
            ENTERflag=0;
                while (keypad() == 'e');
    
    
                LPC_GPIO0->FIOSET = 0xff;
                while ((keypad() != 'o')&&(nt!=0))
                {
                    if (dir == 1)
                    {
                        stepMotor = stepMotor << 1;
                        if (stepMotor == 0x20) stepMotor = 0x2;
                    }
                    else
                    {
                        stepMotor = stepMotor >> 1;
                        if (stepMotor == 0x1) stepMotor = 0x10;
                    }
    LPC_GPIO0->FIOCLR = stepMotor;
                    
                    delay_m((speed * 250));
                    LPC_GPIO0->FIOSET = stepMotor;
    nt=nt-1;
                }
                speed = 0;
                lcd_clear();
            }
            ///////////////////////////////////////////    
    
    
        //}
    }
    کتابخانه کی پد
    کد:
    #ifndef __ARM_keypad_h#define __ARM_keypad_h
    /* row & column for keypad */
    #define row1 0
    #define row2 1
    #define row3 2
    #define row4 3
    #define Column1 4
    #define Column2 5
    #define Column3 6
    #define Column4 7
    #define keypad_DPIO LPC_GPIO2
    /* code for kaypad */
    //const unsigned char keypad_codes[4][4] = { { 1, 2, 3, 10 }, { 4, 5, 6, 11 }, { 7, 8, 9, 12 }, { 13, 0, 14, 15 } };
    //const unsigned char keypad_codes[4][4] = { { 1, 2, 3, 's' }, { 4, 5, 6, 'r' }, { 7, 8, 9, 'm'}, { 'o', 0, 'a', 'e' } };
    //const unsigned char keypad_codes[4][4] = { { 7, 8 ,9 ,'/'}, { 4, 5, 6, '*'}, { 1, 2, 3, '-'}, {'c', 0, '=','+'} };
    void keypad_init(void){
    	keypad_DPIO->FIODIR = (1 << row1) | (1 << row2) | (1 << row3) | (1 << row4); //set row to output
    	keypad_DPIO->FIODIR &= ~((1 << Column1) | (1 << Column2) | (1 << Column3) | (1 << Column4)); //set columns to input
    
    
    }
    /* priori keypad function */
    // int keypad1(void)
    // {
    // 	int row, num_keypad;
    // 	unsigned int data;
    // 	keypad_init();
    // 	for (row = 0; row < 4; row++)
    // 	{
    // 		keypad_DPIO->FIOSET = (1 << row1) | (1 << row2) | (1 << row3) | (1 << row4);
    // 		keypad_DPIO->FIOCLR = (1 << (row1 + row)); //row
    // 		delay_m(100);
    // 		data = ((keypad_DPIO->FIOPIN) >> Column1) & 0xf;
    // 		if (data == 0xf){ // 1111
    // 			num_keypad = 20;
    // 		}
    // 		if (data == 0xe){ //1110 1 ; 4 ; 7 ; 13
    // 			num_keypad = keypad_codes[row][0]; break;
    // 		}
    // 		if (data == 0xd){ //1101 2 ; 5 ; 8 ; 0
    // 			num_keypad = keypad_codes[row][1]; break;
    // 		}
    // 		if (data == 0xb){ // 1011 3 ; 6 ; 9 ; 14
    // 			num_keypad = keypad_codes[row][2]; break;
    // 		}
    // 		if (data == 0x7){ // 0111 10 ; 11 ; 12 ; 15
    // 			num_keypad = keypad_codes[row][3]; break;
    // 		}
    // 	}
    // 	return num_keypad;
    // }
    
    
    
    
    
    
    ///////////////////////////////////////
    int keypad1(void){
    	
    	
    	char keyCodes[16]={1,2,3,'s',4,5,6,'r',7,8,9,'m','o',0,'a','e'};
    	int i,j;
    	keypad_init();
    	for(i=0;i<4;i++){
    		keypad_DPIO->FIOSET=0XF<< row1;
    		keypad_DPIO->FIOCLR=1<<( row1 +i);
    		delay_m(200);
    		if(((keypad_DPIO->FIOPIN)&(0XF<< Column1 ))!=(0XF<< Column1)){
    			for(j=0;j<4;j++){
    				if(((keypad_DPIO->FIOPIN)&(1<< (Column1 + j)))!=(1<< (Column1 +j))){
    					return keyCodes[(i*4+j)];
    				}
    			}	
    		}
    	}
    		return 20;
    }

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

موضوعات مشابه

  1. مشکل در راه اندازی استپر موتور
    توسط majid97 در انجمن سیستم های قدرت ، تاسیسات
    پاسخ: 2
    آخرين نوشته: 20-09-2016, 20:23
  2. درایو استپرموتور
    توسط mahdi1377 در انجمن موتورها و درایوها
    پاسخ: 12
    آخرين نوشته: 16-04-2014, 14:08
  3. استپر موتور 18 درجه ، داریم اصلا؟
    توسط morteza_rk در انجمن را اندازی امکانات جانبی عمومی
    پاسخ: 10
    آخرين نوشته: 23-11-2012, 16:33
  4. یک سوال از استپر موتور
    توسط masoodhashemy در انجمن موتورها و درایوها
    پاسخ: 5
    آخرين نوشته: 11-03-2010, 14:26
  5. نیاز به راهنمائی دارم در مورده مدار درایو استپر موتور
    توسط omid_king در انجمن سنسور و ماژول های اندازه گیری
    پاسخ: 13
    آخرين نوشته: 14-08-2009, 14:14

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •