Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
137 KB
Nội dung
Mobile Robot Lập trình cơ bản sử dụng Arduino IDE Trình bày bởi: Nguyễn Xuân Hiếu Giảng viên Bộ môn Hệ thống điện Đại học Nông nghiệp Hà Nội Tháng 11-2013 First Arduino Program 1.Mục tiêu: Kết thúc phần này, học viên có thể: +Định nghĩa các chân số là đầu vào hay đầu ra +Đưa tín hiệu số đầu ra lên cao hay xuống thấp +Nhận dữ liệu đầu vào số +Nạp xuất chương trình bởi Arduino 2.Bước lập trình +Chạy chương trình Arduino IDE, theo mã lệnh sau: void setup() { //put your setup code here, to run once: pinMode(13,OUTPUT); // configure pin 13 as output, LED5 (LED on the right) pinMode(2,INPUT); //configure pin 2 as input, SW2 (push button on the right) } void loop() { //put your main code here, to run repeatedly: if (digitalRead(2)==HIGH) {//if push button is not pressed, button read as high digitalWrite(13,HIGH); //turn off LED5 if push button is not pressed } else { //else, button is pressed digitalWrite(13,LOW); //turn on LED5 } } +Tạo thư mục tên là “MobileRobot” trong “My document/arduino/ ”, lưu chương trình này với tên là “Worksheet1” trong thư mục vừa lập +Xuât chương trình đến mobile robot. Quan sát tín hiệu của đèn LED bên phải +Kiểm tra đèn LED của bạn bằng cách bật tât cả các đèn LED lên (nhớ định nghĩa các chân là đầu ra) 3.Luyện tập +Thay đổi chương trình; bật đèn LED2 khi bấm nút SW3. Lưu chương trình này với tên “Worksheet1_EX1” trong thư mục MobileRobot + Viết chương trình mới, LED2 sẽ tắt khoảng 5 lần trong thời gian 200 mili giây nếu bấm nút SW3. Lưu chương trình này với tên “Worksheet1_EX2” trong thư mục MobileRobot Đọc dữ liệu sensor 1.Mục tiêu: Kết thúc phần này, học sinh có thể: +Mô tả đầu tín hiệu tương tự làm đầu vào +Đọc dữ liệu tương tự và bật đèn LED căn cứ vào tín hiệu tương tự +Xuất chương trình vào Arduino 2.Bước thực hiện: +Chạy chương trình trong Arduino theo các câu lệnh sau: int sensepin = A6; int LED2=A3, LED3=A1, LED4=4, LED5=13; void setup() { //put your setup code here, to run once: pinMode(LED2,OUTPUT); // configure pin A3 as output, LED2 pinMode(LED3,OUTPUT); //configure pin A1 as output, LED3 pinMode(LED4,OUTPUT); // configure pin 4 as output, LED4 pinMode(LED5,OUTPUT); //configure pin 13 as output, LED5 pinMode(sensepin,INPUT); //configure pin A6 as input, sensor1 } void loop() { //put your main code here, to run repeatedly: int sensorData=analogRead(sensepin); //read sensor1 (pin A6) and store //then in variable name "SensorData" int ledLevel=map(sensorData, 0, 512, 0, 4); //map the sensorData then store // in ledLevel //turn on Led according to sensor level if (ledLevel==0) { digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); } +Lưu chương trình này với tên “Worksheet2” trong thư mục MobileRobot +Xuât chương trình sang mobile robot. Chạm vào Sensor SEN1 và quan sát các đèn LED +Lặp lại chương trình bằng cách sử dụng các sensor SEN2, SEN3 và SEN4 3.Luyện tập: +Viết chương trình để bật đèn LED5 nếu sensor SEN1 lớn hơn 128. Lưu chương trình với tên “Worksheet2_Ex1” trong thư mục MobileRobot +Thay đổi chương trình trên, bật đèn LED2, LED3 và LED4 bằng cách sử dụng các sensor SEN2, SEN3, và SEN4. Lưu chương trình với tên “Worksheet2_Ex2” trong thư mục MobileRobot else if (ledLevel==1) { digitalWrite(LED2,LOW); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); } else if (ledLevel==2) { digitalWrite(LED2,HIGH); digitalWrite(LED3,LOW); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); } else if (ledLevel==3) { digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,LOW); digitalWrite(LED5,HIGH); } else if (ledLevel==4) { digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,LOW); } } Giao tiếp nối tiếp 1.Mục tiêu: +Cho giá trị ban đầu của giao thức nối tiếp +Đưa văn bản và hiển thị lên màn hình nối tiếp +Xuất chương trình trên Arduino 2.Thứ tự thực hiện: +Chạy chương trình trên Arduino theo mã lệnh sau: void setup() { //put your setup code here, to run once: Serial.begin(9600); // initialize serial comm at 9600 baud rate } int number=0; void loop() { //put your main code here, to run repeatedly: Serial.print("The number is"); //print on screen Serial.println(number); //print the number with line feed delay(500); //delay 500 ms number++; //increment by 1 } +Lưu chương trình trên với tên “Worksheet3” trong thư mục MobileRobot +Xuất chương trình này ra Robot +Chọn Tools > Serial Monitor +Quan sát đoạn văn bản được hiển thị trên cổng nối tiếp (màn hình) 3.Luyện tập: +Viết chương trình thực hiện việc đếm từ 0 đến 100 và hiển thị trên cổng nối tiếp. Ví dụ: Lưu chương trình này với tên “Worksheet3_Ex1” trong thư mục MobileRobot One Two Three Điều khiển Mobile Robot từ máy tính 1.Mục tiêu Kết thúc phần này, học sinh có thể: +Chọn giá trị ban đầu cho giao tiếp nối tiếp +Điều khiển LED2 từ máy tính +Xuất chương trình ra Arduino 2.Thứ tự +Chạy Arduino IDE theo mã lệnh sau: //this program use computer keyboard to turn on or off LED //press number 1 to turn on LED //press number 0 to turn off LED int ledPin=A3; void setup() { //put your setup code here, to run once: pinMode(ledPin,OUTPUT); // configure pin A3 as output Serial.begin(9600); } void loop() { //put your main code here, to run repeatedly: while (Serial.available()==0); //wait for keyboard press int val=Serial.read()-'0'; //get the number being pressed +Lưu chương trình trên dưới tên “Worksheet4” trong thư mục MobileRobot +Xuất chương trình ra mobile robot +Chọn Tools > Serial Monitor +Gửi ký tự “1” và quan sát LED2, gửi ký tự “0” và lại quan sát LED2 3.Luyện tập Thay đổi chương trình ở trên sử dụng các giả thiết sau: a.Bật LED2 nếu nhận được ký tự “1” b.Bật LED3 nếu nhận được ký tự “2” c.Bật LED4 nếu nhận được ký tự “3” d.Bật LED5 nếu nhận được ký tự “4” e.Tắt tất cả các đèn nếu nhận được ký tự “0” Lưu chương trình với tên “Worksheet4_Ex1” trong thư mục MobileRobot if (val==1) { //if key '1' is pressed, tunr on LED digitalWrite(ledPin,LOW); Serial.println("The LED is ON"); } else if (val==0) { //if key '0' is pressed, turn off LED digitalWrite(ledPin,HIGH); Serial.println("The LED is OFF"); } else { Serial.println("Invalid input"); //if any other key press, ignore Serial.flush(); //Flushes the buffer of incoming serial data } } Hiển thị dữ liệu sensor trên màn hình 1.Mục tiêu Kết thúc phần này, học viên có thể: +Chọn giá trị ban đầu cho giao tiếp nối tiếp +Gửi đoạn văn bản và hiển thị nó trên màn hình nối tiếp Xuất chương trình trên Arrduino 2.Thứ tự +Chạy chương trình trên Arduino theo mã lệnh sau: void setup() { //put your main code here, to run once: Serial.begin(9600); //initialize serial comm at 9600 baudrate pinMode(A6,INPUT); //configure pin A6 as input, sensor1 (sensor on the right) } void loop() { //put your main code here, to run repeatedly: int val=analogRead(A6); //read sensor (pin A6) and store then in val; Serial.println(val); //print the sensor data on computer screen delay(250); //delay for 0.25 second } [...]... chương trình lại dưới tên “Worksheet7” trong thư mục MobileRobot +Xuất chương trình đến mobile robot 3.Luyện tập +Sử dụng dãy để cài đặt thông số ban đầu cho chân sensor Lưu chương trình dưới tên “Worksheet7_Ex1” trong thư mục MobileRobot +Thay đổi chương trình trên để hiển thị dữ liệu của tất cả các sensor trên màn hình nối tiếp Lưu chương trình lại dưới tên “Worksheet7_Ex2” trong thư mục MobileRobot... chương trình trên với tên “Worksheet6” trong thư mục MobileRobot +Xuất chương trình ra mobile robot +Chọn Tools > Serial Monitor +Quan sát đoạn văn bản hiển thị trên cổng nối tiếp 3.Luyện tập +Viết chương trình đếm từ 0 đến 100 và hiển thị trên cổng nối tiếp (màn hình) nhưng cần hiển thị từ tiếng anh, ví dụ: One Two Three Lưu chương trình này với tên “Worksheet6_Ex1” trong thư mục MobileRobot Sử dụng. ..+Lưu chương trình với tên “Worksheet5” trong thư mục MobileRobot +Xuất chương trình ra mobile robot +Chọn Tools > Serial Monitor +Đặt robot lên rãnh, di chuyển nó quanh đường trắng và quan sát đoạn văn bản hiển thị trên cổng nối tiếp +Cũng có thể hiển thị thông tin với dữ liệu của sensor khác 3.Luyện tập +Viết chương trình hiển thị dữ liệu của tất cả các sensor trên màn hình Lưu chương trình này với... MobileRobot Ngắt 1 mili giây 1.Mục tiêu Kết thúc phần này, học viên có thể: +Chọn giá trị ban đầu cho giao tiếp nối tiếp +Chọn ngắt trong thời gian là 1 mili giây +Xuất chương trình trên Arduino +Hiển thị đoạn văn bản trên cổng nối tiếp (màn hình) 2.Thứ tự +Download Timer1.zip từ trang “ ” +Giải nén và lưu vào thư mục trong “My document /arduino/ libraries/ ” (Cần khởi động lại chương trình arduino ide. .. tên “Worksheet6_Ex1” trong thư mục MobileRobot Sử dụng dãy 1.Mục tiêu Kết thúc phần này, học viên có thể: +Chọn giá trị ban đầu cho tất cả các chân đầu ra cho đèn LED sử dụng dãy +Xuất chương trình trên arduino 2.Thứ tự +Chạy Arduino IDE, theo mã lệnh sau đây: byte LED[ ]={A3, A1, 4, 13}; //led pin void setup() { //put your setup code here, to run once: for (int i=0; i Examples > 01.Basics > BareMinimum Chọn Sketch>Import Library >TimerOne_v9 +Sử dụng mã lệnh sau: //this is a test program on interrupt //and display counter on terminal #include void setup() { //put your setup code . (ledLevel==1) { digitalWrite(LED2,LOW); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); } else if (ledLevel==2) { digitalWrite(LED2,HIGH); digitalWrite(LED3,LOW); . main code here, to run repeatedly: int val=analogRead (A6 ); //read sensor (pin A6 ) and store then in val; Serial.println(val); //print the sensor data on computer screen delay(250); //delay. digitalWrite(LED3,LOW); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); } else if (ledLevel==3) { digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,LOW); digitalWrite(LED5,HIGH);