1 / 33

LẬP TRÌNH ARDUINO

LẬP TRÌNH ARDUINO. ARDUINO. Một chương trình trên Arduino cần tối thiểu những gì?. Trong một chương trình Arduino, bạn cần có tối thiểu 2 hàm hệ thống chính, bắt buộc phải có, không có là không được. Đó là setup() và loop(). ARDUINO. Một chương trình trên Arduino cần tối thiểu những gì?.

Download Presentation

LẬP TRÌNH ARDUINO

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LẬP TRÌNHARDUINO

  2. ARDUINO Một chương trình trên Arduino cần tối thiểu những gì? Trong một chương trình Arduino, bạn cần có tối thiểu 2 hàm hệ thống chính, bắt buộc phải có, không có là không được. Đó là setup() và loop()

  3. ARDUINO Một chương trình trên Arduino cần tối thiểu những gì? void setup() { // toàn bộ đoạn code nằm trong hàm này chỉ được chạy duy nhất một lần khi chạy chương trình } void loop() { // lặp lại mãi mãi sau khi chạy xong setup() }

  4. Nội dung chính cần nắm • Tìm hiểu cách để điều khiển một con đèn led nhấp nháy. • Phần cứng • Arduino UNO R3 • 01 Led • 01 điện trở 220 ohm • Lắp mạch • Cực âm Led => GND • Cực dương Led => điện trở => DIGITAL 13 LED nhấp nháy Lưu ý: Vì đèn Led sử dụng dòng thấp (<40mA) nên ta có thể kết nối trực tiếp lên mạch Arduino

  5. Mã lập trình và giải thích Trước tiên, cứ mỗi khi dùng một con LED, chúng ta phải pinMode OUTPUT chân Digital mà ta sử dụng cho con đèn LED. Trong ví dụ ngày hôm nay, chúng ta sử dụng chân LED là chân digital 13. Nên đoạn code sau cần nằm trong void setup() LED nhấp nháy void setup() { pinMode (13, OUTPUT); }

  6. Mã lập trình và giải thích Để bật một con đèn LED, bạn phải digitalWrite HIGH cho chân số 13 (chân Digtal được kết nối với con LED). Đoạn code này nằm trong void loop() LED nhấp nháy void loop() { digitalWrite (13, HIGH); } Dòng lệnh trên sẽ cấp một điện thế là 5V vào chân số Digital 13. Điện thế sẽ đi qua điện trở 220ohm rồi đến đèn LED. Để tắt một đèn LED, bạn sử dụng hàmLOW. digitalWrite (13, LOW);

  7. Mã lập trình và giải thích Lúc này điện thế tại chân 13 sẽ là 0 V => đèn LED tắt. Và để thấy được trạng thái bật và tắt của đèn LED bạn phải dừng chương trình trong một khoảng thời gian đủ lâu để mắt cảm nhận được. Vì vậy, hàm delay được tạo ra để làm việc này (Dừng hẳn chương trình bao nhiêu mili giây)! LED nhấp nháy void loop() { digitalWrite (13, HIGH); //bật đèn LED delay(1000); //Dừng chương trình trong 1s digitalWrite (13, LOW); // tắt đèn LED delay(1000); //Dừng chương trình trong 1s }

  8. Nội dung chính cần nắm • Tìm hiểu cách khai báo biến, cá nhân hóa dòng lệnh. Biến (variables) void setup() { pinMode (13, OUTPUT); } void loop() { digitalWrite (13, HIGH); //bật đèn LED delay(1000); //Dừng chương trình trong 1s digitalWrite (13, LOW); // tắt đèn LED delay(1000); //Dừng chương trình trong 1s }

  9. Mã lập trình và giải thích • Theo cách lập trình ta thấy mỗi lần sử dụng chân DIGITAL 13 ta phải gọi số 13. Để cá nhân hóa dòng lệnh và dễ hiểu ta khai báo một biến thay thế cho số 13. • Cấu trúc khai báo biến: Biến (variables) [kiểu dữ liệu] [TenBien]; - Khai báo biến tên led kiểu số nguyên và gán giá trị là 13 cho biến led int led; //khai báo biến tên là led led = 13; //gán giá trị 13 cho biến led - Viết rút gọn: int led = 13; //khai báo biến led và gán giá trị 13 Lưu ý: Tên biến phân biệt chữ hoa, thường. Không dấu, không khoảng trắng.

  10. Các kiểu dữ liệu • boolean: chỉ nhận một trong hai giá trị true hoặc false • char: kiểu dữ liệu biểu diễn cho 1 KÝ TỰ • byte: biểu diễn số nguyên từ 0 đến 255 • int: biểu diễn số nguyên từ -32,768 đến 32,767 • long: biểu diễn số nguyên từ -2,147,483,648 đến 2,147,483,647 • float: biểu diễn số thực từ -3.4028235E+38 đến 3.4028235E+38 • string: biểu diễn kiểu chuỗi ký tự Biến (variables) boolean TrangThai = true; char KyTu =“A”; byte A = 255; int led = 13; long B = -2147483648; float C = 3.14; string D = “Nha Thieu Nhi”;

  11. int DenLed = 13; //Khai báo biến DenLed và gán = 13 void setup() { pinMode (DenLed, OUTPUT); //thay vì gọi 13 ta gọi biến DenLed } void loop() { digitalWrite (DenLed, HIGH); //bật đèn LED delay(1000); //Dừng chương trình trong 1s digitalWrite (DenLed, LOW); // tắt đèn LED delay(1000); //Dừng chương trình trong 1s } Biến (variables)

  12. Nội dung chính cần nắm • Tìm hiểu cách để viết hàm điều khiển riêng, cá nhân hóa dòng lệnh, rút gọn dòng lệnh. Hàm (function) int DenLed = 13; //Khai báo biến DenLed và gán = 13 void setup() { pinMode (DenLed, OUTPUT); //khai báo sử dụng chân 13 kiểu OUTPUT } void loop() { digitalWrite (DenLed, HIGH); //bật đèn LED delay(1000); //Dừng chương trình trong 1s digitalWrite (DenLed, LOW); // tắt đèn LED delay(1000); //Dừng chương trình trong 1s }

  13. Mã lập trình và giải thích • Theo cách lập trình ta thấy mỗi lần muốn điều khiển đèn Led tắt mở ta phải nhập vào 4 câu lệnh. Để rút gọn và dễ thao tác ta có thể tách riêng 4 câu lệnh điều khiển Led ra thành một hàm riêng. • Cấu trúc hàm không trả về giá trị: Hàm (function) void TenHam() { các câu lệnh thực hiện; } Lưu ý: Tên hàm phân biệt chữ hoa, thường. Không dấu, không khoảng trắng.

  14. Mã lập trình và giải thích - Ta sẽ tách 4 dòng lệnh tắt mở đèn led ra thành một hàm riêng có tên là TatMoLed Hàm (function) void TatMoLed() //hàm không trả về giá trị { digitalWrite (DenLed, HIGH); //bật đèn LED delay(1000); //Dừng chương trình trong 1s digitalWrite (DenLed, LOW); // tắt đèn LED delay(1000); //Dừng chương trình trong 1s } • Mỗi lần tắt mở Led ta chỉ cần gọi hàm TatMoLed() void loop () { TatMoLed(); }

  15. Mã lập trình và giải thích Hàm (function) int DenLed = 13; //Khai báo biến DenLed và gán = 13 void setup() { pinMode (DenLed, OUTPUT); //khai báo sử dụng chân 13 kiểu OUTPUT } void loop() { TatMoLed(); } void TatMoLed() //khai báo hàm tên TatMoLed không trả về giá trị { digitalWrite (DenLed, HIGH); //bật đèn LED delay(1000); //Dừng chương trình trong 1s digitalWrite (DenLed, LOW); // tắt đèn LED delay(1000); //Dừng chương trình trong 1s }

  16. Nội dung chính cần nắm • Tìm hiểu cách sử dụng các chân digital để xuất giá trị analog và ứng dụng chúng trong việc làm thay đổi độ sáng của đèn. • Phần cứng • Arduino UNO R3 • 01 Led • 01 điện trở 220 ohm • Lắp mạch • Cực âm Led => GND • Cực dương Led => điện trở => DIGITAL ~6 Độ sáng LED Lưu ý: những chân digital có dấu ~ phía trước mới hỗ trợ xung PWM, bạn nhé!

  17. Độ sáng LED • Mã lập trình và giải thích • Hàm analogWrite(): là lệnh xuất ra từ một chân trên mạch Arduino một mức tín hiệu analog (phát xung PWM). Người ta thường điều khiển mức sáng tối của đèn LED, tốc độ động cơ DC hay hướng quay của động cơ servo bằng cách phát xung PWM như thế này. analogWrite ([chân phát xung PWM], [giá trị xung PWM]); • Giá trị mức xung PWM nằm trong khoảng từ 0 đến 255, tương ứng với mức duty cycle từ 0% đến 100%.

  18. Mã lập trình và giải thích Độ sáng LED int led = 6; //khai báo biến led và gán giá trị là 6 void setup() { pinMode(led, OUTPUT); //khai báo LED ở chân 6 } void loop() { analogWrite (led, 127); //bật đèn LED ở mức 50% delay(1000); //Dừng chương trình trong 1s analogWrite (led, 255); // bật đèn LED ở mức 100% delay(1000); //Dừng chương trình trong 1s }

  19. Mãlậptrìnhvàgiảithích • Thayvìđiềukhiểnđộsáng LED thì ta cóthểđiềukhiểntốcđộđộngcơvớicáchlậptrìnhtươngtự. • Điềukhiểntốcđộđộngcơchỉsửdụngnhững chân digital có dấu ~ phía trước • Khôngđượckếtnốiđộngcơtrựctiếpvớimạch Arduino màphảikếtnốithông qua mạchcôngsuấtđộngcơ. Độ sáng LED

  20. Nội dung chính cần nắm • Tìm hiểu cách sử dụng các loại cảm biến để lấy giá trị digital (hoặc analog) và ứng dụng chúng trong việc tắt mở đèn LED... • Phần cứng • Arduino UNO R3 • 01 Led • 01 điện trở 220 ohm • Cảm biến: vật cản, âm thanh, ánh sáng, độ ẩm, mưa... Cảm biến

  21. Lắp mạch • Cực âm Led => GND • Cực dương Led => điện trở => DIGITAL ~6 • Cảm biến • VCC => cực dương 5v • GND => cực âm 5v • A0 => cổng Analog trên mạch Arduino => A0 • D0 => cổng Digital trên mạch Arduino => DIGITAL 2 Cảm biến Tín hiệu Digital: mang giá trị LOW hoặc HIGH Tín hiệu Analog: mang giá trị từ 0 đến 1023

  22. Mã lập trình và giải thích Cảm biến int led = 6; //khai báo biến led thay cho số PIN 6 int cambienA = A0; //chân Analog kết nối cảm biến int cambienD = 2; //chân Digital kết nối cảm biến void setup() { pinMode(led, OUTPUT); pinMode(cambienA, INPUT); pinMode(cambienD, INPUT); } Vì ta đọc dữ liệu từ cảm biến vào mạch Arduino nên phải khai báo dạng INPUT

  23. Mã lập trình và giải thích Cảm biến void loop() { if (digitalRead(cambienD) == HIGH) { //nếu có tín hiệu digitalWrite (led, HIGH); //bật đèn LED } else { //không có tín hiệu => LOW digitalWrite (led, LOW); //tắt đèn LED } if (analogRead(cambienA) <= 512) { //nếu giá trị <= 512 digitalWrite (led, HIGH); //bật đèn LED } else { //giá trị >512 digitalWrite (led, LOW); //tắt đèn LED } }

  24. Mã lập trình và giải thích • Cấu trúc hàm if (điều kiện) Cảm biến if ([biểu thức 1] [toán tử so sánh] [biểu thức 2]) { các câu lệnh thực hiện khi điều kiện đúng; } else { các câu lệnh thực hiện khi điều kiện sai; } • Toán tử so sánh: • Bằng: == • Không bằng: != • Nhỏ hơn: < • Lớn hơn: > • Nhỏ hơn hoặc bằng: <= • Lớn hơn hoặc bằng >= • Và: && • Hoặc: ||

  25. Mã lập trình và giải thích Cảm biến if (digitalRead(cambienD) == HIGH) { //nếu điều kiện đúng => HIGH digitalWrite (led, HIGH); //bật đèn LED } else { //điều kiện sai => LOW digitalWrite (led, LOW); //tắt đèn LED } if (analogRead(cambienA) <= 512) { //nếu điều kiện đúng => giá trị <= 512 digitalWrite (led, HIGH); //bật đèn LED } else { //điều kiện sai => giá trị >512 digitalWrite (led, LOW); //tắt đèn LED }

  26. Nội dung chính cần nắm • Tìm hiểu cách sử dụng và điều khiển tốc độ động cơ. • Phần cứng • Arduino UNO R3 • 01 mạch công suất động cơ L298 • 02 động cơ DC Động cơ DC

  27. Lắp mạch • Nối động cơ DC vào các chân OUT A, B, C, D trên mạch công suất L298. • Cấp nguồn dương 12v vào chân VCC, cực âm vào chân GND vào mạch công suất L298. • Nối chân INA, INB, INC, IND tương ứng vào các chân DIGITAL 2, 3, 4, 5 trên mạch Arduino để điều khiển chiều quay động cơ. • Nối chân ENA, ENB tương ứng vào các chân DIGITAL ~9, ~10 trên mạch Arduino để điều khiển tốc độ. Động cơ DC

  28. Mã lập trình và giải thích Động cơ DC int INA = 2; //khai báo chân quản lý chân INA - motor 1 int INB = 3; //khai báo chân quản lý chân INB - motor 1 int INC = 4; //khai báo chân quản lý chân INC - motor 2 int IND = 5; //khai báo chân quản lý chân IND - motor 2 int ENA = 9; //chân PWM điều khiển tốc độ motor 1 int ENB = 10; //chân PWM điều khiển tốc độ motor 2 void setup() { pinMode(INA, OUTPUT); pinMode(INB, OUTPUT); pinMode(INC, OUTPUT); pinMode(IND, OUTPUT); pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); }

  29. Mã lập trình và giải thích Động cơ DC void Tien() { analogWrite(ENA, 127); //điều khiển tốc độ motor 1 analogWrite(ENB, 127); //điều khiển tốc độ motor 2 digitalWrite(INA, HIGH); //điều khiển chiều quay motor 1 digitalWrite(INB, LOW); //điều khiển chiều quay motor 1 digitalWrite(INC, HIGH); //điều khiển chiều quay motor 2 digitalWrite(IND, LOW); //điều khiển chiều quay motor 2 } Lưu ý: Giá trị tốc độ động cơ từ 0 đến 255.

  30. Mã lập trình và giải thích Động cơ DC void Lui() { analogWrite(ENA, 127); //điều khiển tốc độ motor 1 analogWrite(ENB, 127); //điều khiển tốc độ motor 2 digitalWrite(INA, LOW); //điều khiển chiều quay motor 1 digitalWrite(INB, HIGH);//điều khiển chiều quay motor 1 digitalWrite(INC, LOW);//điều khiển chiều quay motor 2 digitalWrite(IND, HIGH);//điều khiển chiều quay motor 2 } Lưu ý: Giá trị tốc độ động cơ từ 0 đến 255.

  31. Mã lập trình và giải thích Động cơ DC void Trai() { analogWrite(ENA, 0);//điều khiển tốc độ motor 1 analogWrite(ENB, 255);//điều khiển tốc độ motor 2 digitalWrite(INA, HIGH); //điều khiển chiều quay motor 1 digitalWrite(INB, LOW);//điều khiển chiều quay motor 1 digitalWrite(INC, HIGH);//điều khiển chiều quay motor 2 digitalWrite(IND, LOW);//điều khiển chiều quay motor 2 } Lưu ý: Giá trị tốc độ động cơ từ 0 đến 255.

  32. Mã lập trình và giải thích Động cơ DC void Phai() { analogWrite(ENA, 255);//điều khiển tốc độ motor 1 analogWrite(ENB, 0);//điều khiển tốc độ motor 2 digitalWrite(INA, HIGH); //điều khiển chiều quay motor 1 digitalWrite(INB, LOW);//điều khiển chiều quay motor 1 digitalWrite(INC, HIGH);//điều khiển chiều quay motor 2 digitalWrite(IND, LOW);//điều khiển chiều quay motor 2 } Lưu ý: Giá trị tốc độ động cơ từ 0 đến 255.

  33. Mã lập trình và giải thích Độ sáng LED int dosang = 0; //khai báo biến quản lý độ sáng đèn LED int giatri = 5; void loop() { analogWrite(led, dosang);//xuất giá trị độ sáng đèn LED dosang = dosang + giatri;// thay đổi giá trị sáng lên 5 if (dosang == 0 || dosang == 255) { giatri = -giatri ;//đảo ngược biến giá trị từ 5 thành -5 } delay(30); //đợi 30 mili giây }

More Related