1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tài liệu ARDUINO MEGA 2560

104 19 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 104
Dung lượng 3,07 MB

Nội dung

Ví dụ: if(A > 50) { Thực hiện một nhiệm vụ nào đó; } Chương trình sẽ kiểm tra xem giá trị A nào đó có lớn hơn 50 không, nếu có thì nhiệm vụ bên trong cấu trúc if sẽ được thực hiện, nói cách khác, nếu biểu thức điều kiện đúng thì khối lệnh bên trong hai dấu ngoặc nhọn sẽ được thực hiện, còn nếu không thì chương trình sẽ bỏ qua các câu lệnh này. Trong một số trường hợp thì hai dấu ngoặc nhọn có thể bỏ đi, nếu biểu thức điểu kiện đúng thì câu lệnh ngay sau if sẽ được thực hiện, câu lệnh này định nghĩa bằng dấu chấm phẩy, và nó chỉ thực hiện một câu lệnh duy nhất này. Ví dụ: if ( x >120 ) digitalWrite(LEDpin,HIGH); Một số toán tử so sánh thường được dùng trong cấu trúc if: x == y (giá trị của x bằng giá trị của y) x != y (giá trị của x khác giá trị của y) x < y (giá trị của x nhỏ hơn giá trị của y) x > y (giá trị của x lớn hơn giá trị của y) x=y (giá trị của x lớn hơn hoặc bằng giá trị của y) Lưu ý khi sử dụng if với toán tử so sánh bằng ( == ), nếu bạn chỉ sử dụng một dấu bằng cho cấu trúc if, ví dụ if (x = 10) thì khi đó dấu bằng đơn này sẽ được hiểu là phép gán giá trị chứ không phải là toán tử so sánh nữa, khi đó giá trị 10 sẽ được gán cho biến x, có nghĩa là khi cấu trúc if hoạt động thì sẽ luôn ra kết quá là TRUE, và khi đó cấu trúc if của chúng ta sẽ bị hoạt động sai. - Cấu trúc if/else: Cấu trúc if/else là một cấu trúc điều khiển rẽ nhánh cao cấp hơn là cấu trúc if, nếu như cấu trúc if được gọi là cấu trúc if dạng thiếu thì cấu trúc if/else còn được gọi là cấu trúc if dạng đủ. Cấu trúc if / else giải quyết bài toán linh hoạt hơn là cấu trúc if. Cấu trúc if/else cho phép ta kiểm tra nhiều toán từ so sánh hơn.

ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI ARDUINO MEGA 2560 Hà Nội - 2016 LỜI NÓI ĐẦU Hiện với việc phát triển khoa học cơng nghệ ứng dụng vi điều khiển sống ngày nhiều, thị trường có nhiều dòng vi điều khiển khác nhau, hầu hết dịng vi điều khiển khó để lập trình u cầu người lập trình phải có lượng kiến thức sâu để lập trình chúng, điều gây khó khăn cho người tiếp xúc với lĩnh vực Dựa yếu tố đó, Arduino đời để khắc phục yếu tố trên, Arduino loai kit phát triển dựa dịng vi điều khiển có sẵn thị trường, nhà sản xuất tích hợp sẵn chức năng,được giới thiệu vào năm 2005, nhà thiết kế Arduino cố gắng mang đến phương thức dễ dàng, không tốn cho người yêu thích, sinh viên, giới chuyên nghiệp để tạo thiết bị có khả tương tác với môi trường thông qua cảm biến cấu chấp hành, ví dụ phổ biến cho người yêu thích bắt đầu bao gốm robot đơn giản, điều khiển nhiệt độ phát chuyển động…… làm việc với arduino bạn không cần lo lằng suy nghĩ nhiều phần cứng, đặc biệt arduino dễ lập trình, với trình dịch dễ sử dụng, ngơn ngữ lập trình đơn giản, arduino lựa chọn đắn cho người tiếp xúc với lính vực lập trình vi điểu khiển Dựa yếu tố chúng tơi viết sách với mục địch đưa người đọc đến với Arduino cách dễ dàng Nội dung sách tổng hợp kiến thức lĩnh vực lập trình Từ cấu trúc lệnh ngơn ngữ lập trình C, lưu đồ thuật tốn đến việc sử dụng cấu trúc vào lập trình Arduino, cách cài đặt trình dịch, driver, nạp code mô phần mềm mô Proteus Cuốn sách tập trung vào giới thiệu khối Arduino khối vào số (digital) khối vào tương tự (analog), ví dụ trình bày theo trình tự bước rõ ràng, từ việc phân tích đề bài, xây dừng mạch mơ phỏng, đến việc lập trình, giải thích code chạy thử, để người đọc dễ dàng hiểu tự xây dựng cho chương trình điều khiển với Arduino Trong sách có sai sót ko đáng có, chúng tơi mong nhận góp ý người đọc để sách hoàn thiện Chương I: Kiến thức ngơn ngữ lập trình C - Ngơn ngữ C ngơn ngữ lập trình bậc cao thơng dụng nay, đặc trưng dễ hiểu dễ lập trình dễ sử dụng nên C dùng nhiều lĩnh vực lập trình khác - Trong lĩnh vực lập trình vi điều khiển ngơn ngữ C ngơn ngữ phổ biến nhất, hầu hết loại vi điều khiển thị trường sử dụng ngơn ngữ C để lập trình, arduino - Vì để lập trình tốt Arduino xin giới thiệu chút thành phần lệnh lập trình ngơn ngữ C 1.1.Lưu đồ thuật toán: Lưu đồ thuật toán biểu đồ trình tự bước để tạo chương trình cụ thể, bảng đưa hình dạng ý nghĩa thành phần lưu đồ thuật tốn Ý nghĩa Hình dạng Dữ liệu vào ( Input) Xử lý (Process) Quyết định, điều kiện Luồng xử lý Gọi chương trình con, hàm Bắt đầu, kết thúc (Begin, end) Điểm kết nối Bảng 1.1 Hình dạng ý nghĩa thành phần lưu đồ thuật toán 1.2 Cấu trúc 1.2.1 Cấu trúc điều khiển ** Cấu trúc điều khiển cấu trúc dùng để điều khiển chương trình theo hướng khác nhau, cấu trúc cịn gọi cấu trúc điều khiển rẽ nhánh - Cấu trúc if: Là cấu trúc điều khiển rẽ nhánh, sử dụng với toán tử so sánh Nó kiểm tra xem điều kiện có đạt không Cấu trúc: if( < điều kiện> ) { Khối lệnh; } Lưu đồ thuật tốn: Hình 1.3.1 Lưu đồ thuật tốn cấu trúc if Ví dụ: if(A > 50) { Thực nhiệm vụ đó; } Chương trình kiểm tra xem giá trị A có lớn 50 khơng, có nhiệm vụ bên cấu trúc if thực hiện, nói cách khác, biểu thức điều kiện khối lệnh bên hai dấu ngoặc nhọn thực hiện, cịn khơng chương trình bỏ qua câu lệnh Trong số trường hợp hai dấu ngoặc nhọn bỏ đi, biểu thức điểu kiện câu lệnh sau if thực hiện, câu lệnh định nghĩa dấu chấm phẩy, thực câu lệnh Ví dụ: if ( x >120 ) digitalWrite(LEDpin,HIGH); Một số toán tử so sánh thường dùng cấu trúc if: x == y (giá trị x giá trị y) x != y (giá trị x khác giá trị y) xy (giá trị x lớn giá trị y) x=y (giá trị x lớn giá trị y) Lưu ý sử dụng if với toán tử so sánh ( == ), bạn sử dụng dấu cho cấu trúc if, ví dụ if (x = 10) dấu đơn hiểu phép gán giá trị tốn tử so sánh nữa, giá trị 10 gán cho biến x, có nghĩa cấu trúc if hoạt động ln kết TRUE, cấu trúc if bị hoạt động sai - Cấu trúc if/else: Cấu trúc if/else cấu trúc điều khiển rẽ nhánh cao cấp cấu trúc if, cấu trúc if gọi cấu trúc if dạng thiếu cấu trúc if/else cịn gọi cấu trúc if dạng đủ Cấu trúc if / else giải toán linh hoạt cấu trúc if Cấu trúc if/else cho phép ta kiểm tra nhiều toán từ so sánh Cấu trúc: if( 500) { Thực nhiệm vụ 1; } else { Thực nhiệm vụ 2; } Trong ví dụ này, giá trị A kiểm tra, nhiệm vụ số thực giá trị A lớn 500, nhiệm vụ lại, tức nhiệm vụ thực A có giá trị 500 nhỏ 500 Việc kiểm tra tính sai biểu thức cấu trúc if else thực liên tục tìm tốn tử so sánh đúng, câu lệnh tương ứng thực hiện, chương trình khỏi cấu trúc if else Ngoài việc sử dụng cấu trúc if else bình thường, ta cịn sử dụng cấu trúc theo cách khác, ví dụ: if ( A 1000) { Thực nhiệm vụ 2; } else { Thực nhiệm vụ 3; } Với cách này, ta kiểm tra nhiều toán tử so sánh khác nhau, ứng với tốn tử nhiệm vụ khác nhau, cấu trúc điều khiển linh hoạt nhiều so với cấu trúc if bình thường - Cấu trúc for: Cấu trúc for cấu trúc sử dụng để lặp lại khối lệnh dựa theo điều kiện cụ thể, cấu trúc thường sử dụng cho câu lệnh với tính chật lặp lại nhiều lần Trong cấu trúc lặp for có phần: for( khởi tạo; điều kiện ; biến gia tăng ) { Khối lệnh; } Phần khởi tạo thực xẩy lần nhất, lần chạy vòng lặp, điều kiện kiểm tra, điều kiện khối lệnh biến gia tăng thực hiện, điều kiện sai vịng lặp kết thúc Lưu đồ thuật tốn: Hình 1.2.3 Lưu đồ thuật tốn cấu trúc for Ví dụ vòng lặp for arduino: for( int i = 0; i ) { case < giá trị 1> : Khối lệnh 1; break; case < giá trị 2> : Khối lệnh 2; break; … case < giá trị n> : Khối lệnh n; break; } Lưu đồ thuật toán: Hình 1.2.4 Lưu đồ thuật tốn lệnh switch Từ khóa break cấu trúc switch case quan trọng, xuất giá trị case, khơng có từ khóa break cấu truc switch case tiếp tục thực biểu thức gặp break kết thúc cấu trúc swith case - Cấu trúc while: while vịng lặp liên tiếp, thực việc lặp lại biểu thức bên dấu ngoặc đơn trở nên sai Cấu trúc: Bước 1: Phân tích đề bài: Quang trở loại "vật liệu" điện tử hay gặp sử dụng mạch cảm biến ánh sáng Có thể hiểu cách dễ dàng rằng, quang trở loại ĐIỆN TRỞ có điện trở thay đổi theo cường độ ánh sáng Nếu đặt môi trường có ánh sáng, có bóng râm tối điện trở quang trở tăng cao cịn đặt ngồi nắng, nơi có ánh sáng điện trở giảm Qua viết này, ta học đươc cách xây dựng cảm biến ánh sáng sử dụng quang trở dựa nguyên lý hoạt động lý thú nó! Sau viết chương trình đọc tín hiệu từ quang trở để điều khiển led Về việc đọc giá trị quang trở không khác biệt so với việc đọc giá trị biến trở Bước 2: Xây dựng sơ đồ mạch: Các linh kiện cần có: Arduino mega 2560, quang trở( LDR ), led Ta nối led vào chân số 13 thông qua điện trở 220 ohm, quang trở nối đầu vào dương nguồn, đầu lại nối với điện trở nối xuống âm nguồn, tín hiệu vào chân A0 lấy điện trở quang trở, việc có thêm điện trở để có mạch phân áp Lưu ý phải nối dương nguồn âm nguồn vào chân 5v GND Arduino khơng mạch mơ khơng chạy Hình 3.24 Mạch điều khiển led quang trở 89 Bước 3: Lắp mạch: Bước 3: Xây dựng lưu đồ thuật toán: 90 Hình 3.25 Lưu đồ thuật tốn điều khiển led quang trở Bước 4: Viết code dựa vào lưu đồ thuật toán: const int chanAnalog = A0; const int chanLed = 13; int GiatriIn,GiatriOut ; void setup() { pinMode(chanLed,OUTPUT); pinMode(chanAnalog,INPUT); GiatriIn = 0; GiatriOut = 0; } void loop() { GiatriIn = analogRead(chanAnalog); GiatriOut = map(GiatriIn,0,1023,0,255); if( GiatriOut < 50 ) { digitalWrite(chanLed,HIGH); } else { digitalWrite(chanLed,LOW); } } * Giải thích chương trình: Với này, việc đọc giá trị analog từ quang trở khơng có khác biệt so với đọc giá trị từ biến trở, khai báo chân cho quang trở, đọc giá trị từ quang trở với hàm analogRead, chia lại giá trị với lệnh map, để điều khiển led sáng tắt dựa vào quang trở cần sử dụng hàm if, giá trị đọc nhỏ giá trị ta bật led, cịn ngược lại ta tắt led Bước 5: Kiểm tra, chạy thử sửa lỗi: Nhấn nút complie sau nạp code cho board proteus nhấn nút play để thử 91 * Mục tiêu cần nắm: - Hiểu, nắm trình tự bước thực toán - Biết sử dụng hàm pinMode, analogRead, analogWrite, map… - Hiểu thực toán với analog, đọc giá trị analog quang trở sử dụng quang trở để điều khiển led 3.3.4 Điều khiển tốc độ động chiều biến trở Đề bài: Điều khiển tốc độ động chiều biến trở Bước 1: Phân tích đề bài: Điều khiển động vấn đề quan trọng với việc lập trình, hầu hết thực tế thứ điều khiển động thiết bị công suất không led, cần biết cách để điều khiển động cấu chấp hành khác Để điều khiển động chiều với arduino điều khiển chúng giống điều khiển độ sáng led biến trở với việc dung hàm đọc giá trị analogRead chân biến trở xuất giá trị analogWrite chân PWM Bước 2: Xây dựng sơ đồ mạch: Đối với mạch mơ phịng nối trực tiếp chân động vào chân Arduino, thực tế khơng phép làm gây hỏng Board arduino, thực tế cần thêm mạch công suất, Driver điều khiển Fet để chịu dòng điện động Ở sử dụng Fet IRF540, Mạch nối hình 92 Hình 3.26 Mạch điều khiển tốc độ động chiều biến trở Bước 3: Lắp mạch: Bước 4: Xây dựng lưu đồ thuật tốn: 93 Hình 3.27 Lưu đồ thuật tốn điều khiển tốc độ động chiều biến trở Bước 5: Viết code dựa vào lưu đồ thuật toán: const int chanAnalog = A0; const int chanDC = 13; int GiatriIn,GiatriOut ; void setup() { pinMode(chanDC,OUTPUT); GiatriIn = 0; GiatriOut = 0; pinMode(chanAnalog,INPUT); } void loop() { GiatriIn = analogRead(chanAnalog); GiatriOut = map(GiatriIn,0,1023,0,255); analogWrite(chanDC,GiatriOut); } * Giải thích chương trình: Chương trình điều khiển tốc độ động thực chất giống với chương trình điều khiển độ sáng led, khác đối tượng điều khiển động Led Bước 6: Kiểm tra, chạy thử sửa lỗi: Nhấn nút complie sau nạp code cho board proteus nhấn nút play để thử * Mục tiêu cần nắm: - Hiểu, nắm trình tự bước thực toán - Biết sử dụng hàm pinMode, analogRead, analogWrite, map… - Hiểu thực toán với analog, đọc giá trị analog biến trở - Hiểu cách làm việc điều khiển tốc độ động điện chiều biến trở 94 3.3.5 Điều khiển động RC servo biến trở RC Servo gì? Trước tiên giới thiệu qua servo Servo loại động đặc biệt Không giống động thông thường cấp nguồn vào quay liên tục, servo quay điều khiển (bằng xung PPM) với góc quay nằm khoảng từ đến 180 độ Servo thường có dây, Một dây VCC ( màu đỏ ), dây GND ( màu đen nâu ), dây tín hiệu( Màu vàng) Để điều khiển servo ta cấp vào chân tín hiệu xung có tần số 100Hz, để điều khiển góc quay ta băm xung với độ rộng khác Điều khiển servo với arduino nào, với arduino có thư viện viết sẵn Trong thư viện người viết viết sẵn hàm để điều khiển servo, cần khai báo thư viện gọi hàm điều khiển Một số hình ảnh Servo: Hình 3.28 Động RC servo Đề bài: Điều khiển động RC servo biến trở Bước 1: Phân tích đề bài: Điều khiển động RC Servo biến trở có nghĩa ta đọc giá trị analog từ biến trở, từ giá trị dùng để điều khiển góc quay RC Servo, ta quay góc biến trở servo quay góc tương tự, để làm điều ta đọc giá trị biến trở chia lại giá trị cho phù hợp với góc quay servo dùng giá trị để điều khiển servo Bước 2: Xây dựng sơ đồ mạch: Các linh kiện : Arduino mega2560, biến trở ( POT-Hg), Servo ( PWM Servo) 95 Hình 3.29 Mạch điều khiển động RC servo biến trở Bước 3: Lắp mạch: 96 Bước 4: Xây dựng lưu đồ thuật tốn: Hình 3.30 Lưu đồ thuật toán điều khiển động RC servo biến trở Bước 5: Viết code dựa vào lưu đồ thuật toán: #include Servo myservo; const int chanAnalog = A0; int val; void setup() { myservo.attach(9); pinMode( chanAnalog,INPUT); } void loop() { val = analogRead(potpin); val = map(val, 0, 1023, 0, 180); myservo.write(val) ; delay(15); } 97 * Giải thích chương trình:Việc ta khai báo thư viện có sẵn cho servo Servo.h Trong thư viện người viết viết sẵn cho hàm để điều khiển servo, cần gọi hàm sử dụng đơn gián Tiếp theo gắn tên cho servo với lệnh Servo myservo; đó: Servo cú pháp lệnh, myservo tên mà ta gắn cho servo, thay đổi tên tùy ý thêm tên khác vào muốn điều khiển nhiều servo lúc Sau ta khai báo chân cho biến trở chân A0, biến val để ghi giá trị đọc từ biến trở Trong phần setup ta khai báo chân tín hiệu servo chân số với cú pháp myservo.attach(9); khai báo thêm chân biến trở đầu vào liệu Trong vòng lặp ta sử dụng lệnh quen thuộc analogRead để đọc giá trị từ biến trở Tiếp theo dùng lệnh map để đưa giá trị đọc từ biến trở từ đến 1023 giá trị từ đến 180 Giá trị từ đến 180 góc quay servo, ta quay biến trở servo quay theo góc tương ứng Cuối để điều khiển servo quay ta dùng lệnh myservo.write(val) val góc quay, val giá trị đọc từ biến trở chia lại, giá trị val khoảng từ đến 180 Bước 6: Kiểm tra, chạy thử sửa lỗi: Nhấn nút complie sau nạp code cho board proteus nhấn nút play để thử * Mục tiêu cần nắm: - Hiểu, nắm trình tự bước thực tốn - Biết sử dụng hàm pinMode, analogRead, analogWrite, map… - Hiểu cấu tạo nguyên lý hoạt động động RC Servo - Hiểu thực toán với analog, đọc giá trị analog biến trở - Có thể sử dụng biến trở để điều khiển động RC Servo 98 TÀI LIỆU THAM KHẢO [1] Ngô Trung Việt - Ngôn ngữ lập trình C C++ - Bài giảng- Bài tập - Lời giải mẫu NXB giao thông vận tải 1995 [2] Viện tin học - Ngơn ngữ lập trình C Hà nội 1990 [3] http://www.arduino.cc/ 99 MỤC LỤC LỜI NÓI ĐẦU Error! Bookmark not defined Chương I: Kiến thức ngơn ngữ lập trình C Error! Bookmark not defined 1.1 Lưu đồ thuật toán Error! Bookmark not defined 1.2 Biến Error! Bookmark not defined 1.3 Biểu thức phép toán Error! Bookmark not defined 1.3.1 Biểu thức Error! Bookmark not defined 1.3.2 Lệnh gán biểu thức Error! Bookmark not defined 1.3.3 Các phép toán số học Error! Bookmark not defined 1.3.4 Các phép toán quan hệ logic Error! Bookmark not defined 1.3.5 Phép toán tăng giảm Error! Bookmark not defined 1.3.6 Thứ tự ưu tiên phép toán Error! Bookmark not defined 1.3.7 Chuyển đổi kiểu giá trị Error! Bookmark not defined 1.4 Các lệnh bản, cấu trúc rẽ nhánh có điều kiện Error! Bookmark not defined 1.4.1 Lệnh if Error! Bookmark not defined 1.4.2 Lệnh for ( Cấu trúc lặp ) Error! Bookmark not defined 1.4.3 Lệnh while Error! Bookmark not defined 1.4.4 Lệnh do…while Error! Bookmark not defined 1.4.5 Lệnh switch Error! Bookmark not defined Chương II Giới thiệu sơ lược Arduino Mega 2560 Error! Bookmark not defined 2.1 Giới thiệu chung Error! Bookmark not defined 2.2 Phần mềm biên dịch Error! Bookmark not defined 2.3 Phần mềm mô Error! Bookmark not defined 2.4 Làm quen với trình dịch arduino Error! Bookmark not defined 2.4.1 Thanh Toolbar Arduino IDE Error! Bookmark not defined 2.4.2 Arduino IDE menu gồm tùy chọn Error! Bookmark not defined Chương III Một số chương trình thực Arduino 46 3.1 Các bước xây dựng toán 46 3.2 Khối vào số 46 3.2.1 Điều khiển led đơn 47 3.2.2 Điều khiển led nút bấm 56 3.2.3 Điều khiển led nút bấm nhấn lần thứ led sáng, lần thứ hai led tắt 59 100 3.2.4 Điều khiển led nút bấm nhấn lần thứ led sáng, lần thứ hai led tắt, có chống nhiễu 64 3.2.5 Điều khiển led đơn 68 3.2.6 Điều khiển led đôi 74 3.2.7 Đếm khiện hiển thị led 78 3.3 Khối vào tương tự Arduino Mega2560 82 3.3.1 Điều khiển led biến trở 82 3.3.2 Điều khiển led nháy biến trở 85 3.3.3 Điều khiển led quang trở 88 3.3.4 Điều khiển tốc độ động chiều biến trở 92 3.3.5 Điều khiển động RC servo biến trở 95 TÀI LIỆU THAM KHẢO 99 101 TÀI LIỆU THAM KHẢO 102 MỤC LỤC 103 ... nguồn… - Một số thông tin arduino mega2 560: 25 Hình 2.1 Các thơng số cảu arduino mega 2560 Hình 2.2 Hình ảnh thực tế arduino mega2 560 - Một số lưu ý sử dụng Kit Arduino Mega2 560: Có - Nguồn vào cho... 1.1V board có sử dụng Atmega328 2.56V Atmega8 35 -INTERNAL1V1 : Mức điện áp chọn 1.1V ( với Arduino mega 2560) - INTERNAL2V56 : mức điện áp chọn 2.56V ( với Arduino mega 2560) - EXTERNAL : mức... khối phần cứng Arduino mega 2560: + Số 1: Jack cắm USB để nạp chương trình cho arduino + Số 8: Jack cắm nguồn cho Arduino + Số 2: Các chân PWM Arduino + Số 3: Các chân giao tiếp UART Arduino + Số

Ngày đăng: 14/04/2022, 06:51

TỪ KHÓA LIÊN QUAN

w