Đề tài có ý nghĩa như những bước đầu chập chững tiến lên ngành công nghiệp nghiên cứu Robot đang còn yếu của nước ta, góp phần làm “điểm tựa” cho các thế hệ sau tiến lên những nấc thang cao hơn của nghiên cứu chế tạo Robot. Xe Robot 4 bánh có thiết kế nhỏ gọn hoạt động tốt với kết cấu vững chắc và nguồn hoạt động lâu có thể giúp cho con người dễ dàng vận chuyển và triển khai trong phạm vi ứng dụng một cách linh hoạt. Tuy nhiên do thời gian nghiên cứu không nhiều nên đề tài còn nhiều mặt hạn chế chưa áp dụng được nhiều công nghệ như GPS, Camera, Đèn, các cảm biến công nghệ giúp xe Robot trở nên thông minh hơn và có ứng dụng thực tiễn nhiều hơn nữa.
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG: ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI KHOA: ĐIỆN, ĐIỆN TỬ- CƠ KHÍ – XÂY DỰNG BÁO CÁO ĐỒ ÁN HỌC PHẦN I ĐỀ TÀI: LẬP TRÌNH CHO XE BỐN BÁNH ĐIỀU KHIỂN BẰNG BLUETOOTH GIẢNG VIÊN HƯỚNG DẪN: TH.S NGUYỄN THANH TÙNG CÁC THÀNH VIÊN THỰC HIỆN: NHÓM LỜI MỞ ĐẦU Ngày với phát triển đất nước ngành công nghệ kĩ thuật điện tử nói riêng ngành tin học nói chung có bước phát triển mạnh mẽ không ngừng chìa khoá dẫn đến thành công nhiều lĩnh vực, hoạt động Nhiệm vụ sinh viên ngành Điện Tử chúng em cần phải nghiên cứu, tìm tòi phát triển ứng dụng dựa sở lí thuyết học Để tạo sản phẩm có chất lượng tốt đáp ứng nhu cầu sống đại robot vận chuyển hàng hóa, robot kiểm tra nguy hiểm, robot xe lăn cho người khuyết tật Robot phục vụ sinh hoạt gia đình.… Nhưng điểm hạn chế robot thịnh hành tính thiếu linh hoạt khả thích ứng làm việc vị trí địa lí khác Chính điểm hạn chế đặt câu hỏi :”Làm Robot tránh né vật cản trở ?“ Hầu hết robot đại có giải pháp tránh vật cản robot xác định vật cản dừng lại khoảng cách ngắn so với vật cản để tránh va chạm, đến thuật toán tinh tế Đề tài “Điều khiển xe bluetooth tự hành tránh vật cản” nhằm góp phần giải vấn đề Tuy nhiên trình tìm tòi, nghiên cứu làm báo cáo Nhóm số vấn đề thiếu xót chưa trình bày sâu sắc Rất mong đóng góp ý kiến Thầy để báo cáo chúng em hoàn thiện Chúng em xin gửi lời cảm ơn chân thành đến thầy Lê Xuân Vịnh hướng dẫn trình học tập, thầy tận tình quan tâm, bảo , định hướng cung cấp kiến thức lý thuyết tạo điều kiện thuận lợi đồng thời hướng dẫn cho chúng em suốt trình thực hành để chúng em hiểu rõ Môn Ngôn Ngữ Lập Trình C++ Chúng Em Xin Trân Trọng Cảm Ơn! MỤC LỤC Phần I/ GIỚI THIỆU ĐỀ TÀI 1/ Lí Do Chọn Đề Tài……………………………………………… 2/ Mục Tiêu Nghiên Cứu………………………………………… 3/ Ý Nghĩa Khoa Học & Thực Tiễn Của Đề Tài………………… 3.1/ Ý Nghĩa Khoa Học…………………………………………… 3.2/ Ý Nghĩa Thực Tiễn…………………………………………… 4/ Những Đóng Góp Mới Của Đề Tài & Những Vấn Đề Mà Đề Tài Chưa Thực Hiện Được……………………………………………………… 5/ Ưu Điểm Và Nhược Điểm Của Xe Điều Khiển………………… 5.1/ Ưu Điểm…………………………………………………… 5.2/ Nhược Điểm…………………………………………………… PHẦN II/ GIỚI THIỆU KHÁT QUÁT VỀ MẠCH ARDUINO 1/Giới Thiệu Arduino ……………………………………………… 2/ Phần Cứng……………………………………………………… 3/ Phần Mềm……………………………………………………… PHẦN III/ GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++ 1/ Lịch Sử Hình Thanh………………………………………… 2/ Đặc Điểm…………………………………………………… 3/ Ví Dụ………………………………………………………… PHẦN IV/ TỔNG QUÁT VỀ HỆ THỐNG 1/ Giới Thiệu Chung Về Xe Điều Khiển…………………………… 1.1/ Định Nghĩa…………………………………………………… 1.2/ Cấu Tạo Xe Điều Khiển……………………………………… 2/ Hệ Thống Xe Robot Bánh…………………………………… 2.1/ Các Chức Năng Của Từng Bộ Phận………………………… 2.2/ Chương Trình Chạy Mã Code Cho Arduino……………… 2.3/ Phần Mềm Điều Khiển Trên Android……………………… PHẦN V/ NGÔN NGỮ LẬP TRÌNH TRÊN ARDUINO 1/ Giới Thiệu Ngôn Ngữ Lập Trình Trên Arduino……………… 2/ Ý Nghĩa Các Hàm Sử Dụng Trong Điều Khiển……………… PHẦN VI/ KẾT LUẬN & KIẾN NGHỊ 1/ Kết Luận………………………………………………………… 2/ Kiến Nghị……………………………………………………… 3/ Nhận Xét Của Giảng Viên…………………………………… PHẦN I/ KHÁI QUÁT VỀ CHỦ ĐỀ ĐIỀU KHIỂN XE BẰNG BLUETOOTH VÀ TỰ HÀNH TRÁNH VẬT CẢN 1/ Lí Do Để Chọn Đề Tài - Nắm bắt từ thực tế nhiều nước giới ứng dụng Robot để phục vụ nhiều lĩnh vực như: công nghiệp, nông nghiệp quân sống sinh hoạt ngày Trong tương lai Robot công cụ hỗ trợ đắc lực cho người giúp người vươn đến tầm cao Nhận thức xu hướng tầm quan trọng Robot tương lai, nhằm góp phần xây dựng phát triển công nghệ Robot Việt Nam, nhóm sinh viên định chọn thực đề tài “ Điều khiển xe Bluetooth tự hành tránh vật cản” 2/Mục tiêu nghiên cứu: - Đối với nhóm sinh viên, đề tài bước đầu tìm hiểu, thi công sản phẩm Robot ứng dụng thực tế, đồng thời bước triển khai kiến thức học Thông qua việc nghiên cứu làm việc nghiêm túc để rèn luyện tác phong, tinh thần khoa học, hoàn thiện phương pháp, tư nghiên cứu, giải vấn đề thực tiễn Quan trọng hơn, đề tài bước “tổng kết hoàn thiện” kỹ thiếu sót trước thực trở thành người kỹ sư Về mặt ứng dụng thực tiễn, đề tài sử dụng hỗ trợ việc điều khiển tự động tránh né vật cản khu vực phức tạp nhằm tránh va chạm với vật 3/ Ý Nghĩa Khoa Học & Thực Tiễn Của Đề Tài 3.1/ Ý Nghĩa Khoa Học: - Ứng dụng kết nghiên cứu lý thuyết, đề tài sẽ xây dựng mô hình xe điều khiển bánh thông qua thiết bị bluetooth phụ kiện cảm biến để né tránh vật cản Đề tài minh chứng tı́nh đúng đắ n của hướng nghiên cứu , khẳ ng đinh ̣ đô ̣ tin câ ̣y của các kế t nghiên cứu khoa học 3.2/ Ý Nghĩa Thực Tiễn: - Xây dựng xe vừa điều khiển bluetooth thông qua điện thoại android tự hành kết nối Điểm xe có khả tránh vật cản trình di chuyển Nhóm chúng em dừng lại việc tìm hiểu cấu trúc tổng quang robot, đồng thời tìm hiểu khối phục vụ cho việc điều khiển robot giao thức truyền thông máy tính mạch Arduino 4/Những Đóng Góp Mới Của Đề Tài & Những Vấn Đề Mà Đề Tài Chưa Thực Hiện Được -Đề tài có ý nghĩa bước đầu chập chững tiến lên ngành công nghiệp nghiên cứu Robot yếu nước ta, góp phần làm “điểm tựa” cho hệ sau tiến lên nấc thang cao nghiên cứu chế tạo Robot Xe Robot bánh có thiết kế nhỏ gọn hoạt động tốt với kết cấu vững nguồn hoạt động lâu giúp cho người dễ dàng vận chuyển triển khai phạm vi ứng dụng cách linh hoạt Tuy nhiên thời gian nghiên cứu không nhiều nên đề tài nhiều mặt hạn chế chưa áp dụng nhiều công nghệ GPS, Camera, Đèn, cảm biến công nghệ giúp xe Robot trở nên thông minh có ứng dụng thực tiễn nhiều 5/ Những Ưu Điểm & Nhược Điểm Của Xe Điều Khiển 5.1/ Ưu Điểm: - Không ô nhiễm, sử dụng pin sạc pin - Sử dụng không gian hiệu quả, đa ( sử dụng nhà phố) - Dễ dàng điều khiển Điện thoại thông minh thông qua Bluetooth - Như phương tiện vận chuyển hàng hoá giám sát - Gía thành thấp robot khác - Tốc độ di chuyển nhanh chóng tiện lợi - Tránh né vật xung quanh cách linh hoạt - Mẫu mã thiết kế bắt mắt - Không có tiếng ồn - Dễ dàng thiết kế lắp ráp - Di chuyển đa hướng nhanh nhẹn 5.2/ Nhược Điểm: - Không thể vượt qua địa hình xấu - Tiêu hao lượng nhiều - Khoảng cách điều khiển ngắn - Các bánh xe chạy chưa PHẦN II/ GIỚI THIỆU KHÁI QUÁT VỀ ARDUINO 1/Giới Thiệu Arduino -Arduino board mạch vi xử lý, nhằm xây dựng ứng dụng tương tác với với môi trường thuận lợi Phần cứng bao gồm board mạch nguồn mở thiết kế tảng vi xử lý AVR Atmel 8bit, ARM Atmel 32-bit Những Model trang bị gồm cổng giao tiếp USB, chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác Được giới thiệu vào năm 2005, Những 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 nhiế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 Những 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 Đi với môi trường phát triển tích hợp (IDE) chạy máy tính cá nhân thông thường cho phép người dùng viết chương trình cho Aduino ngôn ngữ C C++ Giá board Arduino dao động xung quanh €20, $27 574 468VNĐ, "làm giả" giá giảm xuống thấp $9 Các board Arduino đặt hàng dạng lắp sẵn dạng kit tự-làm-lấy Thông tin thiết kế phần cứng cung cấp công khai để muốn tự làm mạch Arduino tay tự thực (mã nguồn mở) Người ta ước tính khoảng năm 2011 có 300 ngàn mạch Arduino thức sản xuất thương mại, vào năm 2013 có khoảng 700 ngàn mạch thức đưa tới tay người dùng 2/ Phần Cứng -Một mạch Arduino bao gồm vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình mở rộng với mạch khác Một khía cạnh quan trọng Arduino kết nối tiêu chuẩn nó, cho phép người dùng kết nối với CPU board với module thêm vào dễ dàng chuyển đổi, gọi shield Vài shield truyền thông với board Arduino trực tiếp thông qua chân khách nhau, nhiều shield định địa thông qua serial bus I²C-nhiều shield xếp chồng sử dụng dạng song song Arduino thức thường sử dụng dòng chip megaAVR, đặc biệt ATmega8, ATmega168, ATmega328, ATmega1280, ATmega2560 Một vài vi xử lý khác sử dụng mạch Aquino tương thích Hầu hết mạch gồm điều chỉnh tuyến tính 5V thạch anh dao động 16 MHz (hoặc cộng hưởng ceramic vài biến thể), vài thiết kế LilyPad chạy MHz bỏ qua điều chỉnh điện áp onboard hạn chế kích cỡ thiết bị Một vi điều khiển Arduino lập trình sẵn với boot loader cho phép đơn giản upload chương trình vào nhớ flash on-chip, so với thiết bị khác thường phải cần nạp bên Điều giúp cho việc sử dụng Arduino trực tiếp cách cho phép sử dụng máy tính gốc nạp chương trình Theo nguyên tắc, sử dụng ngăn xếp phần mềm Arduino, tất board lập trình thông qua kết nối RS-232, cách thức thực lại tùy thuộc vào đời phần cứng Các board Serial Arduino có chứa mạch chuyển đổi RS232 sang TTL Các board Arduino lập trình thông qua cổng USB, thực thông qua chip chuyển đổi USB-to-serial FTDI FT232 Vài biến thể, Arduino Mini Boarduino không thức, sử dụng board adapter cáp nối USB-to-serial tháo rời được, Bluetooth phương thức khác (Khi sử dụng công cụ lập trình vi điều khiển truyền thống thay ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sử dụng.) Board Arduino đưa hầu hết chân I/O vi điều khiển để sử dụng cho mạch Diecimila, Duemilanove, Uno đưa 14 chân I/O kỹ thuật số, số tạo xung PWM (điều chế độ rộng xung) chân input analog, sử dụng chân I/O số Những chân thiết kế nằm phía mặt board, thông qua header 0.10-inch (2.5 mm) Nhiều shield ứng dụng plug-in thương mại hóa Các board Arduino Nano, Arduino-compatible Bare Bones Board Boarduino cung cấp chân header đực mặt board dùng để cắm vào breadboard Có nhiều biến thể Arduino-compatible Arduino-derived Một vài số có chức tương đương với Arduino sử dụng để thay qua lại Nhiều mở rộng cho Arduino thực thiện cách thêm vào driver đầu ra, thường sử dụng trường học để đơn giản hóa cấu trúc 'con rệp' robot nhỏ Những board khác thường tương đương điện có thay đổi hình dạng-đôi trì độ tương thích với shield, không Vài biến thể sử dụng vi xử lý hoàn toàn khác biệt, với mức độ tương thích khác 3/Phần Mềm Môi trường phát triển tích hợp (IDE) Arduino ứng dụng crossplatform (nền tảng) viết Java, từ IDE sử dụng cho Ngôn ngữ lập trình xử lý (Processing programming language) project Wiring Nó thiết kế để dành cho nghệ sĩ người tập tành làm quen với lĩnh vực phát triển phần mềm Nó bao gồm chương trình code editor với chức đánh dấu cú pháp, tự động brace matching, tự động canh lề, compile(biên dịch) upload chương trình lên board với cú click chuột Một chương trình code viết cho Arduino gọi sketch.[5] Các chương trình Arduino viết C C++ Arduino IDE kèm với thư viện phần mềm gọi "Wiring", từ project Wiring gốc, giúp thao tác input/output dễ dàng Người dùng cần định nghĩa hàm để tạo chương trình vòng thực thi (cyclic executive) chạy được: setup() : hàm chạy khởi động chương trình, dùng để thiết lập cài đặt loop() : hàm gọi lặp lại tắt nguồn board mạch Một chương trình điển hình cho vi điều khiển đơn giản làm cho bóng đèn Led sáng/tắt Trong môi trường Arduino, ta phải viết chương trình giống sau:[6] Đèn LED tích hợp với chân 13 #define LED_PIN 13 void setup () { pinMode (LED_PIN, OUTPUT); // Cho phép chân 13 làm đầu digital } void loop () { digitalWrite (LED_PIN, HIGH); // Bật LED on delay (1000); // chờ giây (1000 mili giây) digitalWrite (LED_PIN, LOW); // Tắt LED off delay (1000); // chờ 1s } Một đặc điểm hầu hết board Arduino chúng có đèn LED điện trở nối chân 13 với đất; đặc điểm thuận tiện cho nhiều ứng dụng đơn giản.[6] Đoạn code đọc compiler C++ chuẩn chương trình đúng, ta click vào nút "Upload to I/O board" IDE này, copy đoạn code ghi vào file tạm với extra include header phía hàm main () đơn giản nằm phía đáy, để làm cho thàn chương trình C++ khả dụng Arduino IDE sử dụng GNU toolchain AVR Libc để biên dịch chương trình, sử dụng avrdude để upload chương trình lên board Vì tảng Arduino vi điều khiển Atmel, môi trường phát triển Atmel, AVR Studio phiên Atmel Studio hơn, sử dụng để làm phần mềm phát triển cho Arduino PHẦN III/ GIỚI THIỆU NGÔN NGỮ LẬP TRINH C++ 1/ Lịch Sử Hình Thành: -Ngôn ngữ lập trình C Dennis Ritchie nghĩ ông làm việc AT&T Bell Laboratories vào năm 1972 C ngôn ngữ mạnh có tính linh hoạt, nhanh chóng sử dụng cách rộng rãi, vượt khỏi phạm vi Bell Labs Các lập trình viên khắp nơi bắt đầu sử dụng để viết tất loại chương trình C++ biết đến ngôn ngữ bao trùm lên C Bjarne Stroustrup sáng tác năm 1980 phòng thí nghiệm Bell bang New Jersey, Mỹ Ban đầu ông đặt tên cho “C with classes” (C với lớp) Tuy nhiên đến năm 1983 ông đổi tên thành C++, ++ toán tử tăng thêm C C++ biết đến ngôn ngữ lập trình hướng vật hay hướng đối tượng - OOP (Object Oriented Programming) 2/ Đặc Điểm: -C ngôn ngữ mạnh linh hoạt C sử dụng nhiều dự án khác nhau, viết hệ điều hành, chương trình xử lý văn bản, đồ hoạ, bảng tính, chí chương trình dịch cho ngôn ngữ khác C có sẵn nhiều trình biên dịch (compiler) thư viện viết sẵn khác C ngôn ngữ khả chuyển (portable language) Nghĩa chương trình viết C cho hệ máy tính (ví dụ IBM PC) dịch chạy hệ máy tính khác (chẳng hạn DEC VAX) với sử đổi Tính khả chuyển chuẩn ANSI cho C C gồm số từ khoá (keywords) làm tảng để xây dựng các chức ngôn ngữ C ngôn ngữ lập trình theo modul Mã chương trình C (và nên) viết thành thủ tục gọi function Những function sử dụng lại ứng dụng (application) chương trình khác Tuy nhiên C không cho phép khai báo hàm hàm C++ bao trùm lên C nên đặc điểm C có C++ Ngoài ra, C++ có số đặc điểm khác như: C++ ngôn ngữ hướng đối tượng C++ ngôn ngữ định kiểu mạnh C++ cung cấp cách truyền tham số tham chiếu cho hàm C++ cung cấp cấu thư viện để người lập trình tự tạo thêm hàm thông dụng vào thư viện tái sử dụng sau C++ cung cấp chế đa dạng hóa tên hàm toán tử C++ cung cấp class loại cấu trúc đóng gói chung cho liệu lẫn hàm chủ thể bảo vệ cách chặt chẽ Cấu trúc chương trình C++ (1): Khai báo thư viện (2): [Khai báo nguyên mẫu hàm người dùng] (3): [Các định nghĩa kiểu] (4): [Các định nghĩa Macro] (5): [Các định nghĩa biến, hằng] (6): main ([khai báo tham số]) (7): { (8): Thân hàm main (9): } (10): Các định nghĩa hàm người dùng Chú ý: Các thành phần cặp ngoặc vuông [] có không chương trình Giải thích cú pháp: (1): Cú pháp để khai báo thư viện: #include Ví dụ: #include; #include;… (2): Cung cấp tên hàm, kiểu hàm, số đối số kiểu đối số hàm Cú pháp khai báo nguyên mẫu hàm: ([Khai báo đối số]); Ví dụ: int chanle (int x); Trong đó, kiểu hàm int, tên hàm chanle, đối số x kiểu đối số int (3): Định nghĩa kiểu Ngoài kiểu chuẩn cung cấp sẵn ngôn ngữ, người lập trình định nghĩa kiểu từ kiểu có cách sử dụng từ khóa typedef (4): Định nghĩa Macro 10 117 } 118 void Left(int pwm) 119 { 120 analogWrite(ENA, pwm); 121 analogWrite(ENB, pwm); 122 digitalWrite(IN1, LOW); 123 digitalWrite(IN2, HIGH); 124 digitalWrite(IN3, HIGH); 125 digitalWrite(IN4, LOW); 126 } 127 void Right(int pwm) 128 { 129 analogWrite(ENA, pwm); 130 analogWrite(ENB, pwm); 131 digitalWrite(IN1, HIGH); 132 digitalWrite(IN2, LOW); 133 digitalWrite(IN3, LOW); 134 digitalWrite(IN4, HIGH); 135 } 136 void Brake() 137 { 138 analogWrite(ENA, PWM255); 139 analogWrite(ENB, PWM255); 140 digitalWrite(IN1, HIGH); 141 digitalWrite(IN2, HIGH); 142 digitalWrite(IN3, HIGH); 143 digitalWrite(IN4, HIGH); 144 delay(timeDelay); 145 } 146 int getDistance() 147 { 148 long time, distance; 149 digitalWrite(TrigPin, LOW); 150 delayMicroseconds(5); 151 digitalWrite(TrigPin, HIGH); 152 delayMicroseconds(15); 153 digitalWrite(TrigPin, LOW); 154 time = pulseIn(EchoPin, HIGH); 155 return round(distance = (time / 2) / 29.1); 156 } 22 157 int getDistanceAtPosition(int position) 158 { 159 myHead.write(position); 160 delay(timeDelay); 161 return getDistance(); 162 } 163 boolean checkSafe() 164 { 165 int distance = getDistanceAtPosition(Central); 166 boolean flag = true; 167 if (distance < SafeDistance) 168 flag = false; 169 return flag; 170 } 171 boolean leftSafe() 172 { 173 boolean flag = true; 174 int dCenter = getDistanceAtPosition(Central); 175 int dLeft = getDistanceAtPosition(LeftPos); 176 if (dCenter < SafeDistance) 177 { 178 if (dCenter < SafeSideDistance) 179 flag = false; 180 else 181 { 182 if (dLeft < SafeDistance) 183 flag = false; 184 else 185 flag = true; 186 } 187 } 188 else 189 stopFlag = false; 190 return flag; 191 } 192 boolean rightSafe() 193 { 194 boolean flag = true; 195 int dCenter = getDistanceAtPosition(Central); 196 int dRight = getDistanceAtPosition(RightPos); 23 197 if (dCenter < SafeDistance) 198 { 199 if (dCenter < SafeSideDistance) 200 flag = false; 201 else 202 { 203 if (dRight < SafeDistance) 204 flag = false; 205 else 206 flag = true; 207 } 208 } 209 else 210 stopFlag = false; 211 return flag; 212 } 213 void StopMove() 214 { 215 analogWrite(ENA, PWM255); 216 analogWrite(ENB, PWM255); 217 digitalWrite(IN1, LOW); 218 digitalWrite(IN2, LOW); 219 digitalWrite(IN3, LOW); 220 digitalWrite(IN4, LOW); 221 } 24 2.3/ Phần Mềm Điều Khiển Bluetooth Trên Android Hình 25 PHẦN V : NGÔN NGỮ LẬP TRÌNH TRÊN ARDUINO Giới Thiệu Ngôn Ngữ Lập Trình Trên Arrduino : Chương trình Arduino chia làm phần: cấu trúc (structure), biến số (variable) số (constant), hàm thủ tục (function) Chuyên mục giúp bạn tìm hiểu phần qua diễn giải khái niệm mô tả hàm thao tác/thủ tục Phần bên tài liệu tham khảo lập trình Arduino Cấu trúc setup() loop() Cấu trúc điều khiển if if…else switch / case for while break continue return goto Cú pháp mở rộng 26 Giá trị Hằng số HIGH | LOW INPUT |INPUT_PULLUP|OU TPUT LED_BUILTIN true | false Hằng số nguyên (integer constants) Hằng số thực (floating point constants) Kiểu liệu void boolean char unsigned char byte int Hàm thủ tục Nhập xuất Digital(Digital I/O) pinMode() digitalWrite() digitalRead() Nhập xuất Analog(Analog I/O) analogReference() analogRead() analogWrite() – PWM – PPM Hàm thời gian millis() micros() delay() delayMicrosecond s() ; (dấu chấm phẩy) {} (dấu ngoặc nhọn) // (single line comment ) /**/ (mul ti-line comment ) #define #include Toán tử số học = (phép gán) + (phép cộng) - (phép trừ) * (phép nhân) / (phép chia) % (phép chia lấy dư) Toán tử so sánh 27 unsigned int word long short double string (chuỗi kí tự biểu diễn bằngarray) unsigned long float array String (object) Chuyển đổi kiểu liệu char() byte() int() word() long() float() Phạm vi biến phân loại Phạm vi hiệu lực biến Hàm toán học min() static – biến tĩnh const – biến volatile Hàm hỗ trợ sizeof() max() abs() map() pow() sqrt() sq() isnan() constrain() Hàm lượng giác cos() sin() tan() Sinh số ngẫu nhiên randomSeed() random() noTone() Nhập xuất nâng cao(Advanced I/O) tone() shiftOut() shiftIn() pulseIn() Bits Bytes lowByte() highByte() bitRead() == (so sánh bằng) != (khác bằng) > (lớn hơn) < (bé hơn) >= (lớn bằng)