loc4atnt gửi vào
- 30874 lượt xem
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ị:
- 1 Con Module Bluetooth HC05 (Hoặc HC06)
- 1 Con Ardunio (Mình Dùng Con Mega)
- Vài dây breadboard nữa <3
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:
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.