用
NodeMCU
來控制馬達電機做個履帶機器人是最近想要做的項目,雖然是很普通
的項目,但是加上攝像
與顯示屏
還有一些sensors
應該是個很好的運動平台。
看上這片L293D擴展板是因為可以直接用NodeMCU,而且把全部的
但是~~收到這板子,要命了。。。。這擴展板的footprint尺寸與手上的NodeMCU不適配,手上的NodeMCU比較寬將近2mm。也因為這樣,這片擴展板就被擺在桌角。
I/O
都外接與Vcc
、Ground
規劃在一起,是個不錯的多功能的擴展板。但是~~收到這板子,要命了。。。。這擴展板的footprint尺寸與手上的NodeMCU不適配,手上的NodeMCU比較寬將近2mm。也因為這樣,這片擴展板就被擺在桌角。
今天剛好瞄到,拿到手上把玩了一下,突然靈光一現,用排針座!!!
是的,
立馬用烙鐵焊上,大小通吃!!
是的,
90°排針座
的尺寸剛剛好,太棒了~~~立馬用烙鐵焊上,大小通吃!!
既然接上了,那就繼續把這擴展板徹底研究清楚。
找遍x寶都找不到這片擴展板的原理圖,只好用
下圖就是示意圖。
找遍x寶都找不到這片擴展板的原理圖,只好用
萬用電錶
一條條量測,還好沒很多條。下圖就是示意圖。
《L293D接腳與擴展版圖》
測試工具與設備
NodeMCU x1
L293D Motor Shield board 電機擴展板 x1
5-12v電機馬達
萬用電錶 x1
電源供應器 x1
L293D Motor Shield board 電機擴展板 x1
5-12v電機馬達
萬用電錶 x1
電源供應器 x1
測試code
/*
* RegisHsu 2018-04-22
* The L293D motor shield board for NodeMCU
* Enable 1-2: nodemcu pin 1
* Enable 3-4: pin 2
* 1A: pin 3
* 2A: internal control
* 3A: pin 4
* 4A: internal xontrol
*/
#define __NODEMCU__
#ifdef __NODEMCU__
// NodeMCU與ESP8266 pin對照表
// These are the pins for all ESP8266 boards
// Name GPIO Function
#define PIN_D0 16 // WAKE
#define PIN_D1 5 // User purpose
#define PIN_D2 4 // User purpose
#define PIN_D3 0 // FLASH mode at boot time
#define PIN_D4 2 // TXD1 (Note: low on boot means go to FLASH mode)
#define PIN_D5 14 // HSCLK
#define PIN_D6 12 // HMISO
#define PIN_D7 13 // HMOSI RXD2
#define PIN_D8 15 // HCS TXD0
#define PIN_D9 3 // RXD0
#define PIN_D10 1 // TXD0
#define E1 PIN_D1 // Enable Pin for motor 1, every pin can be PWM in ESP8266
#define E2 PIN_D2 // Enable Pin for motor 2
#define I1 PIN_D3 // Control pin 1 for motor 1
#define I3 PIN_D4 // Control pin 1 for motor 2
#else
// Name GPIO Function
#define PIN_D0 0
#define PIN_D1 1
#define PIN_D2 2
#define PIN_D3 3
#define PIN_D4 4
#define PIN_D5 5
#define PIN_D6 6
#define PIN_D7 7
#define PIN_D8 8
#define PIN_D9 9
#define PIN_D10 10
#define E1 PIN_D8 // Enable Pin for motor 1
#define E2 PIN_D9 // Enable Pin for motor 2
#define I1 PIN_D3 // Control pin 1 for motor 1
#define I3 PIN_D4 // Control pin 1 for motor 2
#endif
void setup()
{
Serial.begin(115200);
pinMode(E1, OUTPUT);
pinMode(E2, OUTPUT);
pinMode(I1, OUTPUT);
pinMode(I3, OUTPUT);
Serial.println("Setup already...");
}
void L_Wheel(int sp, bool s1, bool s2)
{
analogWrite(E2, sp); // Enable as speed
digitalWrite(I3, s1);
}
void R_Wheel(int sp, bool s1, bool s2)
{
analogWrite(E1, sp); // Enable as speed
digitalWrite(I1, s1);
}
int spd = 1020;
void loop()
{
Serial.print("SPD=");
Serial.println(spd);
//FF
Serial.println("FF...");
L_Wheel(spd, HIGH, LOW);
R_Wheel(spd, HIGH, LOW);
delay(2000);
L_Wheel(0, LOW, LOW);
R_Wheel(0, LOW, LOW);
delay(2000);
//RR
Serial.println("RR...");
L_Wheel(spd, LOW, HIGH);
R_Wheel(spd, LOW, HIGH);
delay(2000);
L_Wheel(0, LOW, LOW);
R_Wheel(0, LOW, LOW);
delay(2000);
//FR
Serial.println("FR...");
L_Wheel(spd, HIGH, LOW);
R_Wheel(spd, LOW, HIGH);
delay(2000);
L_Wheel(0, LOW, LOW);
R_Wheel(0, LOW, LOW);
delay(2000);
//RF
Serial.println("RF...");
L_Wheel(spd, LOW, HIGH);
R_Wheel(spd, HIGH, LOW);
delay(2000);
L_Wheel(0, LOW, LOW);
R_Wheel(0, LOW, LOW);
delay(2000);
spd = spd - 100;
if (spd < 200)
spd = 1020;
}
想請教你這段程式碼在什麼情況下會被用到?
回覆刪除初學者 不太了解 謝謝您
#else
// Name GPIO Function
#define PIN_D0 0
#define PIN_D1 1
#define PIN_D2 2
#define PIN_D3 3
#define PIN_D4 4
#define PIN_D5 5
#define PIN_D6 6
#define PIN_D7 7
#define PIN_D8 8
#define PIN_D9 9
#define PIN_D10 10
#define E1 PIN_D8 // Enable Pin for motor 1
#define E2 PIN_D9 // Enable Pin for motor 2
#define I1 PIN_D3 // Control pin 1 for motor 1
#define I3 PIN_D4 // Control pin 1 for motor 2
#endif