|
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <linux/types.h>
#include <linux/fb.h>
#include <stdio.h>
#include <sys/wait.h>
#include <pthread.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
#include <time.h>
#include <termios.h>
#include <sys/select.h>
#include <sys/time.h>
#include <errno.h>
int fd_track;
int fd_look;
//=======================PWM结构体================================
typedef struct PwmModel {
int speed_L; // LEFT speed
int speed_R;
char dir_L; //1: resver 0: forward
char dir_R;
//int pwm_fd;
} PWMMODEL;
PWMMODEL motor={0,0,0,0};
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//-----------------------------PWM driver motor------------------------------------
/*========================================================
设置电机速度-249~249,正数表示前进,负数表示后退
=========================================================*/
void setSpeed(int onL,int onR)
{
motor.speed_R=onL;
motor.speed_L=onR;
unsigned char pwm_cmd[4];
if(motor.speed_R>=0){
motor.dir_R=0;
motor.speed_R = motor.speed_R>249?249:motor.speed_R;
}else{
motor.dir_R=1;
motor.speed_R=250-(-motor.speed_R);
motor.speed_R = motor.speed_R>249?249:motor.speed_R;
}
if(motor.speed_L>=0){
motor.dir_L=0;
motor.speed_L = motor.speed_L>249?249:motor.speed_L;
}else{
motor.dir_L=1;
motor.speed_L=250-(-motor.speed_L);
motor.speed_L = motor.speed_L>249?249:motor.speed_L;
}
pwm_cmd[0]=motor.speed_R;
pwm_cmd[1]=motor.speed_L;
pwm_cmd[2]=motor.dir_R;
pwm_cmd[3]=motor.dir_L;
ioctl(fd_track,sizeof(pwm_cmd),pwm_cmd);
}
int main()
{
printf("\n-----This is a test about MoonCar! ------\n\n");
/**********打开探月车控制驱动****************/
if((fd_track=open("/dev/Car_Control",O_RDWR))<0)
{
printf("no open device");
}else{
printf("Car_Control loaded!\n");
}
printf("Mooncar is running!\n");
setSpeed(200,200);
sleep(3);
setSpeed(-150,150);
sleep(3);
setSpeed(150,-150);
sleep(3);
setSpeed(-200,-200);
sleep(3);
setSpeed(0,0);
sleep(3);
setSpeed(200,100);
sleep(3);
setSpeed(-200,-100);
sleep(3);
setSpeed(100,200);
sleep(3);
setSpeed(-100,-200);
sleep(3);
}
}
close(fd_track);
return 0;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|