云台控制设计
云台标识
云台的标识标明了云台接线的各接线端接通时所执行的功能。
云台接线
云台控制器
画圈标明处用来接USB转485转换器,通过转换器,将运行程序写入控制器中,控制云台工作。
每个Byte都用十六进制表示;
Synch Byte总是为0xFF;
Address为云台的本地地址(即第几个云台,如:0x02)
想要云台怎样工作,只要相应为给1就可以;
Data1和Data2为云台的转速控制位,给0为停止,数值越大,转速越快;
Check Sum为检验位,为Byte2、Byte3、Byte4、Byte5、Byte6的和。
程序例子:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>int main(void)
{int fd;fd = open("/dev/ttyUSB0", O_RDWR|O_NOCTTY|O_NONBLOCK);//要加上O_NOCTTY|O_NONBLOCK才能把串口打开if (fd < 0){perror("open");return 1;}fcntl(fd, F_SETFL, 0);//将O_NOCTTY|O_NONBLOCK标志位去掉struct termios opts;tcgetattr(fd, &opts);//获取当前端口属性选项cfsetispeed(&opts, B9600);//设置波特率 9600cfsetospeed(&opts, B9600);opts.c_cflag |= CREAD|CLOCAL;//打开接收,设置本地模式//8N1opts.c_cflag &= ~CSIZE;//清空数据位opts.c_cflag |= CS8;//设置8位数据位opts.c_cflag &= ~PARENB;//不使用奇偶校验位opts.c_cflag &= ~CSTOPB;//使用1位停止位opts.c_cflag &= ~CRTSCTS;//opts.c_cflag &= ~CNEW_RTSCTS;//不使用硬件流控opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);//使用原样输入(不经过处理)opts.c_oflag &= ~OPOST; //使用原样输出(不经过处理)tcsetattr(fd,TCSANOW , &opts);//设置端口属性选项// Synch Byte, Address, Command1, Command2, Data1, Data2, Check Sumchar cmd_left[7] = {0xff, 0x02, 0x00, 0x04, 0x01, 0x01, 0x08};//左char cmd_right[7] = {0xff, 0x02, 0x00, 0x02, 0x01, 0x01, 0x06};//右char cmd_up[7] = {0xff, 0x02, 0x00, 0x08, 0x01, 0x01, 0x0C};//上char cmd_down[7] = {0xff, 0x02, 0x00, 0x10, 0x01, 0x01, 0x14};//下char cmd_stop[7] = {0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02};//停止while(1){write(fd, cmd_up, 7);//上sleep(10);write(fd, cmd_down, 7);//下sleep(10);write(fd, cmd_left, 7);//左sleep(10);write(fd, cmd_right, 7);//右sleep(10);write(fd, cmd_stop, 7);//停止sleep(10);}return 0;
}