色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

聚豐項(xiàng)目 > 基于IntoRobot創(chuàng)客開發(fā)板的遠(yuǎn)程云遙控小車

基于IntoRobot創(chuàng)客開發(fā)板的遠(yuǎn)程云遙控小車

基于IntoRobot創(chuàng)客開發(fā)板的遠(yuǎn)程云遙控小車,通過(guò)網(wǎng)絡(luò)遠(yuǎn)程進(jìn)行小車的遙控控制。

機(jī)器人工作者 機(jī)器人工作者

分享
3 喜歡這個(gè)項(xiàng)目
團(tuán)隊(duì)介紹

機(jī)器人工作者 機(jī)器人工作者

團(tuán)隊(duì)成員

秦嘉 創(chuàng)客

分享
項(xiàng)目簡(jiǎn)介
基于IntoRobot創(chuàng)客開發(fā)板的遠(yuǎn)程云遙控小車,通過(guò)網(wǎng)絡(luò)遠(yuǎn)程進(jìn)行小車的遙控控制。
硬件說(shuō)明

硬件準(zhǔn)備:1.小車底盤(鋁基板加四個(gè)減速電機(jī))
               
                  2.電機(jī)驅(qū)動(dòng)板(TB6612是最常用的電機(jī)驅(qū)動(dòng)模塊體積小發(fā)熱小效率高)
                                                             
                  3.電源模塊(DC-DC降壓模塊用來(lái)做5V供電電源)LM2596 DC-DC
                                          
                 4.底板(用來(lái)連接各模塊,這個(gè)底板是覆銅板自己做的,前一段時(shí)間做的用來(lái)做底板非常合適)
                                            
                5.下面這個(gè)就是今天的主角核心控制器(IntoRobot Neutron  開發(fā)板
                                          
         6.鋰電池(為整個(gè)系統(tǒng)供電)11.1V  600MAH
                                         
            7。BB響(這個(gè)可有可無(wú)因?yàn)槲业匿囯姵貞言辛吮仨殞?shí)時(shí)進(jìn)行檢測(cè)電壓保護(hù),所以接上了一個(gè)BB響提示電過(guò)低)
                                         
              8.電位器(作為本工程里面用來(lái)調(diào)節(jié)小車速度的)20K的滑動(dòng)變阻器,官方控件不能自己編輯所以調(diào)速的東西還是用硬件來(lái)實(shí)現(xiàn),畢竟速凍控制在調(diào)試的時(shí)候很重要。
                                             

軟件說(shuō)明

首先建立一個(gè)新的工程(新建工程連接WIFI等..在前幾期已經(jīng)介紹過(guò)了這里就不再一一敘述了)

在線編輯主要介紹一下帶碼,之前想用按鈕來(lái)控制前進(jìn)后退,后面發(fā)現(xiàn)自編應(yīng)用里沒(méi)用合適的控件按鈕,僅有的按鈕是單擊的不能自己復(fù)位,會(huì)出現(xiàn)一直點(diǎn)擊的情況,最后在官網(wǎng)看到有個(gè)虛擬手柄的控件是個(gè)好東西,于是就載入到應(yīng)用里面,在這個(gè)控件上走了不少?gòu)澛纷约簩懙拇a跟這個(gè)控件不能對(duì)接導(dǎo)致不能進(jìn)行遙控,后面在官網(wǎng)查詢不少資料后發(fā)現(xiàn)有個(gè)例程可以參考

下面就直接貼出我的全部代碼了:
編輯代碼前一定要添加一個(gè)按鍵解析的官方庫(kù),不然編譯會(huì)出錯(cuò)的。

/*該頭文件引用由IntoRobot自動(dòng)添加.*/
#include "WidgetJoypad/WidgetJoypad.h"

#define        A_IN0                  D0        //   A 電機(jī)驅(qū)動(dòng)IO                 電機(jī)接口
#define        A_IN1                D1       //    A 電機(jī)驅(qū)動(dòng)IO

#define        B_IN0            D3      //    B 電機(jī)驅(qū)動(dòng)IO
#define        B_IN1            D4       //   B 電機(jī)驅(qū)動(dòng)IO

