trung nghia vu gửi vào
- 8792 lượt xem
I. Dẫn nhập
Tôi là một gà mờ về điện điện tử, chả biết tý gì ^^. Tuy thế nhìn những lúc thằng con chơi xe điều khiển lại nảy ra ý tưởng : ít ra mình cũng biết lập trình, sao không làm cái gì đó hay hay cho nó. Thế ròi giờ ở cái tuỏi U40 lại lọ mọ tìm kiếm và cuối cùng dc cái kết quả arduino.vn và bài viết trên, vui, sung sướng. Thế là bắt đầu tìm hiểu.
Thú thật là cho đến tận bây giờ trên tay mình vẫn chưa có 1 sản phẩm arduino nào cả. Tất cả đến từ việc tìm kiếm: công cụ lập trình thích hợp, công cụ mô phỏng thích hợp, làm sao cho nó đơn giản hơn với mình và ai đó có hứng thú.
Thế là lục ra được ArduBlock và vài dòng code "made in tự tui": với các bạn có lẽ là không khó khăn gì với đại đa số người, nhưng với tôi là 1 sự khởi đầu tốt.
II. Chiến nào
1. Công cụ
- 1 x Arduino UNO
- Mạch cầu H L298N /motor driver shield L293D (tùy bạn)
- Module bluetooth HC-05, hoặc HC-06,...
- Động cơ DC
- Test board Mini, Dây cắm, khung, PIN...
2. Bắt tay làm thôi
Vệc nối mach nhu thế nào, tôi nghĩ chắc các bạn cũng đã tham khảo nhièu bài viết rồi hoặc là có thể tụ nghiên cứu thêm dc. Tôi giới thiệu đến cách tiếp cận qua ArduBlock thôi nhé, còn có khúc mắc thì post lên, chúng ta cùng nghiên cứu ^^
Việc cài đặt ArduBlock thì các bạn làm theo hướng dẫn sau : http://blog.ardublock.com/engetting-started-ardublockzhardublock/
3. Code
#include <SoftwareSerial.h> #include <AFMotor.h> SoftwareSerial bleShield(2, 3); bool _ABVAR_1_var= false ; AF_DCMotor motor_dc_1(1, MOTOR12_64KHZ); char _ABVAR_2_blvar = ' ' ; void setup() { pinMode( 1 , INPUT); pinMode( 2 , INPUT); bleShield.begin(19200); _ABVAR_1_var = HIGH ; motor_dc_1.setSpeed(255); motor_dc_1.run(RELEASE); } void loop() { if (( ( digitalRead(1) ) == ( _ABVAR_1_var ) )) { motor_dc_1.setSpeed(255); motor_dc_1.run(FORWARD); } else { if (( ( digitalRead(2) ) == ( _ABVAR_1_var ) )) { motor_dc_1.setSpeed(255); motor_dc_1.run(BACKWARD); } } while ( bleShield.available() ) { _ABVAR_2_blvar = bleShield.read(); if (( ( _ABVAR_2_blvar ) == ('1') )) { motor_dc_1.setSpeed(255); motor_dc_1.run(FORWARD); } if (( ( _ABVAR_2_blvar ) == ('2') )) { motor_dc_1.setSpeed(255); motor_dc_1.run(BACKWARD); } } }
Chưa hiểu lắm về tính năng viết bài trên web này, thấy nó hơi rắc rối. Bản này mình test với 2 nút bấm điều khiển motor thư viện AFMotor.h
Sau đó là test với module Bluetooth tính năng tín hiệu thông qua điện thoại android có cài app dk, đã có bạn viết bài này rồi, mọi người tham khảo:
- http://arduino.vn/bai-viet/654-lam-xe-dieu-khien-tu-xa-bang-bluetooth-dieu-khien-bang-android-voi-app-inventor ,
- http://arduino.vn/bai-viet/657-huong-dan-su-dung-appinventor-lap-trinh-ung-dung-dieu-khien-xe-qua-bluetooth-ma-khong
Cám ơn đã xem bài
p/s : trong bài có một số pin tui để nhầm : pin 1, pin 2, pin của BLE : ae test trên mạch thực tế thì chỉnh lại nhé. vì tui mô phỏng arduino code nó chạy bình thường ^^
Link file thiết kế của ardublock https://drive.google.com/file/d/0Bz0oKsQSelRVa0FZNUZkNzY0Rms/view?usp=sharing (mirror)