You are on page 1of 11

LẬP TRÌNH APP INVENTOR – KODULAR

1. TẠO TÀI KHOẢN


http://ai2.appinventor.mit.edu
https://creator.kodular.io/#5564176393043968
2. TẠO NEW PROJECT

2 3 4 5

(1): Cửa sổ giao diện, trong MIT AI2 gọi là các Screen.
(2): Palette, chứa các thành phần có thể đặt lên trên Screen như: Button, Label, Image,
Listview, Video player, …. Đến các thanh phần chức năng không nhìn thấy trên Screen như:
BLE extension, Notifier, các sensors, ….
(3): Viewer: Hiển thị giao diện screen + Kéo thả các thành phần từ khung Palette sang đây để
DESIGN giao diện cho phần mềm.
(4): Components: Sơ đồ cây thể hiện cấu trúc các thành phần đã được bố trí trên Screen.
(5): Properties: Hiển thị thuộc tính của component tương ứng được chọn.

(6): Ngoài ra còn khung Media chứa các file media bạn tải lên để sử dụng trong chương trình
như: Ảnh icon, ảnh nền, …

3. Chương trình ví dụ: Điều khiển thiết bị qua Bluetooth


3.1. Tạo giao diện
Bấm vào Tab “Designer” ở góc trên bên phải màn hình.

Chọn thêm “Control Bluetooth Client” trong phần Connectivity. “Notifier” trong User
Interface và “Clock” trong Sensor.
Notifier1: Hiển thị các câu thông báo đến người dùng.

BluetoothClient1: Đây là extension cho phép truyền thông qua giao tiếp Bluetooth

3.2. Tạo code

Sau khi được giao diện như trên, chúng ta sẽ tiến hành tạo “code”. Hãy bấm vào Tab “Blocks”
ở góc trên bên phải màn hình:

Trong MIT AI2, code chính là các Blocks, hãy kéo thả các blocks này sang khung Viewer và kết nối
chúng theo chức năng mong muốn.
3.2.1. Blocks gồm 2 nhóm chính
Các block chức năng cơ bản của một chương trình như: điều khiển luồng, logic, toán học, ký tự,
biến, …

Các block chức năng theo từng component trong ứng dụng: Mỗi component của ứng dụng đều có
các block chức năng tương ứng.

3.2.2. Các khối lệnh

Control, Logic, Math, Text,… và các khối lệnh ứng với mỗi button.