#define        AB_EN                  D2       //    A B 電機(jī)使能

#define        LED                     D7                     狀態(tài)指示燈調(diào)試程序用的

const int analogInPin = A2;                    定義一個(gè)電位器的模擬量輸入接口

const int analogOutPin_A  = A0;            定義一電機(jī)速度控制的兩個(gè)PWM輸出接口
const int analogOutPin_B  = A1;

int sensorValue = 0;                                   定義模擬量輸入輸出變量
int outputValue = 0;

int outputValue_A = 0;
int outputValue_B = 0;

WidgetJoypad joypad;

void SwitchCb(void)                      按鍵解析函數(shù)的(解析收到的按鍵信號(hào)并進(jìn)行處理)
{
    if(joypad.getUpkey())                   檢測(cè)前進(jìn)按鍵
    {
        goahead();                                 小車前進(jìn)
        delay(300);                                  延時(shí)(這個(gè)是我一直困惑的問(wèn)題按道理是不用加延時(shí)的,但是實(shí)際情況不                                                                         加延時(shí)會(huì)出現(xiàn)不前進(jìn)的情況,后續(xù)還會(huì)繼續(xù)研究這個(gè)問(wèn)題,官方的例                                                                        子就是帶延時(shí)的所以先按照官方的來(lái))
    }
    else
    {
        stopm();                                        小車停止
    }

    if(joypad.getDownkey())                       后退檢測(cè)
    {
        goback();
        delay(300);
    }
    else
    {
        stopm();
    }
     if(joypad.getRightkey())                   右轉(zhuǎn)
    {
        trunright();
        delay(300);
    }
    else
    {
        stopm();
    }
     if(joypad.getLeftkey())                       左轉(zhuǎn)
    {
        trunleft();
        delay(300);
    }
    else
    {
        stopm();
    }
}

void setup()                                         初始化
{
    // put your setup code here, to run once.
        pinMode(A_IN0, OUTPUT);
        pinMode(A_IN1, OUTPUT);                               電機(jī)接口初始化
        pinMode(B_IN0, OUTPUT);
        pinMode(B_IN1, OUTPUT);
        pinMode(AB_EN, OUTPUT);
        
        pinMode(LED, OUTPUT);                                      指示燈初始化

    pinMode(analogInPin,AN_INPUT);                           模擬量輸入

        pinMode(analogOutPin_A,OUTPUT);                   PWM輸出
        pinMode(analogOutPin_B,OUTPUT);
        
   joypad.begin(SwitchCb);

}

void goahead()                                       前進(jìn)子函數(shù)
{
    digitalWrite(AB_EN, HIGH);
     digitalWrite(A_IN0, HIGH);        //燈亮
        digitalWrite(A_IN1, LOW);        //燈滅
        digitalWrite(B_IN1, HIGH);        //燈亮
        digitalWrite(B_IN0, LOW);        //燈滅
}


void goback()                                               后退子函數(shù)
{
    digitalWrite(AB_EN, HIGH);
         digitalWrite(A_IN1, HIGH);        //燈亮
        digitalWrite(A_IN0, LOW);        //燈滅
        digitalWrite(B_IN0, HIGH);        //燈亮
        digitalWrite(B_IN1, LOW);        //燈滅
}


void trunright()
{
    digitalWrite(AB_EN, HIGH);
         digitalWrite(A_IN0, HIGH);        //燈亮
        digitalWrite(A_IN1, LOW);        //燈滅
        digitalWrite(B_IN0, HIGH);        //燈亮
        digitalWrite(B_IN1, LOW);        //燈滅
}


void trunleft()
{
    digitalWrite(AB_EN, HIGH);
         digitalWrite(A_IN1, HIGH);        //燈亮
        digitalWrite(A_IN0, LOW);        //燈滅
        digitalWrite(B_IN1, HIGH);        //燈亮
        digitalWrite(B_IN0, LOW);        //燈滅
}


