Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 8766|回復: 21
打印 上一主題 下一主題

要如何讓馬達動呢?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-5-16 12:16:10 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
目前可以開始寫程式了,但是要如何讓馬達動呢?
我裝了一個servo在第0個位置,然後寫了下面的code
但看了文件,好像還不會讓它動起來~~~
請問有人可以教一下嗎?
謝謝

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "userio.h"
#include "demofile.h"
#include <roboard.h>

int main(int argc, char* argv[])
{
    //初始化
    if (rcservo_Initialize(RCSERVO_USECHANNEL0) == true)
{
  showmsg("...success\n");
  //設定servo no feedback
  rcservo_SetServo(RCSERVO_USECHANNEL0, RCSERVO_SERVO_DEFAULT_NOFB);

  //關閉servo lib
  rcservo_Close();
        showmsg("press any key to ending \n");
  keyboard_waitkey();
  return 1;
}


}
22#
發表於 2010-5-20 16:13:06 | 只看該作者
天啊...風扇, 哈哈.....

roboard的特異功能還多著哩
DMP這家公司就專搞嵌入系統的
就是專門應用在一些奇怪的應用領域的啊
寫好的程式要run就是丟到啟動或是弄成service而已

但是不接VGA卡 , 其實對省電來講幫助不大...
我主要是看中他不接以後, 板子的體積會變小
21#
 樓主| 發表於 2010-5-20 07:04:03 | 只看該作者
原來要貼散熱片呀~~~好幾次都覺得爆熱的,都用大台電風扇直接吹,還好沒熱掉。

不用插卡也可以開喔??那如果寫好的程式要run
也可以自動執行嗎?
20#
發表於 2010-5-19 23:46:01 | 只看該作者
散熱片我就是去買電腦專門貼在RAM上面那種小片的而已
只要有貼就好
不用管是不是很大片
但要小心旁邊的零件比晶片高了一點點
散熱片貼的時候小心不要碰到

耗電的問題
板子: 5V*400mA 約是2W
VGA: 5V * 80mA =0.4W
其實...一顆SERVO就超過他了, 何況你一台機器人裝了十多顆SERVO, 所以其實還好,
而且硬要省電可以連VGA卡都拔掉不用裝, 一樣可以用
19#
 樓主| 發表於 2010-5-19 22:28:23 | 只看該作者
= = 果然可以動了~~~~~感謝樓上諸位大大~~~
18#
 樓主| 發表於 2010-5-19 15:50:12 | 只看該作者
對呀,我的vga很熱~~~~~不知要貼哪一種的~~~~~還有
roboard好像會很耗電。我的2400mAh的很快就沒電了
17#
發表於 2010-5-19 13:56:04 | 只看該作者
忽然發現你的VGA沒有貼散熱片喔...
快去貼一片吧
這樣用還滿危險
16#
發表於 2010-5-19 13:55:20 | 只看該作者
哈哈哈....我昨天講的位置你沒仔細看喔
果然有圖有真相
真的是接錯
其實板上就有標示, 仔細看清楚喔
15#
 樓主| 發表於 2010-5-19 10:32:44 | 只看該作者
原來0 和 1 是與 其他14個是分開的喔~~~~,害我一直以為那個就是第1個~~~
晚上再來試試~~~謝謝喔
14#
發表於 2010-5-19 10:03:12 | 只看該作者
HI~
圖中你的馬達接到channel 2了(S3)
請換到channel 0和1應該就可以了
另一種方法,你將程式中的channel改為channel 2也可以:)
13#
 樓主| 發表於 2010-5-19 08:44:12 | 只看該作者
我是接6V的電池(右邊供電),左邊(黑紅白)就是馬達(Futaba 3003) ,但是都沒反應





12#
發表於 2010-5-19 08:06:34 | 只看該作者
S1 = channel 0
你再確認一下你有沒有接錯吧
還是你照起來 這樣也許快一點
11#
發表於 2010-5-19 01:01:08 | 只看該作者
聽起來就超怪
應該要會動了哩

板子電壓給多少?
10#
 樓主| 發表於 2010-5-19 00:42:28 | 只看該作者
