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

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Giới thiệu về board Blend Micro

Xin chào mọi người! Hôm nay mình xin giới thiệu với các bạn một board mạch thích hợp cho các dự án Bluetooth hay các dự án IOT. Đó là board Blend Micro.

lên
14 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 3: Chuyển đổi công nghệ, công nghệ khác tốt hơn

Đây là phần 3 của chuỗi bài "Lập trình Arduino không cần viết code".

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

Sau vài lần sử dụng phần mềm miniBloq, mình cảm thấy nó còn khá nhiều điểm yếu như có ít đối tượng lệnh nên còn một vài lệnh phải gõ tay hay câu lệnh không thống nhất với Arduino IDE (như trong arduino, lệnh digitalWrite() còn trong miniBloq thì là DigitalWrite),.. Nên mình đã lao đầu lên mạng tìm xem còn phần mềm nào khác tương tự không và mình đã tìm thấy một phần mềm hay hơn nhiều. Đó là mBlock. Và đã đến lúc chúng ta chuyển đổi công nghệ.

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