void stopm()
{
    digitalWrite(AB_EN, LOW);
         digitalWrite(A_IN0, LOW);        //燈亮
        digitalWrite(A_IN1, LOW);        //燈滅
        digitalWrite(B_IN1, LOW);        //燈亮
        digitalWrite(B_IN0, LOW);        //燈滅
}

void loop()
{
    sensorValue = analogRead(analogInPin);                            讀取模擬量數(shù)據(jù)

    outputValue = map(sensorValue, 0, 2047, 0, 255)/4;              數(shù)值轉(zhuǎn)換(實(shí)驗(yàn)發(fā)現(xiàn)結(jié)果除4速度比較穩(wěn)定)

    outputValue_A = outputValue;                                                
    outputValue_B = outputValue;  
    analogWrite(analogOutPin_A, outputValue);                            輸出PWM
    analogWrite(analogOutPin_B, outputValue);
}


代碼調(diào)試:

142917i2j92y2csjsy8xus.jpg

演示效果

調(diào)試完畢后將小車進(jìn)行組裝:

最后打開控制軟件進(jìn)行遙控:(可以手機(jī)電腦同時(shí)控制,由于本人條件有限使用手機(jī)錄制視屏只好用電腦進(jìn)行演示)


PS:勾選下面的按鍵控制可用電腦鍵盤進(jìn)行操作

總結(jié)一下:使用電位器可將車速控制在合適的范圍,擰動(dòng)電位器可進(jìn)行調(diào)節(jié),速度控制非常流暢,全部功能都都可以實(shí)現(xiàn),方向控制是我想說(shuō)的重點(diǎn)也是和上面延時(shí)函數(shù)可能也有關(guān)系,在控制過(guò)程中有時(shí)會(huì)出現(xiàn)動(dòng)作延時(shí)的情況,還有不能連續(xù)控制的情況,這些問(wèn)題我還在繼續(xù)研究,可能其他小伙伴已經(jīng)解決了(有的話請(qǐng)高手留言賜教非常感謝),下面我就想說(shuō)下關(guān)于控件的使用,控件的種類個(gè)人感覺還需要再增加一些,如果控件可以自己設(shè)計(jì)那就更完美了,整個(gè)開發(fā)過(guò)程相對(duì)來(lái)說(shuō)非常之快,歸功于這個(gè)開源的平臺(tái)使項(xiàng)目開發(fā)變得非常容易,如果使用傳統(tǒng)的方法以我這個(gè)菜鳥的技術(shù)不知道什么時(shí)候才能搞出來(lái)。

評(píng)論區(qū)(1 )
  • 大樹林218: 你做的云遙控小車遙控距離是多少?

    回復(fù)

主站蜘蛛池模板: 热久久免费频精品99热 | 国产成人精品电影 | 色戒无删减流畅完整版 | 国产在线精品亚洲第一区 | 综合伊人久久 | 国产精品一区第二页 | 视频一区国产精戏刘婷30 | 午夜想想爱午夜剧场 | 污污内射久久一区二区欧美日韩 | 91精品国产品国语在线不卡 | 国精产品一区一区三区有限在线 | 色偷偷777| 91国偷自产一区二区三区 | 国产成人高清在线观看播放 | 迅雷哥在线观看高清 | 果冻传媒视频在线播放 免费观看 | 久久激情网 | beeg日本老师| 久久re热线视频国产 | 吃奶啃奶玩乳漫画 | 亚洲视频免费在线观看 | 草莓AV福利网站导航 | 成人无码在线超碰视频 | 小776 论坛| 穿着丝袜被男生强行啪啪 | 亚洲精品无码成人AAA片 | 全黄h全肉细节文在线观看 全黄H全肉细节文短篇 | 丰满老熟女白浆直流 | 乱h好大噗嗤噗嗤烂了 | 三级网站视频 | 国产精品一区二区激情 | 男生互捏jiji的故事 | 免费99精品国产人妻自在线 | 超碰在线视频caoporn | 人妖欧美一区二区三区四区 | 国产1000部成人免费视频 | 亚洲精品AV一区午夜福利 | 国产亚洲精品99一区二区 | 亚洲色欲啪啪久久WWW综合网 | 国产色情短视频在线网站 | 亚洲中文字幕欧美自拍一区 |