Presentation is loading. Please wait.

Presentation is loading. Please wait.

機 器 車 介 紹 & 實做.

Similar presentations


Presentation on theme: "機 器 車 介 紹 & 實做."— Presentation transcript:

1 機 器 車 介 紹 & 實做

2 使用軟體 arduino

3 環境安裝 控制台>裝置管理員 >更新驅動程式
C:\arduino windows\arduino-1.0.3\drivers

4

5

6

7 資料型態(變數)

8 常用函數

9 測試 void setup(){ Serial.begin(9600); } void loop(){
delay(1000);

10

11

12 腳位說明

13 LED 閃爍

14 int ledPin1=9; int ledPin2=10; void setup(){ pinMode(ledPin1,OUTPUT); pinMode(ledPin2,OUTPUT); pinMode(ledPin3,OUTPUT); } void loop(){ digitalWrite(ledPin1,HIGH); delay(500); digitalWrite(ledPin1,LOW); digitalWrite(ledPin2,HIGH); digitalWrite(ledPin2,LOW);

15 練習 請做出led同時閃爍

16 陣列(led右移) int ledpin[3]={10,9,8}; int j=0; int i=0; void setup(){
for(i=0;i<4;i++){ pinMode(ledpin[i],OUTPUT); } void loop() { for(j=0;j<4;j++){ digitalWrite(ledpin[j],HIGH); delay(500); digitalWrite(ledpin[j],LOW);

17 練習 陣列(led左移)

18 馬達控制 int servoPin1=12; //設定servoMotor1由12腳位控制 void setup(){
pinMode(servoPin1,OUTPUT); //12腳位為輸出 } void loop(){ for (int i=0;i<=120;i++){ //正向旋轉約三秒 digitalWrite(servoPin1,HIGH); delayMicroseconds(1300); digitalWrite(servoPin1,LOW); delay(20); } for (int i=0;i<=40;i++){ //靜止約一秒 delayMicroseconds(1500); for (int i=0;i<=120;i++){ //反向旋轉約三秒 delayMicroseconds(1700); delay(20); } } 馬達控制

19

20 車子往前 int servoPin1=13; //設定servoMotor1由12腳位控制
void setup(){ pinMode(servoPin1,OUTPUT); //設定12腳位為輸出 pinMode(servoPin2,OUTPUT); //設定13腳位為輸出 } void loop(){ digitalWrite(servoPin1,HIGH); delayMicroseconds(1300); digitalWrite(servoPin1,LOW); delay(20); digitalWrite(servoPin2,HIGH); delayMicroseconds(1700); digitalWrite(servoPin2,LOW); 車子往前

21 練習 試著做出右轉與左轉

22 這是右轉 for (int i=0;i<=40;i++){ //(這段程式執行40次大概1秒多)
digitalWrite(servoPin1,HIGH); delayMicroseconds(1300); digitalWrite(servoPin1,LOW); delay(20); digitalWrite(servoPin2,HIGH); digitalWrite(servoPin2,LOW);

23

24

25

26 鍵盤控制 #include <Servo.h> Servo servo1; Servo servo2; void setup()
{ servo1.attach(12); servo2.attach(13); Serial.begin(9600); } void loop() char c; if (Serial.available () > 0) //判斷串列阜是否有資料傳入 c = Serial.read(); // 讀取串列阜資料

27 switch (c) { case '1': forward(400); //呼叫前進的副程式 break; case '2': trunLeft(400); //呼叫左轉的副程式 case '3': trunRight(400); //呼叫右轉的副程式 case '4': backward(400); //呼叫後退的副程式 case '5': bestop(400); //呼叫停止的副程式 }

28 void forward(int time){ //前進的副程式
servo1.write(1300); servo2.write(1700); delay(time); servo1.write(1500); servo2.write(1500); } void trunLeft(int time){ servo1.write(1700); void trunRight(int time){ //右轉的副程式 servo2.write(1300); void backward(int time){ //後退的副程式 servo1.write(1700); servo2.write(1300); delay(time); servo1.write(1500); servo2.write(1500); } void bestop(int time){ //停止的副程式 servo2.write(1500); delay(time); }

29

30

31

32 //光敏電阻測試程式 int photoresistorPin1=10; //設定photoresistor1腳位 int photoresistorPin2=9; //設photoresistor2腳位 int x; int y; void setup(){ pinMode(photoresistorPin1,INPUT); //設定6腳位為輸入 pinMode(photoresistorPin2,INPUT); //設定2腳位為輸入 Serial.begin(9600); } void loop(){ Serial.println("Photoresistor States"); x=digitalRead(photoresistorPin1); //讀取左邊光敏電阻 y=digitalRead(photoresistorPin2); //讀取右邊光敏電阻 Serial.print("P6="); //顯示光敏電阻狀態至螢幕 Serial.println(x,BIN); Serial.print("P2="); Serial.println(y,BIN); delay(1000);}

33 光敏當開關讓車子前進 #include <Servo.h> // 引用 Servo Library
Servo servo1; // 建立Servo 物件 Servo servo2; int photoresistorPin1=2; //設定photoresistor1腳位 int photoresistorPin2=11; //設photoresistor2腳位 int x; int y; void setup(){ pinMode(photoresistorPin1,INPUT); //設定6腳位為輸入 pinMode(photoresistorPin2,INPUT); //設定2腳位為輸入 servo1.attach(13); servo2.attach(12); Serial.begin(9600); } void loop(){ Serial.println("Photoresistor States"); x=digitalRead(photoresistorPin1); //讀取左邊光敏電阻 y=digitalRead(photoresistorPin2); //讀取右邊光敏電阻 Serial.print("P6="); //顯示光敏電阻狀態至螢幕 Serial.println(x,BIN); Serial.print("P2="); Serial.println(y,BIN); delay(100);

34 int forward(){ //前進的副程式
servo1.write(1300); servo2.write(1700); delay(1000); } int trunLeft(){ //左轉副程式 servo1.write(1700); delay(400); } int trunRight(){ //右轉的副程式 servo2.write(1300); delay(400); } int stop(){ //後退的副程式 servo1.write(1500); servo2.write(1500); delay(1000); } if (x==1&y==1 ){ forward(); } else if(y==0&x==1){ trunLeft(); else if(y==1&x==0){ trunRight(); else{ stop();

35 觸鬚碰撞

36 int whiskerPin1=9; int whiskerPin2=5; int x; int y; void setup(){ pinMode(whiskerPin1,INPUT); pinMode(whiskerPin2,INPUT); Serial.begin(9600); } void loop(){ Serial.println("whisker States"); x=digitalRead(whiskerPin1); y=digitalRead(whiskerPin2); Serial.print("P9="); Serial.println(x,BIN); Serial.print("P5="); Serial.println(y,BIN); delay(1000);}

37 挑戰! 參考用光敏電阻讓車子前進的例子 1.車子在沒撞到東西前會不斷前進 1.做出撞到右邊觸角後,後退一秒往右轉
2.做出撞到左邊觸角後,後退一秒往左轉 3.兩邊觸角都撞到停止移動

38 #include <Servo.h> // 引用 Servo Library
Servo servo1; // 建立Servo 物件 Servo servo2; int whiskerPin1=9; int whiskerPin2=5; int x; int y; void setup(){ pinMode(whiskerPin1,INPUT); pinMode(whiskerPin2,INPUT); servo1.attach(13); servo2.attach(12); Serial.begin(9600); } void loop(){ Serial.println("whisker States"); x=digitalRead(whiskerPin1); y=digitalRead(whiskerPin2); Serial.print("P9="); Serial.println(x,BIN); Serial.print("P5="); Serial.println(y,BIN); delay(10); if (x==1&y==1 ){ forward(); } else if(y==0&x==1){ backward(); trunRight(); else if(y==1&x==0){ trunLeft(); else{ stop();

39 int forward(){ //前進的副程式
servo1.write(1300); servo2.write(1700); delay(1000); } int trunLeft(){ //左轉副程式 servo1.write(1700); delay(900); } int trunRight(){ //右轉的副程式 servo2.write(1300); delay(900); } int backward(){ //後退的副程式 delay(1000); } int stop(){ //後退的副程式 servo1.write(1500); servo2.write(1500);


Download ppt "機 器 車 介 紹 & 實做."

Similar presentations


Ads by Google