Để thực hiện một lệnh nào đó, ta sẽ thực hiện thao tác kéo thả (click chuột vào khối lệnh và kéo
vào màn hình.

❖ Control: là nhóm lệnh liên quan đến các câu lệnh điều kiện, điều khiển, vòng lặp,...
❖ Logic: là những nhóm giá trị liên quan đến logic như true, false, phủ định, các phép so
sánh, ...
❖ Math: là nhóm lệnh, giá trị liên quan đến tính toán, con số, ...
❖ Text: là nhóm lệnh những câu lệnh xử lý và làm việc với chuổi, xâu ký tự,
❖ Lists: là nhóm lệnh làm việc với danh sách
❖ Colors: là nhóm lệnh làm việc với màu sắc
❖ Variables: là nhóm giúp tạo, khai thác và xử lý các biến (toàn cục hoặc địa phương)
❖ Procedure: giúp bạn xây dựng chương trình con, thủ tục, ...
3.2.3. Thao tác dành cho đối tượng
Task 1:

Bước 1: Click chọn Screen

Bước 2: Kéo khối lệnh cần thực hiện ra.


Bước 3: Chọn khối Control → Chọn lệnh If…then
Bước 4: Khối logic → not

Bước 5: Chọn đối tượng BluetoothClient1

Bước 6: Chọn đối tượng Notifier1

Bước 7: Chọn đối tượng Text

Bước 8: Chọn đối tượng Label2

Task 2:
Bước 1: Click chọn đối tượng ListPicker1

Bước 2: Click chọn đối tượng ListPicker1

Bước 3: Click chọn đối tượng BluetoothClient1

Bước 4: Click chọn khối lệnh If…then


Bước 5: Click chọn đối tượng BluetoothClient1→ call …

Bước 6: Click chọn đối tượng ListPicker1

Bước 7: Click chọn đối tượng Label2


Task 3: Lập trình cho Button
Button Truyền:

Button Bật và Tắt:

Click phài khối Button2→Duplicate rồi chỉnh lại tên và Text =0: Lệnh này giúp nhân đôi
khối lệnh, tạo ra một khối lệnh mới giống hệt như khối lệnh mà bạn đã lựa chọn.
Chúng ta cần phân biệt các sự kiện Click, TouchDown, TouchUp :
➢ Click: có nghĩa quá trình ấn vào một button và lấy tay lên.
➢ TouchDown: có nghĩa là việc ấn vào một button.
➢ TouchUp: có nghĩa là việc đang nhấn một button và lấy tay ra.
Button Mũi tên Lên / Xuống:
Click phài khối Button2→Duplicate ….
Swicth:

Khi click chuột phải vào đối tượng

Duplicate: Lệnh này giúp nhân đôi khối lệnh, tạo ra một khối lệnh mới giống hệt như khối
lệnh mà bạn đã lựa chọn.
Collapse Block / Expand Block: Đề xuất này giúp bạn Thu gọn / Mở rộng khối. Với trường
hợp bạn làm việc với lượng lớn khối lệnh, trong khối lệnh lại chứa những khối lệnh con.
Bạn có thể thu gọn nó lại và mở rộng khi cần thiết. Khi khối lệnh bạn chưa được thu gọn
thì đề xuất sẽ hiện Collapse Block. Khi khối lệnh đã được thu gọn rồi thì đề xuất sẽ hiện
Expand.
Disable Block / Enable Block: Đề xuất này giúp bạn có thể vô hiệu hóa / kích hoạt khối
lệnh. Với những khối lệnh bạn không muốn ứng dụng thực hiện nhưng vẫn muốn giữ
nó trên vùng làm việc thì bạn chọn Disable Block. Khi bạn muốn cho ứng dụng thực hiện
khối lệnh vừa vô hiệu hóa thì bạn chọn Enable Block.
Add to Backpack: Giúp bạn thêm khối lệnh đã chọn vào trong Backpack. Con số nằm
trong dấu ngoặc đơn là số lượng các khối lệnh hiện có trong Backpack.
Delete "n" blocks: Số lượng n tùy thuộc vào số khối lệnh con có trong khối lệnh đã chọn.
Chọn đề xuất này sẽ khối lệnh đang chọn và những khối lệnh con mà nó chứa.
Lệnh này tương đương với việc bạn kéo thả khối lệnh vào thùng rác.
Khi click chuột phải vào vùng trống
Khi bạn chuột phải vào vùng trống (không có khối lệnh) thì sẽ hiện lên menu
như thế này:

Download Blocks as Image: Cho phép bạn tải về hình ảnh biểu
diễn các khối lệnh giống như bạn nhìn thấy trên vùng làm việc.
Collapse Blocks: Thu gọn tất cả các khối lệnh có trên vùng làm
việc.
Expand Blocks: Mở rộng tất cả các khối lệnh có trên vùng làm
việc.
Arrange Blocks Horizontally: Sắp xếp các khối lệnh theo chiều
ngang.
Arrange Block Vertically: Sắp xếp các khối lệnh thành chiều dọc.
Sort Blocks by Category: Sắp xếp các khối lệnh theo danh mục.
Paste All Blocks from Backpack: Dán tất cả các khối lệnh có
trong Backpack ra vùng làm việc.
Copy All Blocks to Backpack: Sao chép tất cả các khối lệnh có
trên vùng làm việc vào trong Backpack.
Empty Backpack: Xóa hết những khối lệnh có trong Backpack
Lập trình:
1. // Khai báo biến
2. char state;
3. void setup() {
4. // Cài đặt các chân bạn muốn điều khiển thành thành Ouput
5. // Ở đây tôi sử dụng 4 chân 9, 10, 11, 12
6. pinMode(13, OUTPUT);
7. Serial.begin(9600); // Kết nối bluetooth module ở tốc độ 9600
8. }
9. void loop()
10.{
11. if(Serial.available() > 0){
12. // Đọc giá trị nhận được từ bluetooth
13. state = Serial.read();
14. } else
15. state = 0;
16. Serial.println(state);
17.switch (state) {
18. case '0':
19. digitalWrite(13, LOW);
20. break;
21. case '1':
22. digitalWrite(13, HIGH);
23. break;
24. default:
25. break;
26.}
27.}

You might also like