課設(shè)報(bào)告基于Arduino單片機(jī)的實(shí)物設(shè)計(jì)
《課設(shè)報(bào)告基于Arduino單片機(jī)的實(shí)物設(shè)計(jì)》由會員分享,可在線閱讀,更多相關(guān)《課設(shè)報(bào)告基于Arduino單片機(jī)的實(shí)物設(shè)計(jì)(16頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 基于Arduino單片機(jī)的實(shí)物設(shè)計(jì) 題目: 基于Arduino的智能小車(烏龜)設(shè)計(jì) 姓名: 學(xué)院: 專業(yè): 班級: 學(xué)號: 指導(dǎo)教師: 設(shè)計(jì)時(shí)間: 目錄 一 、任務(wù)設(shè)計(jì)及要求 3 二、 Arduino 4 2.1 Arduino簡介 4 2.2參數(shù)說明 4 三、 硬件設(shè)計(jì) 4 3.1所需硬件清單 4 3.2硬件設(shè)計(jì)說明 5 3.3電機(jī)驅(qū)動(dòng)模塊
2、 5 3.3.1 L298N說明 5 3.3.2 L298N連接圖 5 3.4循跡模塊 5 3.4.1尋線功能 5 3.4.2尋線傳感器與實(shí)驗(yàn)連接圖 5 3.5避碰模塊 7 3.5.1 超聲波模塊 7 3.5.2 實(shí)驗(yàn)連接圖 7 3.6紅外模塊 8 3.6.1紅外模塊說明 8 3.6.2實(shí)物圖 8 四、模塊軟件設(shè)計(jì) 8 4.1循跡模塊程序 8 4.2 紅外模塊程序 10 4.3避碰模塊程序 11 五、綜合設(shè)計(jì)與調(diào)試 11 5.1流程圖 11 5.2軟件設(shè)計(jì) 12 六、總結(jié) 14 6.1遇到問題及解決辦法 14 1、 硬件問題 14 2、 軟件問題 1
3、5 6.2個(gè)人感悟 15 一 、任務(wù)設(shè)計(jì)及要求 利用Arduino設(shè)計(jì)智能小車(烏龜)其功能: 1、實(shí)現(xiàn)循跡(利用TCRT5000 紅外對管); 2、避碰功能(利用超聲波); 3、紅外遙控功能; 4、綜合以上功能實(shí)現(xiàn)自動(dòng)循跡、避障、紅外控制的智能小車; 二、 Arduino 2.1 Arduino簡介 ARDUINO 智能小烏龜是一款單片機(jī)學(xué)習(xí)應(yīng)用開發(fā)系統(tǒng),以 arduino 單片機(jī)系列 atmega-328為核心.完成尋線,避障,紅外遙控和藍(lán)牙遙控的功能,
4、.套件包含了大量的趣味程序,并可擴(kuò)展外置的電路模塊,從而增加小車的使用功能.旨在讓使用者在學(xué)習(xí) ARDUINO 單片機(jī)時(shí)能脫離枯燥的理論知識,在玩樂中獲取單片機(jī)系統(tǒng)開發(fā)的能力。 2.2參數(shù)說明 1.電機(jī)參數(shù):電壓范圍:1.5-12V,電機(jī)軸長10mm,轉(zhuǎn)速 100rpm/min. 2.控制電機(jī)選用L298N驅(qū)動(dòng)模塊,與單片機(jī)真正隔離. 3.三組尋線模塊,檢測黑白線,精度更高,也可用與防跌落控制. 4.紅外遙控通信模塊,組成智能小車遙控系統(tǒng). 5.超聲波模塊,小車避障系統(tǒng). 5.藍(lán)牙無線模塊,可以和手機(jī)藍(lán)牙配對遙控機(jī)器人.
5、 6.可接入外部7~12V的電壓。并能搭載多款傳感器模塊,根據(jù)您的想象力實(shí)現(xiàn)各種功能. 三、 硬件設(shè)計(jì) 3.1所需硬件清單 1. 金屬減速電機(jī) 2 個(gè);2.優(yōu)質(zhì)輪胎 2 個(gè);3.電機(jī)固定件 2 個(gè);4 、牛眼萬向輪;5.機(jī)器人底盤 2 片;6.L298N 電機(jī)驅(qū)動(dòng)板 1 個(gè);7.ARDUINO UNO328 控制板 1 個(gè);8.ARDUINO 傳感器擴(kuò)展板 1 個(gè);9.云臺 1 個(gè);10.舵機(jī) 1 個(gè);11.超聲波模塊 1 個(gè);12.三組尋線模塊;13.紅外接收傳感器;14.單片機(jī)遙控器;15.2000MA 18650 充電電池 2 節(jié);16.18650 電池盒一個(gè);17.186
6、50 充電器一個(gè)。 3.2硬件設(shè)計(jì)說明 結(jié)合實(shí)際、根據(jù)需要,將系統(tǒng)分為四個(gè)模塊,即電機(jī)驅(qū)動(dòng)模塊,循跡模塊,避碰模塊,紅外模塊,分開做,自后將其綜合起來。 3.3電機(jī)驅(qū)動(dòng)模塊 3.3.1 L298N說明 L298N是一個(gè)驅(qū)動(dòng)模塊,就是單片機(jī)的驅(qū)動(dòng)電流太小無法驅(qū)動(dòng)電動(dòng)機(jī),因此L298N其起到一個(gè)放大器作用。通過控制L298N I1 I2 I3 I4接口,控制電機(jī)的正轉(zhuǎn),反轉(zhuǎn),轉(zhuǎn)彎和停止。 3.3.2 L298N連接圖 如下圖所示: 3.4循跡模塊 3.4.1尋線功能 使小車沿著黑線走,根據(jù)黑線的位置選著行走的狀態(tài)。 3.4.2尋線傳感器
7、與實(shí)驗(yàn)連接圖 TCRT5000紅外對管的工作原理是利用紅外線對顏色的反射率不一樣,將 反射信號的強(qiáng)弱轉(zhuǎn)化成電流信號。黑白尋跡模塊在檢測到黑色高電平有效,檢測到白色是為 低電平有效,檢測高度為 0—3cm。 使用方法 1.傳感器接口有3根排針,分別是GND ,VCC,OUT。VCC和GND為供電端,OUT是信 號輸出端。 2.檢測到物體,信號端輸出低電平;未檢測到物體,信號端輸出高電平。 3.主要判斷信號輸出端是0或者1,就能判斷物體是否存在。 性能參數(shù): 1:檢測距離,檢測白紙時(shí)約為2厘米。視顏色的不同距離有所不同,白色最遠(yuǎn)。 2.供電電壓:2.5V~12V,不要超
8、過12V。(注意:最好用低電壓供電,供電電壓太高傳感器的壽命會變短。5V供電為佳。) 3.工作電流,5V時(shí)18~20ma。經(jīng)大量測試,傳感器硬件設(shè)置為18~20ma工作電流時(shí)性能最 佳,主要表現(xiàn)在抗干擾能力上。 4.檢測到物體,信號端輸出低電平;未檢測到物體,信號端輸出高電平。 5.傳感器輸出TTL電平,能直接與3.3V或者5V單片機(jī)IO口相連。 黑線或者白線檢測原理 1.利用黑色對光線的反射率小這個(gè)特點(diǎn),當(dāng)平面的顏色不是黑色時(shí),傳感器發(fā)射出去的紅 外光被大部分反射回來。于是傳感器輸出低電平0。 2.當(dāng)平面有一黑線,傳感器在黑線上方時(shí),因黑色的反射能力很弱,反射回來的紅外光很 少,達(dá)
9、不到傳感器動(dòng)作的水平,所以傳感器還輸出1。 3.我們只要用單片機(jī)判斷傳感器的輸出端是0或者是1,就能檢測黑線。 4.檢測白線的原理和檢測黑線的原理一樣,檢測白線時(shí),白線周邊的顏色也要比較接近黑 色,然后調(diào)節(jié)紅外傳感器上面的可調(diào)電阻,將靈敏度調(diào)低,一直調(diào)到剛好周邊的顏色檢測 不到為止,那樣就能檢測白線了。 連接參考圖如下: 3.5避碰模塊 3.5.1 超聲波模塊 超聲波智能避障實(shí)現(xiàn)方便、計(jì)算簡單、易于做到實(shí)時(shí)控制,并且在測量精度方面能達(dá)到實(shí)用的要求,因此成為常用的避障方法。 3.5.2 實(shí)驗(yàn)連接圖 3.6紅外模塊 3.6.1紅外模塊說明 實(shí)驗(yàn)前須知:
10、 1.先把 IRremote 函式庫資料夾放進(jìn) Arduino libraries 目錄底下 2.開啟 IrReceive.pde 測得自 己的紅外線遙控的碼(在 Serial Monitor 可顯示 IRcode) , 再將IRcode 記錄下來, 然后到程式里面修改成自 己的紅外線碼即可。 3.6.2實(shí)物圖 四、模塊軟件設(shè)計(jì) 4.1循跡模塊程序 int MotorRight1=8;//IN1 int MotorRight2=9;//IN2 int MotorLeft1=7;//IN4 int MotorLeft2=6;//IN3 int speedpin=
11、11;//定義 EA(PWM 調(diào)速) int speedpin1=10;//定義 EB(PWM 調(diào)速)接口 const int SensorLeft = 5; //左感測器輸入腳 const int SensorMiddle= 4 ; //中感測器輸入腳 const int SensorRight = 3; //右感測器輸入腳 int SL; //左感測器狀態(tài) int SM; //中感測器狀態(tài) int SR; //右感測器狀態(tài) void advance(int a) // 前進(jìn) {digitalWrite(MotorRight1,LOW); digitalWrite(M
12、otorRight2,HIGH); digitalWrite(MotorLeft1,LOW); digitalWrite(MotorLeft2,HIGH); delay(a*50); } void left(int i) // 左轉(zhuǎn) {digitalWrite(MotorRight1,LOW); digitalWrite(MotorRight2,HIGH); digitalWrite(MotorLeft1,LOW); digitalWrite(MotorLeft2,LOW); delay(i*30); } void right(int c) //
13、 右轉(zhuǎn) {digitalWrite(MotorRight1,LOW); digitalWrite(MotorRight2,LOW); digitalWrite(MotorLeft1,LOW); digitalWrite(MotorLeft2,HIGH); delay(c*30); } void stopp(int d) //停止 { digitalWrite(MotorRight1,LOW); digitalWrite(MotorRight2,LOW); digitalWrite(MotorLeft1,LOW); digitalWrite(Mo
14、torLeft2,LOW); delay(d * 10); } void back(int g) //后退 {digitalWrite(MotorRight1,HIGH); digitalWrite(MotorRight2,LOW); digitalWrite(MotorLeft1,HIGH); digitalWrite(MotorLeft2,LOW); delay(g * 100); } void re(int x) //右大轉(zhuǎn) {digitalWrite(MotorRight1,LOW); digitalWrite(MotorRight2
15、,HIGH); digitalWrite(MotorLeft1,HIGH); digitalWrite(MotorLeft2,LOW); delay(x * 25); } void le(int h) //左打轉(zhuǎn) {digitalWrite(MotorRight1,HIGH); digitalWrite(MotorRight2,LOW); digitalWrite(MotorLeft1,LOW); digitalWrite(MotorLeft2,HIGH); delay(h * 25); } void setup() {Serial.begin
16、(9600); pinMode(MotorRight1, OUTPUT); // 腳位 8 (PWM) pinMode(MotorRight2, OUTPUT); // 腳位 9 (PWM) pinMode(MotorLeft1, OUTPUT); // 腳位 7(PWM) pinMode(MotorLeft2, OUTPUT); // 腳位 6 (PWM) pinMode(speedpin,OUTPUT); pinMode(speedpin1,OUTPUT); pinMode(SensorLeft, INPUT); //左感測器 pinMode(SensorM
17、iddle, INPUT);//中感測器 pinMode(SensorRight, INPUT); //右感測器 } void loop() { SL = digitalRead(SensorLeft); SM = digitalRead(SensorMiddle); SR = digitalRead(SensorRight); SL = digitalRead(SensorLeft); SM = digitalRead(SensorMiddle); SR = digitalRead(SensorRight); if (SM == HIGH) {
18、
if (SR == LOW & SL == HIGH) // 向左
{left(1); stopp(2);
} else if (SL == LOW & SR == HIGH)
{right(1);stopp(2); }
else if(SL == HIGH & SR == HIGH )
{ if(count 19、);
SM = digitalRead(SensorMiddle);
SR = digitalRead(SensorRight);
}else if(count>=des) {digitalWrite(MotorRight1,LOW); digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
delay(50000);
}else advance(2) ; }
else // 直進(jìn)
{ advance(1); } } 20、
if (SM==LOW)
{if(SR==LOW & SL==HIGH)
{left(1);
stopp(2);
}else if(SL==LOW & SR==HIGH)
{right(1);
stopp(2); } }
if((SL == LOW & SR == LOW & SM==LOW))
{
le(1); }} }
4.2 紅外模塊程序
long advence = 0x00FF629D;
long back = 0x00FFA857;
long stopp = 0x00FF02FD;
21、
long left = 0x00FF22DD;
long right = 0x00FFC23D;
IRrecv irrecv(RECV_PIN);
decode_results results;
void dump(decode_results
*results)
{ int count =
results->rawlen; if (results->decode_type == UNKNOWN){Serial.println("Could not decode message"); }
else{if(results->decod_type==NEC)Seri 22、al.print("Decoded NEC: "); } else if (results->decode_type ==SONY){Serial.print("Decoded SONY: "); }else if (results->decode_type == RC5){ Serial.print("Decoded RC5: "); } else if (results->decode_type == RC6){Serial.print("Decoded RC6: ");}
Serial.print(results->value, HEX) Serial.print(" (");Seri 23、al.print(resuls->bits, DEC); Serial.println("bits)"); } Serial.print("Raw("); Serial.print(count, DEC);Serial.print("): ");for (int i = 0; i < count; i++) {if ((i % 2) ==1)Serial.print(results->rawbuf[i]*USECPERTICK,DEC); }else{Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
}Serial.print 24、(" ");
} Serial.println(""); }
void setup()
{Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}int on = 0;
unsigned long last = millis();void(loop)
{ i(irrecv.decode(&results))}
if (millis() - last > 250) {on = !on;
digitalWrite(13, on ? HIGH :LOW);dump(&result)
i 25、f (results.value== ? ){}
}}
4.3避碰模塊程序
主程序
void loop()
{myservo.write(90); //測量
detection(); //測量角度
if(directionn == 2) //假如 directionn(方向) = 2(倒車)
{back(5); // 倒退
stopp(); //停止
while(1);
}if(directionn == 8)
{advance(2); }}
五、綜合設(shè)計(jì)與調(diào)試
5.1流程圖
26、開始
紅外信號
障礙物
路徑1
路徑2
終點(diǎn)
終點(diǎn)
開始
5.2軟件設(shè)計(jì)
#include 27、
const int SensorLeft = 2;
const int SensorMiddle= 4 ;
const int SensorRight = 5;
int SL; int SM;
int SR;
int inputPin = A0;
int outputPin =A1;
int Fspeedd = 0;
int directionn = 0;
Servo myservo;
int delay_time = 250;
int Fgo = 8;
int Bgo = 2;
int count=0;
int des=0;
int f= 28、0;
//******紅外控制部分********
long advence = 0x00FF629D;
long b = 0x00FFA857;
long s = 0x00FF02FD;
long l = 0x00FF22DD;
long r = 0x00FFC23D;
IRrecv irrecv(RECV_PIN);
decode_results results;
void dump(decode_results *results)
{int count = results->rawlen;
if (results->decode_type == UNKNOWN)
29、
{ Serial.println("Could not decode message"); }
else {if (results->decode_type == NEC){Serial.print("Decoded NEC: "); } else if (results->decode_type == SONY)
{ Serial.print("Decoded SONY: "); }else ifresults->decode_type == RC5)
{Serial.print("Decoded RC5: ");} else if (results->decode_type 30、 == RC6) {
Serial.print("Decoded RC6: ");}Serial.print(results->value, HEX); Serial.print(" (");
Serial.print(results->bits, DEC);Serial.println(" bits)");
} Serial.print("Raw (");
Serial.print(count, DEC);
Serial.print("): ");
for (int i = 0; i < count; i++)
{if ((i % 2) == 1)
{Seria 31、l.print(results->rawbuf[i]*USECPERTICK, DEC); }
else{Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC); } Serial.print(" ");}
Serial.println(""); }
int on = 0;
unsigned long last = millis();
void setup()
{Serial.begin(9600);
pinMode(MotorRight1, OUTPUT);
pinMode(MotorRight2, OUTPUT 32、);
pinMode(MotorLeft1, OUTPUT);
pinMode(MotorLeft2, OUTPUT);
pinMode(SensorLeft, INPUT);
pinMode(SensorMiddle, INPUT); pinMode(SensorRight, INPUT); pinMode(speedpin,OUTPUT);pinMode(speedpin1,OUTPUT);Serial.begin(9600);
irrecv.enableIRIn();
pinMode(inputPin, INPUT);
pinMode(outp 33、utPin, OUTPUT);
myservo.attach(3); }
void detection()
{ int delay_time = 250;
ask_pin_F();
if(Fspeedd <3 )
{ directionn =Bgo; }
else { directionn = Fgo; }}
void ask_pin_F()
{ myservo.write(90);
digitalWrite(outputPin, LOW);
delayMicroseconds(2);
digitalWrite(outputPin 34、, HIGH);
delayMicroseconds(10);
digitalWrite(outputPin, LOW); float Fdistance = pulseIn(inputPin, HIGH);
Fdistance= distance/5.8/10;
Fspeedd = Fdistance; }
void advance(int a)
{digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,HIGH);digitalWrite(MotorLeft1,LOW);digitalWrite(MotorL 35、eft2,HIGH);
delay(a*50); }
void left(int i)
{digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,HIGH);digitalWrite(MotorLeft1,LOW);digitalWrite(MotorLeft2,LOW); delay(i*30);
} void right(int c)
{digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,LOW);digitalWrite(MotorLeft1,LOW); 36、digitalWrite(MotorLeft2,HIGH);delay(c*30); }
void stopp(int d)
{digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,LOW);digitalWrite(MotorLeft1,LOW);digitalWrite(MotorLeft2,LOW); delay(d * 10);
}void back(int g)
{digitalWrite(MotorRight1,HIGH);digitalWrite(MotorRight2,LOW);
digitalWrite( 37、MotorLeft1,HIGH);digitalWrite(MotorLeft2,LOW); delay(g * 100);
} void re(int x)
{digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,HIGH);digitalWrite(MotorLeft1,HIGH);digitalWrite(MotorLeft2,LOW); delay(x * 25); }
void le(int h)
{digitalWrite(MotorRight1,HIGH);digitalWrite(MotorRig 38、ht2,LOW);digitalWrite(MotorLeft1,LOW);digitalWrite(MotorLeft2,HIGH); delay(h * 25); }
void loop()
{ analogWrite(speedpin,300);analogWrite(speedpin1,300);if (irrecv.decode(&results))
{if (millis() - last > 250)
{
on = !on;
digitalWrite(13, on ? HIGH : LOW);dump(&results); }
if (results 39、.value == advence )
{digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,HIGH);digitalWrite(MotorLeft1,LOW);digitalWrite(MotorLeft2,HIGH); des=3;
} if (results.value == b )
{digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,HIGH);digitalWrite(MotorLeft1,LOW);digitalWrite(MotorLeft2,HIGH 40、);
des=4;if (results.value == l )
{digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,HIGH);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,HIGH); des=5;} }
while(des!=0)
{myservo.write(90); detection();
if(directionn == 2){ f=1; des=des+2;le(20);}
if(f==0)
{ SL =digitalRe 41、ad(SensorLeft);
SMdigitalRead(SensorMiddle);SR=digitalRead(SensorRight);if (SM == HIGH)/
{if (SR == LOW & SL == HIGH) {left(1);
stopp(2);}
else if (SL == LOW & SR == HIGH)
{right(1); stopp(2); }else if(SL == HIGH & SR == HIGH )
{ if(count 42、 count=count+1;
f(count==des-1) {
le(12);
SL = digitalRead(SensorLeft); SM=digitalRead(SensorMiddle); SR=digitalRead(SensorRight);
}else if(count>=des) {
digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,LOW);digitalWrite(MotorLeft1,LOW);digitalWrite(MotorLeft2,LOW);delay(50000); 43、 } else advance(2) ; } else {advance(1); }}
if (SM==LOW)
{if(SR==LOW & SL==HIGH)
{left(1);stopp(2); }else if(SL==LOW & SR==HIGH)
{ right(1);stopp(2); } }
if((SL == LOW & SR == LOW & SM==LOW))
{ le(1);}}
if(f==1)
{SL = digitalRead(SensorLeft);SM =digitalRead(SensorMiddle)
SR=digit 44、alRead(SensorRight);
if (SM == HIGH) {
if (SR == LOW & SL == HIGH) { left(1);stopp(2) }
else if (SL == LOW & SR == HIGH) {right(1); stopp(2); else if(SL == HIGH & SR == HIGH ) { if(count 45、sorLeft);SM=digitalRead(SensorMiddle);SR=digitalRead(SensorRight); }
else if(count>=des)
{digitalWrite(MotorRight1,LOW);digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);digitalWrite(MotorLeft2,LOW); }else advance(2) ;else { advance(1);} }
if (SM==LOW)
{if(SR==LOW & SL==HIGH)
46、
{left(1);stopp(2);}
else if(SL==LOW & SR==HIGH)
{right(1);stopp(2);}}
if((SL == LOW & SR == LOW & SM==LOW))
{ re(1);}
}}}
六、總結(jié)
6.1遇到問題及解決辦法
1、 硬件問題
剛拿到手的器件,我以為都是好用的,然而并不是,只有經(jīng)過自己的實(shí)踐才知道是否好用。只有對自己的硬件充分了解知道自己的硬件性能才能少走歪路,才能將編相應(yīng)的程序結(jié)合自己的硬件完成任務(wù)。
舵機(jī)毀壞:舵機(jī)沒法轉(zhuǎn)彎,但是根據(jù)任務(wù),并不需要轉(zhuǎn)彎,故對任務(wù)沒影響;
PWM 47、口:單片機(jī)I/O口9、10、11PWM口在循跡程序中可用,但在避碰程序、紅外線程序中不能用。PWM不能用硬件性能不好,只能用更好的額軟件程序來彌補(bǔ)(難度大大增加)性能的缺失。
2、 軟件問題
軟件設(shè)計(jì)難度設(shè)計(jì)的增加問題是硬件問題性能不良帶來的。
小車運(yùn)行不穩(wěn):由于只能輸出高低電平,轉(zhuǎn)彎尾部擺動(dòng)大。用延時(shí)停止等到重新檢測后判斷重新執(zhí)行來保證調(diào)整實(shí)踐的適當(dāng)解決。
黑點(diǎn)檢測不穩(wěn):用延時(shí)檢測停止判斷。
轉(zhuǎn)彎容易掉頭:檢測到黑點(diǎn)后直行延時(shí)2ms,再轉(zhuǎn)彎這樣可以保證轉(zhuǎn)到規(guī)定路線上。
6.2個(gè)人感悟
這是課設(shè)分到的任務(wù)是基于ARDUINO的智能小車。在這兩周的學(xué)習(xí)與操作中學(xué)到了很多,不僅僅 48、是對ARDUINO單片機(jī)的初步了解(其實(shí)也沒怎么去了解,它不像51單片機(jī)好多函數(shù)需要自己編,這個(gè)是集成化的,方便靈活),更重要的是這個(gè)過程讓我意識到了一些非知識技能的技能。從我拿到硬件到完成任務(wù),這個(gè)過程其實(shí)是可以分步來的,第一組裝硬件;第二測試硬件;第三編軟件;最后調(diào)試。然而這個(gè)過程中會出現(xiàn)很多自己不期望的現(xiàn)象,這就需要去改,改的首先步驟是發(fā)現(xiàn)導(dǎo)致該現(xiàn)象問題所在,這是最根本也是最難的,很多情況就是盲調(diào),并沒有科學(xué)的方法,讓我意識到花時(shí)間去找問題與解決問題同等重要。
總之,通過這次課設(shè)我收獲最大的就是讓我意識到:根據(jù)現(xiàn)象用簡便的方法找到問題所在,才能根本解決問題,才能學(xué)到東西,發(fā)現(xiàn)問題也是一種技能。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)2圖形與幾何第7課時(shí)圖形的位置練習(xí)課件新人教版
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)2圖形與幾何第1課時(shí)圖形的認(rèn)識與測量1平面圖形的認(rèn)識練習(xí)課件新人教版
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時(shí)比和比例2作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊4比例1比例的意義和基本性質(zhì)第3課時(shí)解比例練習(xí)課件新人教版
- 2023年六年級數(shù)學(xué)下冊3圓柱與圓錐1圓柱第7課時(shí)圓柱的體積3作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊1負(fù)數(shù)第1課時(shí)負(fù)數(shù)的初步認(rèn)識作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)上冊期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級數(shù)學(xué)上冊期末豐收園作業(yè)課件蘇教版
- 2023年六年級數(shù)學(xué)上冊易錯(cuò)清單十二課件新人教版
- 標(biāo)準(zhǔn)工時(shí)講義
- 2021年一年級語文上冊第六單元知識要點(diǎn)習(xí)題課件新人教版
- 2022春一年級語文下冊課文5識字測評習(xí)題課件新人教版
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時(shí)數(shù)學(xué)思考1練習(xí)課件新人教版