Tải bản đầy đủ (.pptx) (15 trang)

MOBILE ROBOT LẬP TRÌNH CƠ BẢN SỬ DỤNG ARDUINO IDE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (164.54 KB, 15 trang )

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
}
+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 tên “Worksheet5_Ex1” trong thư mục
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 để thư viện cập nhật
thêm file dữ liệu)
+Chạy Arduino IDE. Chọn File > 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 <TimerOne.h>
void setup() {
//put your setup code here, to run once:
Serial.begin(9600); //initialize serial comm at 9600 baudrate
int frequency=1000000/1000; //running at 1000 Hz
Timer1.initialize(frequency); //set a timer of length 100000 microseconds
//attach the service routine here
Ngắt 1 mili giây
+Lưu 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
Timer1.attachInterrupt(oneMilisecondInterrupt);
}
void loop() {
//put your main code here, to run repeatedly:

}
int counter=0, oneMillisecondCnt=0;
void oneMilisecondInterrupt() {
oneMillisecondCnt++;
counter++;
Serial.println(counter);
}
}
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<4 ; i++) {
pinMode(LED[i],OUTPUT); //configure all LED pins as output
digitalWrite(LED[i],HIGH); //turn off all LED
}
}
void loop() {
//put your main code here, to run repeatedly:
for (int i=0; i<4; i++) {
digitalWrite(LED[i],LOW); //turn on all LED
delay(200); //delay for 0.2 second
digitalWrite(LED[i],HIGH); // turn off all LED
delay(200); // delay for 0.2 second

}
}
+Lưu 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

×