Robofun 機器人論壇

標題: 有關PWM11接腳 [打印本頁]

作者: blessedlife    時間: 2011-7-18 14:45
標題: 有關PWM11接腳
看到一個範例




我的板子已有L293B 這樣地11接腳怎辦?
程式碼會有什麼差異?
作者: sinocgt    時間: 2011-7-19 08:47
不是很懂你的意思! 你是用甚麼板子要驅動馬達? 可以說明一下嗎?
作者: GCY    時間: 2011-7-19 09:12
你的enablePin要設為HIGH
作者: blessedlife    時間: 2011-7-19 11:34
本帖最後由 blessedlife 於 2011-7-19 11:35 編輯

回復 2# sinocgt

我所用的是Arduino Duemilanove 328

內建已有L293B
作者: blessedlife    時間: 2011-7-19 11:44
回復 3# GCY


   您的意思是   int enablePin = 11 改成 int enablePin = HIGH
   這樣就好了嗎?
   下面的
   analogWrite(enablePin, resistorValue/4) 不用改嗎?
作者: sinocgt    時間: 2011-7-19 13:05
你那台車子應該就內建有Atmega328P MCU,要讓它可以動,應該不需要另一塊Arduino板子. 我想你可能只需要4根pin(pin 5,6,7,8)就可以驅動它(兩根PWM(控制轉速如Pin5,6),兩根Digital(控制方向如pin 7,8)),當然馬達應須外加電源.很簡單就可以驅動.
作者: sinocgt    時間: 2011-7-19 13:23
我剛才看了一下那台車的電路圖,沒錯,跟我想的一樣,它利用NAND邏輯閘來控制轉向,所以可以省一根pin腳,兩顆馬達就可以省兩根pin腳.所以pin 5,6,7 和 8就夠用.
作者: blessedlife    時間: 2011-7-19 13:31
回復 7# sinocgt


   所以不用接第11接腳   但要如何控PWM呢?
作者: sinocgt    時間: 2011-7-19 13:41
不用接線5,6,7,8已經內設好了,只要寫程式就可以了. 程式 enablePin 改成 5,  motor1pin改成7. 另一顆馬達改成 6 跟 8,剛好四根pin.
作者: blessedlife    時間: 2011-7-19 16:10
本帖最後由 blessedlife 於 2011-7-19 17:23 編輯

回復 9# sinocgt
我把程式碼改成如下但直流馬達不會受可變電阻控制
但可以顯示可變電阻的值
請問這有什麼問題嗎?
int E1 = 7; // 數位腳7 接1A 接腳int M1 = 5; // 數位腳5 接2A 接腳
int enablePin = 6; // PWM 接腳11 接EN 接腳
int resistorPin = 0; // 可變電阻產生的電壓變化接類比輸入腳位0
int resistorValue = 0; //宣告resistorValue,初始值0
void setup() {
int i;
for(i=5;i<=8;i++)
pinMode(i, OUTPUT);
Serial.begin(9600);
}
void loop() {
//讀取A0 腳位,並存在resistorValue 變數中
resistorValue = analogRead(resistorPin);
//對P11 腳位作PWM 輸出,輸出值為resistorValue/4
Serial.println(resistorValue);
delay(1000);
analogWrite(enablePin, resistorValue/4);
digitalWrite(E1, LOW); // 給H 橋接腳1 A,LOW
digitalWrite(M1, HIGH); // 給H 橋接腳2A,HIGH
}
作者: sinocgt    時間: 2011-7-19 18:17
Arduino analogRead 是 10bits精度,要稍做轉換, 請看一下  arduino samples : Analog>AnalogInOutSerial 的例子.




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2