2018年1月20日 星期六

Arduino (3) 4X4薄膜型鍵盤+步進馬達28BYJ-48。


接下來要玩的是用4X4薄型鍵盤控制步進馬達。

介紹一下重要模組。




步進馬達(28BYJ-48-5V)。

這馬達額定電流很高,需要外接電源,而我額外接了

5V 2A的變壓器,但記得要共地讓Offset一致。




驅動板ULN2003。

四顆LED可以大致看出馬達轉動邏輯,排PIN分別裝在處理器的四個數位

腳位。



4X4薄型鍵盤。

很薄一片,需要接8個腳位。




每個按鍵讓步進馬達轉動的幅度和方向都不一樣,

"#"字鍵我寫了正轉+反轉且幅度也不相同。


程式如下:

#include <Keypad.h>    
#include <Stepper.h>
#define STEPS 200
//宣告步進馬達步數。

Stepper stepper(STEPS, A0, A2, A1, A3);
#define KEY_ROWS 4 
#define KEY_COLS 4
char keymap[KEY_ROWS][KEY_COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte colPins[KEY_COLS] = {9, 8, 7, 6};   
byte rowPins[KEY_ROWS] = {13, 12, 11, 10}; 
Keypad myKeypad = Keypad(makeKeymap(keymap), rowPins, colPins, KEY_ROWS, KEY_COLS);
//以上都是4X4鍵盤的宣告。 

void setup(){
  Serial.begin(9600);
//序列阜9600。

  stepper.setSpeed(140);
//步進馬達的轉速。
}

void loop(){
 char key = myKeypad.getKey();
 if (key=='1'){  
    stepper.step(200);
    ;}
//按鍵盤"1",正轉200。
 if (key=='2'){  
    stepper.step(-200);
    ;}
//按鍵盤"2",反轉200。
 if (key=='3'){    
    stepper.step(800);
    ;}
 if (key=='4'){  
    stepper.step(-800);
    ;}
 if (key=='5'){  
    stepper.step(1600);
    ;}
 if (key=='6'){    
    stepper.step(-1600);
    ;}
 if (key=='#'){    
    stepper.step(500);
    delay(200);
    stepper.step(-800);
    delay(800);
    ;}
//就是按下什麼鍵就執行什麼邏輯。
}

前面已經用類比搖桿控制伺服馬達了,這篇就用鍵盤控制,也是可以用類比搖桿控制步進馬

達的。




沒有留言:

張貼留言

8051 (6) 紅外線避障模組控制LED七段顯示器。

這篇要做的Project就是感測器測到訊號時,LED七段顯示器會開始計算偵測次數, 到第5次時會讓紅色LED燈發光。 程式如下: #include <reg52.h> unsigned char seg[5]={0xf9,...