ມາສ້າງລົດບັງຄັບຫຼິ້ນກັນເທາະ!

Khamlek Homsombath
4 min readOct 20, 2017

ສຳຫຼັບຄົນມັກປະດິດ ຫຼື ຢາກເຮັດລົດບັງຄັບໄວ້ຫຼິ້ນ ເຮົາມາພາກັນເຮັດລົດບັງຄັບ ທີ່ບັງຄັບຜ່ານມືຖືແອນດຣອຍຂອງເຮົາເອງແບບທີ່ຄົນເຫັນແລ້ວຢາກຫຼິ້ນນຳເຮົາດີກວ່າ.

ກ່ອນອື່ນກຽມອຸປະກອນກັນກ່ອນເລີຍ

ສິ່ງທີ່ຕ້ອງມີໄດ້ແກ່

  • ບອດ Arduino ສຳຫຼັບໂປຣແກຣມ (ຂ້ອຍໃຊ້ Arduino Nano ເພາະລາຄາຖືກ ແລະ ນໍ້າໜັກເບົາ
  • Bluetooth Module ສຳຫຼັບຮັບຄຳສັ່ງຈາກມືຖື (ຂ້ອຍໃຊ້ HC-05, ສາມາດໃຊ້ HC-06 ໄດ້)
  • ໂຕຄວບຄຸມມໍເຕີ່ ສຳຫຼັບ ບັງຄັບທິດທາງ ແລະ ຄວາມໄວຂອງ ມໍເຕີ ລົດບັງຄັບ (ຂ້ອຍໃຊ້ TB6612FNG)
  • ມໍເຕີ ແລະ ຕີນລົດ ໜຶ່ງຄູ່
  • ແບັດເຕີຣີ ສຳຫຼັບ ບອດ Arduino (ຕ້ອງມີແຮງດັນໄຟແຕ່ 4.2 ຫາ 9 ໂວນ, ຂ້ອຍໃຊ້ 4.2ໂວນ ຈາກ Power bank ເກົ່າ)
  • ແບັດເຕີຣີ ສຳຫຼັບ ມໍເຕີ (ຕ້ອງມີແຮງດັນແຕ່ 6 ຫາ 12 ໂວນ, ຂ້ອຍໃຊ້ 8.4 ໂວນ ຈາກ Power bank ເກົ່າ ຄື ໃຊ້ 4.2 ໂວນ ຈຳນວນ ສອງກ້ອນຕໍ່ລຽນກັນ)
  • ຕີນລໍ້ແບບໝູນໄດ້: ຈະໃຊ້ລໍ້ດຽວ ຫຼື ສອງລໍ້ ກໍ່ໄດ້ ສຳຫຼັບຊົງໂຕ ແລະສະດວກໃນການລ້ຽວ.
  • ໂຄງລົດ: ສາມາດໃຊ້ ກະດານ, ໄມ້ອັດ, ແຜ່ນອະຄຣີລິກ ຫຼື ຈະໃຊ້ກະຕຸກ-ກະປັ໋ອງ ກໍ່ໄດ້ ແລ້ວແຕ່ມັກ ຫຼື ເທົ່າທີ່ຫາໄດ້, ສ່ວນຂ້ອຍໃຊ້ ແຜ່ນກະດານໄຟຟ້າ ສຳຫຼັບວາງປັກສຽບໃນເຮືອນ
  • ອື່ນໆ: ກາວ, ຕອກຝຣັ່ງ, ປືນກາວຮ້ອນ, ນັ໋ອດ, ສາຍໄຟ

ຕໍ່ວົງຈອນ

ຕໍ່ Arduino ກັບ HC-05

D12 – Rx

D11 – Tx

+5v – VCC

GND – GND

ຕໍ່ Arduino – TB6612FNG

D5 – PWMA

D9 – AIN1

D10 – AIN2

D6 – PWMB

D7 – BIN1

D8 – BIN2

5v — VCC

GND – GND

ຕໍ່ TB6612FNG – Battery

GND to V-

VM to V+

Arduino – LED (Optional)

D13 – LED+

GND – LED-

ໂປຣແກຣມ

Arduino Code

/* RC_Bluetooth_2017_v4
* By: Khamlek HOMSOMBATH
* Date: Oct 7, 2017
* Download Controller for Android : https://play.google.com/store/apps/details?id=com.lekpkd.duinojoy
*/

#include <SoftwareSerial.h>

// arduino>>bluetooth
// D12 >>> Rx
// D11 >>> Tx
SoftwareSerial bluetooth(11, 12); // RX, TX

#define ledpin 13 // Connected to LED
#define PWMA 5
#define AIN1 9
#define AIN2 10

#define PWMB 6
#define BIN1 7
#define BIN2 8

void setup() {
Serial.begin(19200);
bluetooth.begin(9600);

pinMode(ledpin,OUTPUT);
pinMode(PWMA,OUTPUT); // PWM A
pinMode(PWMB,OUTPUT); // PWM B
pinMode(BIN1,OUTPUT); // B
pinMode(BIN2,OUTPUT); // B
pinMode(AIN1,OUTPUT); // A
pinMode(AIN2,OUTPUT); // A

analogWrite(PWMA, 0);
analogWrite(PWMB, 0);
}

String data = “”;
void loop() {
while(bluetooth.available()){
char a = bluetooth.read();
if(a==’)’) {
setData(data);
data = “”;
return;
}
data += a;
}
}

int ledVal = 0;
void setData(String data){
data.trim();

int index = data.indexOf(“,”);
if(index != -1){
int angle = data.substring(0,index).toInt();
int strength = data.substring(index + 1).toInt();

digitalWrite(BIN1,0);
digitalWrite(BIN2,0);
digitalWrite(AIN1,0);
digitalWrite(AIN2,0);
if (angle < 180){
digitalWrite(BIN1,1);
digitalWrite(AIN1,1);

if(angle < 90){
analogWrite(PWMA, strength * 255 / 100);
analogWrite(PWMB, strength * (angle * 255 / 90) / 100);
}else if(angle > 90){
analogWrite(PWMA, strength * ((180 — angle) * 255 / 90) / 100);
analogWrite(PWMB, strength * 255 / 100);
}else{
analogWrite(PWMA, strength * 255 / 100);
analogWrite(PWMB, strength * 255 / 100);
}
}else if(angle > 180){
digitalWrite(BIN2,1);
digitalWrite(AIN2,1);

if(angle > 270){
analogWrite(PWMA, strength * 255 / 100);
analogWrite(PWMB, strength * ((360 — angle) * 255 / 90) / 100);
}else if(angle < 270){
analogWrite(PWMA, strength * ((90 — (270 — angle)) * 255 / 90) / 100);
analogWrite(PWMB, strength * 255 / 100);
}else{
analogWrite(PWMA, strength * 255 / 100);
analogWrite(PWMB, strength * 255 / 100);
}
}
return;
}

if(data.equals(“a”)){
if(ledVal==1) ledVal=0; else ledVal=1;
digitalWrite(ledpin, ledVal);
return;
}

Serial.print(“Recieved: “);
Serial.println(data);
}

ຕັ້ງແອັບມືເກມ ໃສ່ ມືຖື

ດາວໂຫຼດ Duino Joy

Link: https://play.google.com/store/apps/details?id=com.lekpkd.duinojoy

ຫຼັງຈາກຕິດຕັ້ງສຳເຫຼັດ ກໍ່ທຳການເຊື່ອມຕໍ່ bluetooth ແລ້ວ Connect ກໍຖືວ່າສຳເຫຼັດ

https://youtu.be/_gzp-_chx7I

ຂອບໃຈ

--

--