看起來我接的PWM位置沒錯,但是還是沒有動起來~~~~
還有沒有什麼可能??
9#
發表於 2010-5-18 23:30:47 | 只看該作者
http://www.roboard.com/Files/RB-100/RoBoard_RB-100_v2r0A.pdf
第七頁
S1從SPI右邊那個開始往"上"算
USB右邊那個是S16
板子上面也有標示喔
8#
 樓主| 發表於 2010-5-18 23:01:17 | 只看該作者
回復 4# acen2008


    我將你的code整個貼上,然後執行,還是沒有反應~~~~~
另外偷偷問一下, pwm第一個是哪一邊呀??看了文件好像沒有說得很清楚`~~
7#
發表於 2010-5-18 17:39:03 | 只看該作者
com 1...那是要外接吧
我是說板子上的部份耶
外接等於是要多少都有了啊
像我用com接出來...上百顆都能接了---> 應用在遊樂場的跑馬台
6#
 樓主| 發表於 2010-5-18 16:46:01 | 只看該作者
原廠文件有說
可使用 25~32 pwm -> 利用com1來改
5#
發表於 2010-5-18 16:21:57 | 只看該作者
HI~
rcservo_SendPWMPulses和rcservo_SetServo是設定單一channel的函數
所以channel參數只能輸入0、1、2、 ...
acen2008 發表於 2010-5-18 13:41

咦?! 請教一下喔
Roboard不就24組PWM而已嗎?
為何會說要設定到24以上還需要另外的花樣?
哪來的24以上?
4#
發表於 2010-5-18 13:41:31 | 只看該作者
本帖最後由 acen2008 於 2010-5-18 14:21 編輯

HI~
rcservo_SendPWMPulses和rcservo_SetServo是設定單一channel的函數
所以channel參數只能輸入0、1、2、3...、23喔 (要使用到23以上要小改一下RoBoard)
而rcservo_Initialize()中的channel是可設定為複數的,假如你要使用channel 0、1、4
輸出PWM,則channel = RCSERVO_USECHANNEL0 + RCSERVO_USECHANNEL1 +
RCSERVO_USECHANNEL4,假如只要用到channel 1的話,
channel = RCSERVO_USECHANNEL1 就可以了。

下面的code是我測過可動的,不妨參考一下:)

#include <stdio.h>
#include <conio.h>
#include <roboard.h>

int main(void)
{
        //使用的Library是V1.6版要呼叫roboio_SetRBVer(),不是則不用
        //使用的硬體是RB100,輸入參數=RB_100,使用RB110,輸入參數=RB_110
        //Note : RB110只有16組PWM
        roboio_SetRBVer(RB_100);
       
        //rcservo_SetServo是設定單一channel的函數,channel = 0 ~ 23
        //必須在rcservo_Initialize之前呼叫
        rcservo_SetServo(0, RCSERVO_SERVO_DEFAULT_NOFB);
        rcservo_SetServo(1, RCSERVO_SERVO_DEFAULT_NOFB);

        //初始化:把Channel 0和1切換成PWM輸出,其他channel為GPIO
        if(rcservo_Initialize(RCSERVO_USECHANNEL0 +
                                       RCSERVO_USECHANNEL1) == false)
        {
                //初始化失敗則印出錯誤訊息
                printf("%s",roboio_GetErrMsg());
                rcservo_Close();
                return -1;
        }

        //進入PWM Mode
        rcservo_EnterPWMMode();
       
        //將period = 10000us,duty = 1500us,count = 50 次的PWM從channel 0 輸出
        //將period = 10000us,duty = 1700us,count = 10 次的PWM從channel 1 輸出
        //rcservo_SendPWMPulses是設定單一channel的函數,channel = 0 ~ 23
        rcservo_SendPWMPulses(0,10000L,1500L,50L);
        rcservo_SendPWMPulses(1,10000L,1700L,10L);

        printf("Send PWM pulse.\n");

        //等channel 0 的PWM送完
        while (rcservo_IsPWMCompleted(0) == false);

        //結束程式
        rcservo_Close();
        return 0;
}
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-5 06:54 , Processed in 0.268466 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表