遙控車太慢了!!!我受不了!自己做一個!說干就干,基于ARDUINO手機藍牙控制,完成了這個超強的作品,全手工制造。歡迎學習。少走彎路! 作者:漫步在宇宙的邊緣 https://www.bilibili.com/read/cv6217381 出處: bilibili
這是第11代成品車 性能有很大的提升了 項目公布了原理圖和PCB大家可以自己下載使用
#include
#define LED 2
#define NUM_LEDS 6
CRGB leds[NUM_LEDS];
#define PINX A5
#define PINY A3
#define PINKG A1
#define PINLU 5
#define PINLD 6
#define PINRU 10
#define PINRD 9
int TZ=200;//速度調整
int speedcal=0;
int Direction;//方向原始數據
int correctionXR;//x修正后的X
int correctionXL;//x修正后的X
int spd=255;
unsigned long Speed;
unsigned long KGSG;
void motorprint();
void motorcontrol();
void dealX();//X方向調整
void motorprint()
{
pinMode(PINX, INPUT); //設置引腳為輸入模式
pinMode(PINY, INPUT); //設置引腳為輸入模式
pinMode(PINKG, INPUT); //設置引腳為輸入模式
pinMode(A0, OUTPUT); //設置引腳為輸入模式
pinMode(LED, OUTPUT); //設置引腳為輸入模式
pinMode(PINLU, OUTPUT); //設置引腳為輸出模式
pinMode(PINLD, OUTPUT); //設置引腳為輸出模式
pinMode(PINRU, OUTPUT); //設置引腳為輸出模式
pinMode(PINRD, OUTPUT); //設置引腳為輸出模式
digitalWrite(PINLU,LOW);
digitalWrite(PINLD,LOW);
digitalWrite(PINRU,LOW);
digitalWrite(PINRD,LOW);
}
void motorcontrol()
{
if ((TZ>5)&&(Speed>Direction))
{
speedcal=(Speed-Direction);
analogWrite(PINLU,constrain(Speed,0,254));
analogWrite(PINLD,constrain(Speed,0,254));
analogWrite(PINRU,constrain(speedcal,0,254));
analogWrite(PINRD,constrain(speedcal,0,254));
}
else if (TZ<-5)
{
// speedcal=constrain(map((Speed+Direction),Speed,310,Speed,250),Speed,250);
speedcal=(Speed+Direction);
analogWrite(PINLU,constrain(speedcal,0,254));
analogWrite(PINLD,constrain(speedcal,0,254));
analogWrite(PINRU,constrain(Speed,0,254));
analogWrite(PINRD,constrain(Speed,0,254));
}
else
{
analogWrite(PINLU,constrain(Speed-5,0,254));
analogWrite(PINLD,constrain(Speed-5,0,254));
analogWrite(PINRU,constrain(Speed+1,0,254));
analogWrite(PINRD,constrain(Speed+1,0,254));
}
}
void setup()
{
// Serial.begin(19200);
motorprint();
FastLED.addLeds(leds, NUM_LEDS);
digitalWrite(A0,HIGH);
for(int i=0;i<6;i++)
{
leds[i] = CRGB ( 225,255,255);
}
FastLED.show();
}
void loop()
{
/*Speed =pulseIn(Y, HIGH,80000);
Direction =pulseIn(X, HIGH,80000);
KGSG = pulseIn(KG, HIGH,80000);*/
KGSG = pulseIn(PINKG, HIGH,80000);
if(KGSG<1100)
{
spd=3;
for(int i=0;i<6;i++)
{
leds[i] = CRGB ( 0,0,255);
}
FastLED.show();
}
else if(KGSG<1700)
{
spd=2;
for(int i=0;i<6;i++)
{
leds[i] = CRGB ( 225,0,255);
}
FastLED.show();}
else if(KGSG<2000)
{spd=1;
for(int i=0;i<6;i++)
{
leds[i] = CRGB ( 225,0,0);
}
FastLED.show();
}
else
spd=255;
Speed=(constrain(map(pulseIn(PINY, HIGH,80000),989,1968,0,250), 0, 250)/spd);
Direction =constrain(map(pulseIn(PINX, HIGH,90000),998,1982,-TZ,TZ),-TZ,TZ);
if (Speed<20)
{
Speed=0;
digitalWrite(A0,LOW);
motorcontrol();
}
else
{
digitalWrite(A0,HIGH);
motorcontrol();
}
}
!注意:請使用瀏覽器自帶下載,迅雷等下載軟件可能無法下載到有效資源。
歡迎加入EEWorld參考設計群,也許能碰到搞同一個設計的小伙伴,群聊設計經驗和難點。 入群方式:微信搜索“helloeeworld”或者掃描二維碼,備注:參考設計,即可被拉入群。 另外,如您在下載此設計遇到問題,也可以微信添加“helloeeworld”及時溝通。
EEWorld Datasheet 技術支持