1. 程式人生 > >智慧小車製作過程全紀錄: 六、軟體平臺--- 攝像頭雲臺控制

智慧小車製作過程全紀錄: 六、軟體平臺--- 攝像頭雲臺控制

攝像頭雲臺採用2自由度雲臺控制可以控制,淘寶很多商家都有賣,雲臺如下圖

這裡寫圖片描述

舵機控制板採用24路舵機控制板,通過串列埠傳送指令控制舵機的控制,如下圖
這裡寫圖片描述

舵機類Servo.java 封裝了舵機控制的基本屬性,可以根據屬性獲取控制的命令

package com.diego.serialcomm;

public class Servo {
    private int pos=500;
    private int servoChanel=1;
    private int durationTime=100;
    public Servo(int pos, int servoChanel, int
durationTime) { super(); this.pos = pos; this.servoChanel = servoChanel; this.durationTime = durationTime; } public int getPos() { return pos; } public void setPos(int pos) { this.pos = pos; } public int getServoChanel() { return
servoChanel; } public void setServoChanel(int servoChanel) { this.servoChanel = servoChanel; } public int getDurationTime() { return durationTime; } public void setDurationTime(int durationTime) { this.durationTime = durationTime; } public String getCMDWithTime
(){ String rts="#"; rts+=servoChanel; rts+="P"+pos+"T"+durationTime+"\r\n"; return rts; } public String GetCMDWithoutTime(){ String rts="#"; rts+=servoChanel; rts+="P"+pos+"\r\n"; return rts; } }

ServoCMD.java類,封裝了24路舵機的操作

package com.diego.serialcomm;

import java.util.ArrayList;
import java.util.List;


public class ServoCMD {

    private SerialComm servoCMDComm;
    private List<Servo> servoList=new ArrayList<Servo>();

    public void openSAC(String portName){
        servoCMDComm=new SerialComm();
        try {
            servoCMDComm.connect(portName);
            System.out.println("******the SAC "+portName+" has been opened!");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public void init(String portName,int servoCount){
        openSAC(portName);
        for(int i=1;i<=servoCount;i++){
            Servo s=new Servo(500,i,100);
            servoList.add(s);
        }
    }

    public void  servoControl(int chanel,int pos,int durationTime){
        String cmds="";
        if(chanel>servoList.size()){
            System.out.println("there is not this chanel "+chanel);
            return;
        }
        servoList.get(chanel-1).setPos(pos);
        servoList.get(chanel-1).setDurationTime(durationTime);
        cmds=servoList.get(chanel-1).getCMDWithTime();

        servoCMDComm.setMsg(cmds);
    }
    public void servo1Control(int pos,int dotime){
         servoControl(1,pos,dotime);
    }
    public void servo2Control(int pos,int dotime){
        servoControl(2,pos,dotime);
    }
    public void servo3Control(int pos,int dotime){
        servoControl(3,pos,dotime);
    }
    public void servo4Control(int pos,int dotime){
        servoControl(4,pos,dotime);
    }
    public void servo5Control(int pos,int dotime){
        servoControl(5,pos,dotime);
    }
    public void servo6Control(int pos,int dotime){
        servoControl(6,pos,dotime);
    }
    public void servo7Control(int pos,int dotime){
        servoControl(8,pos,dotime);
    }
    public void servo8Control(int pos,int dotime){
        servoControl(8,pos,dotime);
    }
    public void servo9Control(int pos,int dotime){
        servoControl(9,pos,dotime);
    }
    public void servo10Control(int pos,int dotime){
        servoControl(10,pos,dotime);
    }
    public void servo11Control(int pos,int dotime){
        servoControl(11,pos,dotime);
    }
    public void servo12Control(int pos,int dotime){
        servoControl(12,pos,dotime);
    }
    public void servo13Control(int pos,int dotime){
        servoControl(13,pos,dotime);
    }
    public void servo14Control(int pos,int dotime){
        servoControl(14,pos,dotime);
    }
    public void servo15Control(int pos,int dotime){
        servoControl(15,pos,dotime);
    }
    public void servo16Control(int pos,int dotime){
        servoControl(2,pos,dotime);
    }
    public void servo17Control(int pos,int dotime){
        servoControl(17,pos,dotime);
    }
    public void servo18Control(int pos,int dotime){
        servoControl(18,pos,dotime);
    }
    public void servo19Control(int pos,int dotime){
        servoControl(19,pos,dotime);
    }
    public void servo20Control(int pos,int dotime){
        servoControl(20,pos,dotime);
    }
    public void servo21Control(int pos,int dotime){
        servoControl(21,pos,dotime);
    }
    public void servo22Control(int pos,int dotime){
        servoControl(22,pos,dotime);
    }
    public void servo23Control(int pos,int dotime){
        servoControl(23,pos,dotime);
    }
    public void servo24Control(int pos,int dotime){
        servoControl(24,pos,dotime);
    }



    public void test(){
            try {
            servo1Control( 1500,100);
            Thread.sleep(1000);
            servo2Control( 1500,100);

                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

    }
}