trung nghia vu gửi vào
- 6267 lượt xem
Tiếp nối bài viết trước, bài viết này cho cái nhìn sâu hơn về các tính năng của ArduBlock mình viết full code cho xe tăng điều khiển cơ bản, làm cho con chơi ^^
Phần code bê nguyên cái thư viện AFMotor.h vô, có sẵn cứ dùng thôi :
void sungtruoc();void sungsau(); => nòng súng hướng về trước/sau
void sungtrai();void sungphai(); => xoay súng sang trái/phải
void lui(); void tien();void retrai();void rephai(); void xoayphai();void xoaytrai();
void battatden();
#include <SoftwareSerial.h> #include <AFMotor.h> SoftwareSerial bleShield(2, 3); AF_DCMotor motor_dc_1(1, MOTOR12_64KHZ); AF_DCMotor motor_dc_2(2, MOTOR12_64KHZ); AF_DCMotor motor_dc_3(3, MOTOR34_64KHZ); AF_DCMotor motor_dc_4(4, MOTOR34_64KHZ); char _ABVAR_1_var = ' ' ; int _ABVAR_2_dem = 0 ; void sungtruoc(); void lui(); void xoaytrai(); void sungtrai(); void retrai(); void tien(); void xoayphai(); void battatden(); void sungsau(); void sungphai(); void rephai(); void setup() { bleShield.begin(19200); pinMode( 9 , OUTPUT); motor_dc_1.setSpeed(255); motor_dc_1.run(RELEASE); motor_dc_2.setSpeed(255); motor_dc_2.run(RELEASE); motor_dc_3.setSpeed(100); motor_dc_3.run(RELEASE); motor_dc_4.setSpeed(100); motor_dc_4.run(RELEASE); } void loop() { if (bleShield.available()) { _ABVAR_1_var = bleShield.read(); if (( ( _ABVAR_1_var ) == ('1') )) { tien(); } if (( ( _ABVAR_1_var ) == ('2') )) { lui(); } if (( ( _ABVAR_1_var ) == ('3') )) { retrai(); } if (( ( _ABVAR_1_var ) == ('4') )) { rephai(); } if (( ( _ABVAR_1_var ) == ('5') )) { xoaytrai(); } if (( ( _ABVAR_1_var ) == ('6') )) { xoayphai(); } if (( ( _ABVAR_1_var ) == ('7') )) { _ABVAR_2_dem = ( _ABVAR_2_dem + 1 ) ; } battatden(); if (( ( _ABVAR_1_var ) == ('a') )) { sungtrai(); } if (( ( _ABVAR_1_var ) == ('b') )) { sungphai(); } if (( ( _ABVAR_1_var ) == ('c') )) { sungsau(); } if (( ( _ABVAR_1_var ) == ('d') )) { sungtruoc(); } } } void sungtrai() { motor_dc_3.setSpeed(255); motor_dc_3.run(BACKWARD); } void sungtruoc() { motor_dc_4.setSpeed(255); motor_dc_4.run(BACKWARD); } void battatden() { if ( _ABVAR_2_dem % 2 ) != 0 ) { digitalWrite( 9 , LOW ); } else { digitalWrite( 9 , HIGH ); } } void sungphai() { motor_dc_3.setSpeed(255); motor_dc_3.run(FORWARD); } void sungsau() { motor_dc_4.setSpeed(255); motor_dc_4.run(FORWARD); } void xoayphai() { motor_dc_1.setSpeed(255); motor_dc_1.run(BACKWARD); motor_dc_2.setSpeed(255); motor_dc_2.run(FORWARD); } void xoaytrai() { motor_dc_1.setSpeed(255); motor_dc_1.run(FORWARD); motor_dc_2.setSpeed(255); motor_dc_2.run(BACKWARD); } void rephai() { motor_dc_1.setSpeed(255); motor_dc_1.run(RELEASE); motor_dc_2.setSpeed(255); motor_dc_2.run(FORWARD); } void lui() { motor_dc_1.setSpeed(255); motor_dc_1.run(BACKWARD); motor_dc_2.setSpeed(255); motor_dc_2.run(BACKWARD); } void tien() { motor_dc_1.setSpeed(255); motor_dc_1.run(FORWARD); motor_dc_2.setSpeed(255); motor_dc_2.run(FORWARD); } void retrai() { motor_dc_1.setSpeed(255); motor_dc_1.run(FORWARD); motor_dc_2.setSpeed(255); motor_dc_2.run(RELEASE); }
Phần appInventor dk có giao diện đơn sơ như sau:
(Bê nguyên cái style TX đồ chơi tank vô, chứ chả nghĩ gì ^^ ) Bạn nào chơi tank có thể thiết kế thêm bộ phận "khói", "bắn đạn"...
File để các bạn chỉnh theo ý thích của mình https://drive.google.com/open?id=0Bz0oKsQSelRVcVpEdnlYeUVyc00 (mirror)
File ArdunoBlock : https://drive.google.com/open?id=0Bz0oKsQSelRVOWRiX09SQUVIems (mirror)
Cám ơn đã xem cái thú vui nho nhỏ của cha con tui ^^ giờ thì lên kế hoạch "sản xuất" thôi ^^!