接下來要玩的是用4X4薄型鍵盤控制步進馬達。
介紹一下重要模組。
步進馬達(28BYJ-48-5V)。
這馬達額定電流很高,需要外接電源,而我額外接了
5V 2A的變壓器,但記得要共地讓Offset一致。
驅動板ULN2003。
四顆LED可以大致看出馬達轉動邏輯,排PIN分別裝在處理器的四個數位
腳位。
4X4薄型鍵盤。
每個按鍵讓步進馬達轉動的幅度和方向都不一樣,
"#"字鍵我寫了正轉+反轉且幅度也不相同。
程式如下:
#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);
;}
//就是按下什麼鍵就執行什麼邏輯。
}
前面已經用類比搖桿控制伺服馬達了,這篇就用鍵盤控制,也是可以用類比搖桿控制步進馬
達的。
沒有留言:
張貼留言