前几天,我写了几个头文件,觉得它们用起来实在是太方便了,现在就来分享一下。
头文件一:CYSAC.h,此头文件包含cysans()函数,可以只输入洛谷的题目编号,便帮你解决问题,输出答案。
头文件二:CYSLC.h,此头文件包含0~9 10个数字,可以方便地控制树莓派小车走出洛谷题的答案。
那现在可不可以将两个头文件综合一下呢?应该是可以的。考虑树莓派智能小车的SD卡大小,建议使用16GB,这样系统占了7.几G后还有足够的空间去存题库。考虑到系统上和语言上的差别,暂时作者便不同时使用两个头文件了。
现CYSAC.h的代码基本如下:
#ifndef __CYSAC_H__
#define __CYSAC_H__
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void cysans(char *str)
{
int c=sizeof(str);
int i=0;
char cc[100];
for(i=0;i<c;i++)
{
cc[i]=str[i];
}
cc[c]='.';
cc[c+1]='e';
cc[c+2]='x';
cc[c+3]='e';
system(str);
system("pause");
return;
}
#endif
现CYSLC.h的代码基本如下:
#ifndef __CYSLC_H__
#define __CYSLC_H__
#include <stdio.h>
#include <stdlib.h>
#include <softPwm.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <time.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <wiringPi.h>
#define Trig 28
#define Echo 29
#define LEFT 11
#define RIGHT 10
#define BUFSIZE 512
#define MOTOR_GO_FORWARD digitalWrite(28,HIGH);digitalWrite(29,LOW);digitalWrite(24,HIGH);digitalWrite(25,LOW)
#define MOTOR_GO_BACK digitalWrite(29,HIGH);digitalWrite(28,LOW);digitalWrite(25,HIGH);digitalWrite(24,LOW)
#define MOTOR_GO_RIGHT digitalWrite(28,HIGH);digitalWrite(29,LOW);digitalWrite(25,HIGH);digitalWrite(24,LOW)
#define MOTOR_GO_LEFT digitalWrite(29,HIGH);digitalWrite(28,LOW);digitalWrite(24,HIGH);digitalWrite(25,LOW)
#define MOTOR_GO_STOP digitalWrite(28, LOW);digitalWrite(29,LOW);digitalWrite(24, LOW);digitalWrite(25,LOW)
void run() // 前进
{
softPwmWrite(29,0); //左轮前进
softPwmWrite(28,250);
softPwmWrite(25,0); //右轮前进
softPwmWrite(24,250);
}
int max(int a,int b)
{
if(a>=b)
return a;
return b;
}
void brake(int time) //刹车,停车
{
softPwmWrite(28,0); //左轮stop
softPwmWrite(29,0);
softPwmWrite(24,0); //stop
softPwmWrite(25,0);
delay(time * 100);//执行时间,可以调整
}
void left() //左转()
{
softPwmWrite(29,250); //左轮
softPwmWrite(28,0);
softPwmWrite(25,0); //右轮前进
softPwmWrite(24,250);
//delay(time * 300);
// delay(time * 300);
}
void right() //右转()
{
softPwmWrite(29,0); //左轮前进
softPwmWrite(28,250);
softPwmWrite(25,250); //右轮
softPwmWrite(24,0);
//delay(time * 300); //执行时间,可以调整
}
void back() //后退
{
softPwmWrite(29,250); //左轮back
softPwmWrite(28,0);
softPwmWrite(25,250); //右轮back
softPwmWrite(24,0);
//delay(time *200); //执行时间,可以调整
}
void cyswrite(char c)
{
if(c>='0'&&c<='9')
{
if(c=='0')
{
run();
delay(5000);
left();
delay(3000);
run();
delay(2000);
left();
delay(3000);
run();
delay(5000);
left();
delay(3000);
run();
delay(2000);
//0
right();
delay(8000);
run();
delay(5000);
right();
delay(3000);
brake(1000);
return;
}
else if(c=='1')
{
run();
delay(2000);
//1
left();
delay(3000);
run();
delay(3000);
left();
delay(3000);
run();
delay(5000);
right();
delay(8000);
brake(1000);
return;
}
else if(c=='2')
{
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(2500);
right();
delay(3000);
run();
delay(3000);
left();
delay(3000);
run();
delay(2500);
left();
delay(3000);
run();
delay(5000);
left();
delay(3000);
run();
delay(5000);
left();
delay(8000);
brake(1000);
return;
}
else if(c=='3')
{
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(2500);
right();
delay(3000);
run();
delay(3000);
back();
delay(3000);
left();
delay(3000);
run();
delay(2500);
right();
delay(3000);
run();
delay(3000);
left();
delay(8000);
run();
delay(3000);
left();
delay(3000);
run();
delay(6000);
right();
delay(3000);
run();
delay(3000);
right();
delay(3000);
brake(1000);
return;
}
else if(c=='4')
{
right();
delay(1500);
run();
delay(4243);
left();
delay(4500);
run();
delay(4243);
back();
delay(1243);
right();
delay(3000);
run();
delay(1500);
back();
delay(4500);
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
brake(1000);
return;
}
else if(c=='5')
{
run();
delay(2500);
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(2500);
right();
delay(3000);
run();
delay(3000);
//go
right();
delay(8000);
//back
run();
delay(3000);
left();
delay(3000);
run();
delay(2500);
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(2500);
right();
delay(3000);
run();
delay(5000);
right();
delay(3000);
brake(1000);
return;
}
else if(c=='6')
{
run();
delay(2500);
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(2500);
right();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(5000);
right();
delay(3000);
run();
delay(5000);
right();
delay(3000);
brake(1000);
return;
}
else if(c=='7')
{
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(6000);
back();
delay(6000);
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
brake(1000);
return;
}
else if(c=='8')
{
run();
delay(2500);
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(2500);
right();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(5000);
right();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(2500);
back(2500);
left(3000);
brake(1000);
run();
delay(2000);
right();
delay(3000);
brake(1000);
return;
}
else if(c=='9')
{
run();
delay(2500);
left();
delay(3000);
run();
delay(3000);
right();
delay(3000);
run();
delay(2500);
right();
delay(3000);
run();
delay(3000);
//go
right();
delay(8000);
//back
run();
delay(3000);
left();
delay(3000);
run();
delay(5000);
right();
delay(3000);
run();
delay(5000);
right();
delay(3000);
brake(1000);
return;
}
}
return;
}
#endif
转载请注明