1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

BÁO cáo lập TRÌNH ARDUINO

33 414 1

Đ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 33
Dung lượng 836,78 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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() 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

Trang 1

LẬP TRÌNH ARDUINO

EBOOKBKMT

Trang 2

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ó

loop()

ARDUINO

Trang 3

Một chương trình trên Arduino cần

Trang 4

có thể kết nối trực tiếp lên mạch Arduino

Trang 5

LED nhấp nháy

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()

void setup()

{

pinMode (13, OUTPUT);

}

Trang 6

LED nhấp nháy

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()

digitalWrite (13, LOW);

EBOOKBKMT

Trang 7

LED nhấp nháy

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)!

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

}

Trang 8

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

}

Trang 9

Biến (variables)

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:

[kiểu dữ liệu] [TenBien];

int led; //khai báo biến tên là led

led = 13; //gán giá trị 13 cho biến led

int led = 13; //khai báo biến led và gán giá trị 13

- Khai báo biến tên led kiểu số nguyên và gán giá trị là 13 cho biến led

- Viết rút gọn:

Lưu ý: Tên biến phân biệt chữ hoa, thường Không dấu,

không khoảng trắng.

Trang 10

Biến (variables)

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ự

boolean TrangThai = true;

char KyTu =“A”;

Trang 11

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

}

Trang 12

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

}

Trang 13

Hàm (function)

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ị:

Trang 14

Hàm (function)

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

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

Trang 15

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

}

Trang 16

Độ sáng LED

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 độ

- Cực dương Led => điện trở => DIGITAL ~6

Lưu ý: những chân digital có dấu ~ phía trước mới hỗ trợ xung PWM, bạn nhé!

Trang 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%

Trang 18

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

}

Trang 19

- Không được kết nối động cơ trực tiếp với mạch Arduino

mà phải kết nối thông qua mạch công suất động cơ

Trang 21

- A0 => cổng Analog trên mạch Arduino => A0

- D0 => cổng Digital trên mạch Arduino => DIGITAL 2

Tín hiệu Digital: mang giá trị LOW hoặc HIGH

Tín hiệu Analog: mang giá trị từ 0 đến 1023

Trang 22

Cảm biến

Mã lập trình và giải thích

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

Trang 23

Cảm biến

Mã lập trình và giải thích

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

Trang 24

Cảm biến

Mã lập trình và giải thích

- Cấu trúc hàm if (điều kiện)

if ([biểu thức 1] [toán tử so sánh] [biểu thức 2])

Trang 25

Cảm biến

Mã lập trình và giải thích

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

}

Trang 27

- 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 độ

Trang 28

Động cơ DC

Mã lập trình và giải thích

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

Trang 29

Động cơ DC

Mã lập trình và giải thích

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.

Trang 30

Động cơ DC

Mã lập trình và giải thích

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.

Trang 31

Động cơ DC

Mã lập trình và giải thích

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.

Trang 32

Động cơ DC

Mã lập trình và giải thích

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.

Trang 33

analogWrite(led, dosang); //xuất giá trị độ sáng đèn LED

dosang = dosang + giatri; // thay đổi giá trị sáng lên 5

Ngày đăng: 01/01/2019, 08:13

TỪ KHÓA LIÊN QUAN

w