Tách Dữ Liệu Từ Chuỗi Trong Arduino

Hello Xin Chào Mọi Người! Hôm Nay Mình Xin Hướng Dẫn Các Bạn Các Tách Một Chuỗi Chứa Các Dữ Liệu Thành Các Dữ Liệu Riêng Biệt Để Xử Lí. Cụ Thể Mình Sẽ Viết Một Cái App Trên App Inventor Gửi Về Arduino Một Chuỗi Thông Qua Kết Nối Bluetooth.

1. Chuẩn Bị

Các bạn cần chuẩn bị:

Nối dây như sau:

HC05 Arduino
Vcc 5V
GND GND
Tx Rx1 (pin 19)
Rx Tx1 (pin 18)

2. Viết App

Ở đây mình sẽ không nói rõ mà chỉ đăng ảnh phần Code của app vì trên cộng đồng có khá nhiều bài nói về app inventor, bạn cứ search "app inventor" là ra.

App của mình gồm có 2 thanh trượt, mình sẽ code cho app gửi về hc05 1 chuỗi sau mỗi 100ms, chuỗi đó có cú pháp: "<giá trị thanh ray 1>,<giá trị thanh ray 2>" (Ví dụ "150,20").

Thiết kế App

Code cho việc kết nối bluetooth

Code gửi chuỗi qua bluetooth

3. Code Arduino

int val1, val2;
String chuoi = "90,90", chuoi1, chuoi2;
byte moc;
void setup()
{
    Serial1.begin(9600); // Serial 1 kết nối hc05
    Serial.begin(9600); //Serial này in ra màn hình máy tính
}

void loop()
{
    // Đọc và xử lí chuỗi từ app gửi về
    if (Serial1.available()) {
        chuoi = Serial1.readString(); //Serial đọc chuỗi
    }
    for (int i = 0; i < chuoi.length(); i++) {
        if (chuoi.charAt(i) == ',') {
            moc = i; //Tìm vị trí của dấu ","
        }
    }
    chuoi1 = chuoi;
    chuoi2 = chuoi;
    chuoi1.remove(moc); //Tách giá trị thanh trượt 1 ra chuoi1
    chuoi2.remove(0, moc + 1); ////Tách giá trị thanh trượt 2 ra chuoi2
    val1 = chuoi1.toInt(); //Chuyển chuoi1 thành số
    val2 = chuoi2.toInt(); //Chuyển chuoi2 thành số
    //In ra serial
    Serial.println(val1);
    Serial.println(val2);
}

Với đoạn code trên, nếu ai test với arduino không có hc05 và app thì arduino sẽ tách chuỗi "90,90" thành 2 giá trị 90 và 90 để in ra Serial trên máy tính.

Ai muốn tìm hiểu thêm về mấy câu lệnh xử lí chuỗi trong code này thì vào bài này:

http://arduino.vn/reference/library/string/1/gioi-thieu/string-object-doi-tuong-chuoi-cuc-manh-tren-arduino

4. Lời Kết

Chúc các bạn thành công! Hi vọng bài viết này sẽ giúp ích cho bạn và chúc bạn có nhiều niềm vui với Arduino.

lên
9 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Một dự án được truyền cảm hứng với "LED RGB chung cực dương"

Sau khi đọc xong bài viết "Làm thế nào để điều khiển được LED RGB", mình cũng muốn làm thử. Tuy nhiên khi đặt mua thì lại nhận được loại LED RGB có cực dương chung. Vậy làm sao áp dụng được?

 

lên
33 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

State Machine Với Arduino

   Xin chào các bạn! Hôm nay mình sẽ giới thiệu với các bạn một cách lập trình, quản lý code khá thú vị và mới lạ, đó chính là State Machine hay trạng thái máy. Đây là một cách thức lập trình cũng được sử dụng khá nhiều cho các hệ thống, phần mềm, máy móc trong thực tế. Dưới đây, mình chỉ viết những gì mình biết và tìm hiểu được nên có gì sai sót, mong các bạn đã biết về state machine hãy góp ý cho mình bên dưới phần comment để bài viết hoàn thiện hơn. Bắt đầu thôi!

lên
10 thành viên đã đánh giá bài viết này hữu ích.

Lập trình Arduino không cần viết code - Phần 2: Fade led

Đây là phần 2 của chuỗi bài viết "Lập trình Arduino không cần code" - Chuỗi bài giúp các bạn newbie tiếp cận với arduino theo một hướng mới và thú vị.

Xem lại phần 1 tại đây.

Ở phần 1, mình đã giới thiệu với các bạn phần mềm miniBloq - một môi trường lập trình arduino mới mẻ và thú vị. Đồng thởi mình cũng đã viết 1 ví dụ. Hôm nay sẽ là ví dụ thứ 2. Chúng ta sẽ điều khiển độ sáng của 1 bóng đèn led bằng 1 biến trở. Ok

lên
26 thành viên đã đánh giá bài viết này hữu ích.