|
闲着蛋疼,做了辆车
遥控,3档变速,感觉做得最好就是前灯了{:soso_e128:}
程序还没调好脉冲
接收程序
#include <Mirf.h>
#include <MirfHardwareSpiDriver.h>
#include <MirfSpiDriver.h>
#include <nRF24L01.h>
#include <SPI.h>
int AA,BB,CC,DD,EE,FF,XX,YY,data;
/****************************定义接口*******************/
/**************灯光******************/
const int frontLight=A0;
const int backLight=A1;
const int leftLight=A2;
const int rightLight=A3;
const int laBa=36;
/***************马达***************/
const int moto1A=22;
const int moto1B=23;
const int moto2A=24;
const int moto2B=25;
const int moto3A=26;
const int moto3B=27;
const int moto4A=28;
const int moto4B=29;
const int Enable1=3;
const int Enable2=4;
const int Enable3=5;
const int Enable4=6;
int value,i;
int dangWei[6];
void setup()
{
Mirf.spi = &MirfHardwareSpi; //加载24L01 SPI
Mirf.init();
Mirf.setRADDR((byte *)"serv1"); //接收地址" "
Mirf.payload = sizeof(int); //数据类型()
Mirf.config();
Serial.begin(9600);
for(int i=0;i<=36;i++)
{pinMode(i,OUTPUT);
}
}
void loop(){
int AA=BB=CC=DD=EE=FF=0;
if(Mirf.dataReady())
{ //如果接收到数据则执行
Mirf.getData((byte *)&data); //接收数据
/**********************接收数据*********************************/
if (data==10){
AA=data;
}
if (data==20){
BB=data;
}
if (data==30){
CC=data;
}
if (data==40){
DD=data;
}
if (data==50){
EE=data;
}
if (data==60){
FF=data;
}
if ((data>=101)&&(data<=200)){
XX=data;
}
if ((data>=201)&&(data<=300)){
YY=data;
}
int dangWei[6]={AA,BB,CC,DD,EE,FF};
value=dangWei[0];
for(int i=0;i<6;i++){
if(dangWei[i]>value)
value=dangWei[i];
}
/************************** 处理数据*****************/
if (YY>234){
switch(XX){
case 101 :frontLightOn();
break;
case 134 :goStraight();
break;
case 167 :frontLightOff();
}
}
if (YY==234){
switch(XX){
case 101 :turnLeft();
break;
case 134 :brk();
break;
case 167 :turnRight();
}
}
if(YY<234){
switch(XX){
case 101 :backLightOn();
break;
case 134 :goBack();
break;
case 167 :backLightOff();
}
}
if(value==50){
digitalWrite(laBa,HIGH);
delay(100);
digitalWrite(laBa,LOW);
}
Serial.println(AA); // 串口显示接收到的数据
Serial.println(BB);
Serial.println(CC);
Serial.println(DD);
Serial.println(EE);
Serial.println(FF);
Serial.println(XX);
Serial.println(YY);
Serial.println(value);
Serial.println("aaaaa");
//delay(500);
Mirf.rxFifoEmpty(); //清理24L01援存
}
}
/******************前灯亮****************/
void frontLightOn()
{
analogWrite(A0,255);
}
/******************前灯灭****************/
void frontLightOff()
{
analogWrite(A0,0);
}
/******************后灯亮****************/
void backLightOn()
{
analogWrite(A1,255);
}
/******************后灯灭****************/
void backLightOff()
{
analogWrite(A1,0);
}
/******************顺时针************/
/*void CW()
{
analogWrite(led[0],255);
delay(300);
for(i=1;i<=10;i++){
analogWrite(led[i],255);
analogWrite(led[i-1],0);
delay(300);
}
}
/******************逆时针**********************/
/*void CCW()
{
analogWrite(led[9],255);
delay(300);
for(i=9;i>=0;i--){
analogWrite(led[i],255);
analogWrite(led[i+1],0);
delay(300);
}
analogWrite(led[0],0);
}*/
/******************直走****************/
void goStraight()
{
switch(value){
case 10:goStraight1();
break;
case 20:goStraight2();
break;
case 30:goStraight3();
break;
case 40:brk();
break;
}
}
/*void normal1()
{
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,HIGH);
analogWrite(Enable1,60);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(Enable2,60);
digitalWrite(moto3A,LOW);
digitalWrite(moto3B,HIGH);
analogWrite(Enable3,60);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,HIGH);
analogWrite(Enable4,35);
}*/
void goStraight1()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(Enable1,70);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(Enable2,80);
digitalWrite(moto3A,LOW);
digitalWrite(moto3B,HIGH);
analogWrite(Enable3,60);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,HIGH);
analogWrite(Enable4,60);
}
void goStraight2()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(Enable1,120);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(Enable2,120);
digitalWrite(moto3A,LOW);
digitalWrite(moto3B,HIGH);
analogWrite(Enable3,120);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,HIGH);
analogWrite(Enable4,90);
}
void goStraight3()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(Enable1,150);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(Enable2,150);
digitalWrite(moto3A,LOW);
digitalWrite(moto3B,HIGH);
analogWrite(Enable3,150);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,HIGH);
analogWrite(Enable4,150);
}
/*void goStraight4()
{
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,HIGH);
analogWrite(Enable1,170);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(Enable2,170);
digitalWrite(moto3A,LOW);
digitalWrite(moto3B,HIGH);
analogWrite(Enable3,170);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,HIGH);
analogWrite(Enable4,170);
}*/
/*****************************后退******************/
void goBack()
{
switch(value){
case 10:goBack1();
break;
case 20:goBack2();
break;
case 30:goBack3();
break;
case 40:brk();
break;
}
}
/*void normal2()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(Enable1,60);
digitalWrite(moto2A,HIGH);
digitalWrite(moto2B,LOW);
analogWrite(Enable2,60);
digitalWrite(moto3A,HIGH);
digitalWrite(moto3B,LOW);
analogWrite(Enable3,60);
digitalWrite(moto4A,HIGH);
digitalWrite(moto4B,LOW);
analogWrite(Enable4,35);
}*/
void goBack1()
{
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,HIGH);
analogWrite(Enable1,90);
digitalWrite(moto2A,HIGH);
digitalWrite(moto2B,LOW);
analogWrite(Enable2,100);
digitalWrite(moto3A,HIGH);
digitalWrite(moto3B,LOW);
analogWrite(Enable3,98);
digitalWrite(moto4A,HIGH);
digitalWrite(moto4B,LOW);
analogWrite(Enable4,60);
}
void goBack2()
{
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,HIGH);
analogWrite(Enable1,120);
digitalWrite(moto2A,HIGH);
digitalWrite(moto2B,LOW);
analogWrite(Enable2,120);
digitalWrite(moto3A,HIGH);
digitalWrite(moto3B,LOW);
analogWrite(Enable3,120);
digitalWrite(moto4A,HIGH);
digitalWrite(moto4B,LOW);
analogWrite(Enable4,90);
}
void goBack3()
{
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,HIGH);
analogWrite(Enable1,85);
digitalWrite(moto2A,HIGH);
digitalWrite(moto2B,LOW);
analogWrite(Enable2,85);
digitalWrite(moto3A,HIGH);
digitalWrite(moto3B,LOW);
analogWrite(Enable3,85);
digitalWrite(moto4A,HIGH);
digitalWrite(moto4B,LOW);
analogWrite(Enable4,85);
}
/*void goBack4()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(Enable1,105);
digitalWrite(moto2A,HIGH);
digitalWrite(moto2B,LOW);
analogWrite(Enable2,105);
digitalWrite(moto3A,HIGH);
digitalWrite(moto3B,LOW);
analogWrite(Enable3,105);
digitalWrite(moto4A,HIGH);
digitalWrite(moto4B,LOW);
analogWrite(Enable4,105);
}*/
void brk()
{
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,LOW);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,LOW);
digitalWrite(moto3A,LOW);
digitalWrite(moto3B,LOW);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,LOW);
}
/**************左转*****************/
void turnLeft()
{
analogWrite(leftLight,255);
delay(100);
analogWrite(leftLight,0);
switch(value){
case 10:zeroL();
break;
case 20:thirtyL();
break;
case 30:fortyFiveL();
break;
case 40:brk();
break;
default:;
break;
}
}
void zeroL()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(Enable1,50);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,LOW);
digitalWrite(moto3A,LOW);
digitalWrite(moto3B,HIGH);
//analogWrite(Enable3,65);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,LOW);
}
void thirtyL()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(Enable1,80);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,LOW);
//analogWrite(Enable1,40);
digitalWrite(moto3A,HIGH);
digitalWrite(moto3B,LOW);
//analogWrite(Enable3,65);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,LOW);
//analogWrite(Enable1,30);
}
void fortyFiveL ()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
analogWrite(Enable1,120);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,LOW);
//analogWrite(Enable1,60);
digitalWrite(moto3A,HIGH);
digitalWrite(moto3B,LOW);
// analogWrite(Enable3,90);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,LOW);
//analogWrite(Enable1,40);
}
/*
void sixtyL()
{
}*/
/*************************右转*********************/
void turnRight()
{
analogWrite(rightLight,255);
delay(100);
analogWrite(rightLight,0);
switch(value){
case 10:zeroR();
break;
case 20:thirtyR();
break;
case 30:fortyFiveR();
break;
case 40: brk();
break;
default :;
break;
}
}
void zeroR()
{
digitalWrite(moto1A,LOW);
digitalWrite(moto1B,LOW);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(Enable2,65);
digitalWrite(moto3A,LOW);
digitalWrite(moto3B,LOW);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,LOW);
//analogWrite(Enable4,65);
}
void thirtyR()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
//analogWrite(Enable1,40);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(Enable1,65);
digitalWrite(moto3A,HIGH);
digitalWrite(moto3B,LOW);
// analogWrite(Enable3,40);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,LOW);
//analogWrite(Enable1,45);
}
void fortyFiveR()
{
digitalWrite(moto1A,HIGH);
digitalWrite(moto1B,LOW);
// analogWrite(Enable1,60);
digitalWrite(moto2A,LOW);
digitalWrite(moto2B,HIGH);
analogWrite(Enable1,90);
digitalWrite(moto3A,HIGH);
digitalWrite(moto3B,LOW);
// analogWrite(Enable3,60);
digitalWrite(moto4A,LOW);
digitalWrite(moto4B,LOW);
//analogWrite(Enable1,70);
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|