论最秀的头文件-在树莓派小车上的应用

前几天,我写了几个头文件,觉得它们用起来实在是太方便了,现在就来分享一下。

头文件一: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

转载请注明

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值