欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機智能小車 功能 循跡,紅外遙控,超聲波避障,舵機,PWM,跟蹤
[打印本頁]
作者:
51hei學習技術中
時間:
2017-3-6 03:07
標題:
單片機智能小車 功能 循跡,紅外遙控,超聲波避障,舵機,PWM,跟蹤
0.png
(72.56 KB, 下載次數: 135)
下載附件
2017-3-6 03:03 上傳
下載:
智能小車資料.zip
(89.07 KB, 下載次數: 231)
2017-3-6 03:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
一些問題:
問:
大神請教個問題,我用keil給51單片機寫的程序能運行在其中設備上嗎?因為我是有一個打算就是用我的單片機作試驗,再把程序寫到自己設計的電路中去,我需要用到什么芯片才能執行這個程序
答:
我就是用的KEIL+51單片機,你可以在自己的開發板上做實驗,只要單品機是一樣的就完全可以,即使不完全一樣,也僅僅需要改改IO口等
是用的兩個紅外,兩個紅外之間距離遠點,另外我這個直走和轉彎是兩個不同的PWM速度,轉彎大概是直走的2倍左右,效果好點.
下面是智能小車外形圖:
0.png
(468.91 KB, 下載次數: 100)
下載附件
2017-3-6 02:57 上傳
小車是用的慧靜4WD小車,程序是自己寫的.
http://player.youku.com/player.php/sid/XMTMwMjg2MDU0OA==/v.swf
http://player.youku.com/player.php/sid/XMTMwMzI0MjY0NA==/v.swf
遙控子程序:
#include <reg52.h>
#include "SmartCar.h"
//#include "Dianji.h"
#include "RTX51TNY.H"
#define Imax 14000 //此處為晶振為11.0592時的取值,
#define Imin 8000 //如用其它頻率的晶振時,
#define Inum1 1450 //要改變相應的取值。
#define Inum2 700
#define Inum3 3000
unsigned char f=0; //找到起始碼時置1
unsigned char Im[4]={0x00,0x00,0x00,0x00}; //分別存儲,客戶碼1,客戶碼2,操作碼,操作碼反碼
unsigned int Tc = 0; //Tc時間間隔
unsigned char m = 0; //m往Im存數時計數用
unsigned char IrOK = 0; //提取成功后置1
unsigned char ImOld=0; //儲存舊命令,用于加減速控制
//unsigned char const discode[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};
//unsigned char const positon[3]={ 0xfe,0xfd,0xfb};
//sbit FM = P2^6; //test
/************************************************************************/
//遙控
void YaoKong (void)
{
if(IrOK==1)
{
// FM=0;
switch(Im[2])
{
case 0x18: //前進
{
ucFlagControl=FLAG_GO;
}
break;
case 0x52: //后退
{
ucFlagControl=FLAG_BACK;
}
break;
case 0x1C: //停止
{
ucFlagControl=FLAG_STOP;
}
break;
case 0x08: //左轉
{
ucFlagControl=FLAG_TURNLEFT;
}
break;
case 0x5A: //右轉
{
ucFlagControl=FLAG_TURNRIGHT;
}
break;
case 0x15: //加速
{
if(++ucPwm>10)
{
ucPwm=10;
}
}
break;
case 0x07: //減速
{
if(--ucPwm==0)
{
ucPwm=1; //Pwm至少為1
}
}
break;
case 0x0C: //遙控模式
{
ucFlagState = FLAG_YAOKONG;
}
break;
case 0x5E: //循跡模式
{
ucFlagState = FLAG_XUNJI;
}
break;
case 0x42: //跟隨模式
{
ucFlagState = FLAG_GENSUI;
}
break;
case 0x4A: //避障模式
{
ucFlagState = FLAG_BIZHANG;
ucFlagChangeState=YES;
}
break;
default:
break;
}
IrOK=0; //將成功標記位置位
}
}
//外部中斷解碼程序
void intersvr1() interrupt 2
{
Tc=TH1*256+TL1; //提取中斷時間間隔時長,兩次下降沿之間的時間間隔
TH1=0;
TL1=0; //定時中斷重新置零
if((Tc>Imin)&&(Tc<Imax))
{
m=0;
f=1;
return;
}
if(f==1) //找到啟始碼
{
if(Tc>Inum1&&Tc<Inum3)
{
Im[m/8]=Im[m/8]>>1|0x80; m++;
}
if(Tc>Inum2&&Tc<Inum1)
{
Im[m/8]=Im[m/8]>>1; m++; //取碼
}
if(m==32)
{
m=0;
f=0;
if(Im[2]==~Im[3])
{
IrOK=1;
}
else IrOK=0; //取碼完成后判斷讀碼是否正確
}
}
}
復制代碼
電機子程序:
#include <reg52.h>
#include <INTRINS.H>
#include "SmartCar.h"
#include "Yaokong.h"
sbit IN1 = P1^0; // 左1電機 高電平前進
sbit IN2 = P1^1; // 左1電機 高電平后退 可以改接成PWM輸出
sbit IN3 = P1^2; // 左2電機 高電平前進
sbit IN4 = P1^3; // 左2電機 高電平后退 可以改接成PWM輸出
sbit IN5 = P1^4; // 右1電機 高電平前進
sbit IN6 = P1^5; // 右1電機 高電平后退 可以改接成PWM輸出
sbit IN7 = P1^6; // 右2電機 高電平前進
sbit IN8 = P1^7; // 右2電機 高電平后退 可以改接成PWM輸出
unsigned char ucFlagDirection = 0; //方向,0為前進,1為后退
//sbit FM = P2^6;
void PwmLeft (void);
void PwmRight (void);
//前進函數
void Go(void)
{
ucFlagDirection = 0;
IN2=0; //左1電機
IN4=0; //左2電機
IN6=0; //右1電機
IN8=0; //右2電機
PwmLeft();
PwmRight();
}
//后退函數
void Back(void)
{
ucFlagDirection = 1;
IN1=0; //左1電機
IN3=0; //左2電機
IN5=0; //右1電機
IN7=0; //右2電機
PwmLeft();
PwmRight();
}
//小車左轉函數
void TurnLeft(void)
{
ucFlagDirection = 0;
IN6=0; //右1電機
IN8=0; //右2電機
IN2=0; //左1電機
IN4=0; //左2電機
IN1=0;
IN3=0;
//右側繼續前進
PwmRight();
}
//小車右轉函數
void TurnRight(void)
{
ucFlagDirection = 0;
IN2=0; //左1電機
IN4=0; //左2電機
IN6=0; //右1電機
IN8=0; //右2電機
IN5=0;
IN7=0;
//左側繼續前進
PwmLeft();
}
//電機停止轉動函數
void Stop(void)
{
P1 = 0x00;
}
//PwmLeft
void PwmLeft (void)
{
if(ucPwmCountDianJ <= ucPwm)
{
if(ucFlagDirection == 0) //前進時
{
IN1 = 1;
IN3 = 1;
}
else if(ucFlagDirection == 1) //后退時
{
IN2 = 1;
IN4 = 1;
}
}
else
{
if(ucFlagDirection == 0) //前進時
{
IN1 = 0;
IN3 = 0;
}
else if(ucFlagDirection == 1) //后退時
{
IN2 = 0;
IN4 = 0;
}
}
// if(ucPwmCountDianJ >= 10)
// {
// TR0=0;
// ucPwmCountDianJ = 0;
// TR0=1;
// }
}
//PwmRight
void PwmRight (void)
{
if(ucPwmCountDianJ <= ucPwm)
{
if(ucFlagDirection == 0) //前進時
{
IN5 = 1;
IN7 = 1;
}
else if(ucFlagDirection == 1) //后退時
{
IN6 = 1;
IN8 = 1;
}
}
else
{
if(ucFlagDirection == 0) //前進時
{
IN5 = 0;
IN7 = 0;
}
else if(ucFlagDirection == 1) //后退時
{
IN6 = 0;
IN8 = 0;
}
}
// if(ucPwmCountDianJ >= 10)
// {
// TR0=0;
// ucPwmCountDianJ = 0;
// TR0=1;
// }
}
復制代碼
主程序:
/*******************************************************
* 項目名稱:循跡避障小車
* 單 片 機:STC89C52RC
* 功 能:循跡,紅外遙控,超聲波避障,舵機,PWM,跟蹤
* 作 者:劉琦
* IO口定義:紅外循跡 P3^4,P3^5
* 紅外避障 P3^6,P3^7
* 電機 P1^0~P1^7
* 超聲波避障 P2^4~P2^5
* 紅外遙控 P3^3
* 舵機 P2^3
* 數碼管段選 P0
* 數碼管位選 P2^0~P2^3
* 遙 控 器:2 前進 (18)
* 8 后退 (52)
* 5 停止 (1C)
* 4 左轉 (08)
* 6 右轉 (5A)
* 1 遙控模式 (0C)
* 3 循跡模式 (5E)
* 7 跟隨模式 (42)
* 9 避障模式 (4A)
* + 加速 (15)
* - 減速 (07)
* 定 時 器:T0 PWM(電機、舵機),數碼管(超聲波測距)
* T1 紅外遙控計時
* T2 超聲波計時
*******************************************************/
/******************************頭文件區***********************************************/
#include <reg52.h>
#include "Dianji.h"
#include "Yaokong.h"
#include "RTX51TNY.H"
#include "Chaoshengbo.h"
#include "Duoji.h"
/******************************宏定義區***********************************************/
//需要定時刷新的任務數,0YaoKong,1Display,2CSB
#define NUM_TASK_REFRESH 3
//刷新頻率
//#define TIME_PER_SEC 200 //每次進入中斷的頻率,200Hz,5ms
#define TIME_PER_SEC 10000 //每次進入中斷的頻率,10000Hz,0.1ms
#define TIME_CLOCK 11059200 //晶振頻率
#define TIME_YAOKONG_50HZ TIME_PER_SEC/50 //響應遙控命令頻率,0.02s
#define TIME_SUMA_300HZ TIME_PER_SEC/300 //超聲波距離顯示數碼管刷新頻率,0.003s
#define TIME_CSB_5HZ TIME_PER_SEC/5 //超聲波自動檢測的頻率,0.2s
#define FLAG_YAOKONG 0
#define FLAG_XUNJI 1
#define FLAG_BIZHANG 2
#define FLAG_GENSUI 3
#define FLAG_GO 0
#define FLAG_BACK 1
#define FLAG_STOP 2
#define FLAG_TURNLEFT 3
#define FLAG_TURNRIGHT 4
#define NO 0
#define YES 1
#define DELAYTURN 5000
#define DELAYDUOJI 5000
/******************************子函數聲明區***********************************************/
void initial_myself(void);
void initial_peripheral(void);
void delay100ms(void);
/******************************IO口定義區***********************************************/
sbit LEFT_XJ = P3^4; // 左循跡
sbit RIGHT_XJ = P3^5; // 右循跡
sbit LEFT_GS = P3^6; // 左跟隨
sbit RIGHT_GS = P3^7; // 右跟隨
//sbit LEFT_CS = P // 左測速
//sbit RIGHT_CS = P // 右測速
sbit KEY=P2^6; // 激活超聲波測距,測試用,蜂鳴器也響;
/******************************全局變量定義區***********************************************/
unsigned char ucPwm = 4; //電機的PWM占空比,N/10
unsigned int ucPwmCountDianJ = 0; //電機Pwm計數
unsigned int ucPwmCountDuoJ = 0; //舵機Pwm計數
unsigned char ucFlagState = FLAG_YAOKONG; //模式選擇,遙控,循跡,避障
unsigned char ucFlagControl = FLAG_STOP; //遙控模式下的控制選擇,前進后退停止左轉右轉
unsigned int uc_delay_task_cnt[NUM_TASK_REFRESH]; //任務刷新延遲
unsigned char ucCSBCheck = NO; //用于判斷是否需要停車檢測
unsigned int ucPwmDuoj = 6; //舵機歸中,默認情況下先歸中
unsigned int ulS[4] = {0,0,0,0}; //儲存距離數據,0°,180°,90°,后退時90°
unsigned char ucDuoJiPosition[3]={11,2,6}; //舵機的0°,180°,90°對應的ucPwmDuoj數值
unsigned char ucFlagTurning=NO; //在超聲波避障模式中,判斷是否正在轉彎
unsigned char ucFlagDuoJiPositon=0; //正在檢測的舵機位置標示,0代表正在檢測0°
unsigned char ucLockCSBCheck=NO; //超聲波檢測過程中時,此為YES,鎖住紅外傳感器的檢測
unsigned int uiDelayDuoJiMove=DELAYDUOJI; //舵機移動延遲結束
unsigned char ucFlagDuoJiMove=NO; //舵機開始移動的標志,此標志為YES時uiDelayDuoJiMove開始減
unsigned char ucFlagCSBBegin=NO; //超聲波開始檢測標志,當uiDelayDuoJiMove為0時,為YES
unsigned char ucNumS=0; //ulS數組的第幾位
unsigned char ucNumCSB=0; //進入超聲波檢測的次數,用來控制什么時候結束檢測,開始轉彎
unsigned int uiDelayTurn=DELAYTURN; //轉彎結束,大概90°
unsigned char ucFlagTurn=NO; //開始轉動的標志,此標志為YES時uiDelayTurn開始減
unsigned char ucFlagTurnOver=NO; //轉彎結束標志,為YES時,退出轉彎
unsigned char ucFlagSMGLock=NO; //數碼管鎖,從檢測到障礙,到轉彎結束,這段時間鎖上不顯示
unsigned char ucFlagGuiZhong=NO; //頭一次進入避障模式先歸中
unsigned char ucFlagBegin=NO; //歸中后此位為YES
unsigned char ucFlagChangeState=NO; //改變狀態標識,如果改變了,那么初始化避障模式的變量
unsigned char ucFlagBackOK=NO; //后退OK標識,后退結束后,才開始轉彎
//unsigned char ucCSBDirection = 0; //用來記錄并判斷檢測后行進方向
//unsigned char ucCSBFlag = 0; //用來激活400ms計時
//unsigned char ucFlagJumpoutPwm = 0; //Pwm跳出標示,1為跳出
//unsigned char const discode[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};
//unsigned char const positon[3]={ 0xfe,0xfd,0xfb};
/******************************主函數開始***********************************************/
void main(void)
{
initial_myself();
delay100ms();
initial_peripheral();
while(1)
{
if(ucFlagChangeState==YES) //每次改變狀態,將避障模式的變量初始化
{
ucFlagTurning=NO; //在超聲波避障模式中,判斷是否正在轉彎
ucFlagDuoJiPositon=0; //正在檢測的舵機位置標示,0代表正在檢測0°
ucLockCSBCheck=NO; //超聲波檢測過程中時,此為YES,鎖住紅外傳感器的檢測
uiDelayDuoJiMove=DELAYDUOJI; //舵機移動延遲結束
ucFlagDuoJiMove=NO; //舵機開始移動的標志,此標志為YES時uiDelayDuoJiMove開始減
ucFlagCSBBegin=NO; //超聲波開始檢測標志,當uiDelayDuoJiMove為0時,為YES
ucNumS=0; //ulS數組的第幾位
ucNumCSB=0; //進入超聲波檢測的次數,用來控制什么時候結束檢測,開始轉彎
uiDelayTurn=DELAYTURN; //轉彎結束,大概90°
ucFlagTurn=NO; //開始轉動的標志,此標志為YES時uiDelayTurn開始減
ucFlagTurnOver=NO; //轉彎結束標志,為YES時,退出轉彎
ucFlagSMGLock=NO; //數碼管鎖,從檢測到障礙,到轉彎結束,這段時間鎖上不顯示
ucFlagGuiZhong=NO; //頭一次進入避障模式先歸中
ucFlagBegin=NO; //歸中后此位為YES
ucFlagBackOK=NO; //后退OK標識,后退結束后,才開始轉彎
ucPwm=4;
ucFlagChangeState=NO;
}
if(uc_delay_task_cnt[0]==0)
{
YaoKong();
ET0=0;//在中斷中也有可能變化的變量在更改前時先關閉中斷
uc_delay_task_cnt[0]=TIME_YAOKONG_50HZ;
ET0=1;
}
//遙控模式
if(ucFlagState==FLAG_YAOKONG)
{
switch(ucFlagControl)
{
case FLAG_GO:
Go();
break;
case FLAG_STOP:
Stop();
break;
case FLAG_BACK:
Back();
break;
case FLAG_TURNLEFT:
TurnLeft();
break;
case FLAG_TURNRIGHT:
TurnRight();
break;
default:
break;
}
}
//循跡模式
if(ucFlagState==FLAG_XUNJI)
{
if(LEFT_XJ==1&&RIGHT_XJ==1)
{
ucPwm=3;
Go();
}
else if(RIGHT_XJ==0)
{
ucPwm=8;
TurnRight();
}
else if(LEFT_XJ==0)
{
ucPwm=8;
TurnLeft();
}
}
//跟隨模式
if(ucFlagState==FLAG_GENSUI)
{
if(LEFT_GS==1&&RIGHT_GS==1) //左右都檢測到物體
{
Stop();
}
else if(LEFT_GS==0&&RIGHT_GS==1) //左側未檢測到,右側檢測到
{
TurnRight();
}
else if(LEFT_GS==1&&RIGHT_GS==0) //右側未檢測到,左側檢測到
{
TurnLeft();
}
else //左右都未檢測到
{
Go();
}
}
//超聲波+紅外避障模式
//ucFlagBegin=NO,
if(ucFlagState==FLAG_BIZHANG)
{
if(ucFlagBegin==NO)
{
ucPwmDuoj=ucDuoJiPosition[2];
ucFlagGuiZhong=YES;
}
else
{
// if(ucFlagSMGLock==NO&&uc_delay_task_cnt[1]==0) //數碼管刷新
if(uc_delay_task_cnt[1]==0) //數碼管刷新
{
Display();
ET0=0;//在中斷中也有可能變化的變量在更改前時先關閉中斷
uc_delay_task_cnt[1]=TIME_SUMA_300HZ;
ET0=1;
}
if(ucFlagTurning==NO) //沒在轉彎
{
if(ucLockCSBCheck==NO&&uc_delay_task_cnt[2]==0) //超聲波自動檢測
{
CSB ();
ET0=0;//在中斷中也有可能變化的變量在更改前時先關閉中斷
uc_delay_task_cnt[2]=TIME_CSB_5HZ;
ET0=1;
if(S<=40)
{
ucLockCSBCheck=YES;
ucFlagSMGLock=YES;
Stop();
}
}
if(ucLockCSBCheck==NO)
{
Go();
}
if(ucLockCSBCheck==YES) //遇到障礙后超聲波檢測整個過程開始
{
if(ucFlagCSBBegin==NO) //超聲波檢測未開始
{
ucPwmDuoj=ucDuoJiPosition[ucFlagDuoJiPositon]; //正在檢測的角度,隨著ucFlagDuoJiPositon變化而變化
ucFlagDuoJiMove=YES;
}
if(ucFlagCSBBegin==YES)
{
// if(ucFlagDuoJiPositon<2) //只在0°,180°進行超聲波檢測
// {
CSB ();
CSB ();
CSB ();
ulS[ucNumS]=S; //將距離數據存起來
// if(ucNumS<2)
ucNumS++;
// }
if(++ucFlagDuoJiPositon>2)
ucFlagDuoJiPositon=0;
if(++ucNumCSB>=3)
{
ucFlagTurning=YES; //激活轉彎
ucLockCSBCheck=NO;
ucNumCSB=0; //進入檢測的次數清0
ucNumS=0; //存儲距離數據的位置清0
}
ucFlagCSBBegin=NO; //超聲波檢測結束
}
}
}
else //正在轉彎
{
if(ucFlagBackOK==NO)
{
if( ulS[2]<30)
{
Back();
CSB();
ulS[3]=S;
if(ulS[3]>=30)
ucFlagBackOK=YES;
}
else
ucFlagBackOK=YES;
}
else
{
if(ucFlagTurnOver==NO) //未轉彎結束
{
ucFlagTurn=YES;
if(ulS[0]>ulS[1]) //左側>右側
TurnLeft();
else
TurnRight();
}
else
{
ucFlagTurning=NO;
ucFlagTurnOver=NO;
ucFlagSMGLock=NO;
ucFlagBackOK=NO;
}
}
}
}
}
}
}
//中斷函數
void timer0(void) interrupt 1
{
unsigned char i;
TR0=0;
TH0=255-TIME_CLOCK/TIME_PER_SEC/12/256;
TL0=255-TIME_CLOCK/TIME_PER_SEC/12%256;
//task_delay[]減到0時,相應的函數準備就緒
for(i=0;i<NUM_TASK_REFRESH;i++)
{
if(uc_delay_task_cnt[i]!=0)//延遲不為0時才減
{uc_delay_task_cnt[i]--;};
}
ucPwmCountDianJ++;
if(ucPwmCountDianJ >= 10)
{
ucPwmCountDianJ = 0;
}
//舵機轉動距離控制
if(ucFlagDuoJiMove==YES||ucFlagGuiZhong==YES)
{
ucPwmCountDuoJ++;
if(ucPwmCountDuoJ>205) //0.5+20(ms),整個周期長度
{
ucPwmCountDuoJ=0;
}
PwmServomoto();
}
//舵機轉動時間控制
if(ucFlagDuoJiMove==YES)
{
if(uiDelayDuoJiMove!=0)
uiDelayDuoJiMove--;
else
{
uiDelayDuoJiMove=DELAYDUOJI;
ucFlagDuoJiMove=NO;
ucFlagCSBBegin=YES;
}
}
//頭一次進入避障模式的舵機歸中
if(ucFlagGuiZhong==YES)
{
if(uiDelayDuoJiMove!=0)
uiDelayDuoJiMove--;
else
{
uiDelayDuoJiMove=DELAYDUOJI;
ucFlagGuiZhong=NO;
ucFlagBegin=YES;
}
}
//轉彎延遲
if(ucFlagTurn==YES)
{
if(uiDelayTurn!=0)
uiDelayTurn--;
else
{
uiDelayTurn=DELAYTURN;
ucFlagTurn=NO;
ucFlagTurnOver=YES;
}
}
TR0=1;
}
//初始化區
void initial_myself(void)//第一區 初始化單片機
{
unsigned char i;
for(i=0;i<NUM_TASK_REFRESH;i++)uc_delay_task_cnt[i]=0;//初始化讓所有任務就緒
TMOD=0X11; //定時器0、1為16位不自動重裝
TH0=255-TIME_CLOCK/TIME_PER_SEC/12/256;
TL0=255-TIME_CLOCK/TIME_PER_SEC/12%256;
TH1=0;
TL1=0;
TH2=0;
TL2=0;
DUOJI=0; //防止舵機轉動,同時不情愿的開啟了第四個數碼管的顯示
}
void initial_peripheral(void) //第二區 初始化外圍
{
EA=1; //開總中斷
ET0=1; //允許定時器中斷
IT1=1; //下降沿觸發
EX1=1; //允許外部1中斷
TR0=1; //啟動定時器0
TR1=1; //啟動定時器1
}
void delay100ms(void) //@11.0592MHz
{
unsigned char i, j, k;
;
;
i = 5;
j = 52;
k = 195;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
復制代碼
作者:
ginny
時間:
2017-3-6 12:18
效果還是不錯的啊
作者:
925302604
時間:
2017-5-1 22:08
厲害了我的哥
作者:
小鵬鳥
時間:
2017-5-23 19:56
厲害了,大神。我最近在搞超聲波跟隨小車,但是都已失敗告終。反反復復上網查資料,還是沒結果。看了您的程序后稍有思緒,但是有些地方沒看懂,也許是接觸的太少的緣故罷了。向您學習。
作者:
笙歌飄飄
時間:
2017-5-25 12:52
謝謝啦很受用
作者:
yjs
時間:
2017-5-26 07:24
我最近也在做小車,只是效果有點不理想,看了感覺有點啟發
作者:
總是離人淚
時間:
2017-5-28 17:19
厲害了,準備搞小車
作者:
李文威
時間:
2017-8-8 17:56
有沒有壓縮包形式的資料
作者:
星云體
時間:
2017-10-16 23:20
大神,能寫下用到的 原件么?
作者:
星云體
時間:
2017-10-16 23:20
大神能說下用到的原件么?
作者:
星云體
時間:
2017-10-16 23:21
大神能說下用到的原件和電路圖么? 我也想做一個四驅
作者:
曦秋
時間:
2018-5-22 14:39
好資料,51黑有你更精彩!!!需要了解一下
作者:
王鑫雨
時間:
2018-5-22 23:38
確實不錯
作者:
imsssu
時間:
2018-6-1 09:29
好資料,51黑有你更精彩!!!需要了解一下
作者:
eydms
時間:
2018-6-21 15:33
確實很受用,謝謝樓主的分享
作者:
冷顏
時間:
2018-6-30 13:29
大神,求助,怎么讓小車按著走過的路線原路返回
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1