ส่วนประกอบงานวิชา เขียนโปรแกรม ตัวอย่างงานที่ 12
ใบรายงานผลการปฏิบัติงาน
ใบรายงานผลการปฏิบัติงาน
โปรเจคหุ่นยนต์ Arduino UNO + L298P บังคับด้วย Bluetooth
อุปกรณ์ที่ใช้
1. 2WD Smart Car Robot Chassis Kits
2. Arduino UNO R3 - Made in italy
3. L298P Motor Shield Board
4. Jumper (M2M) cable 20cm Male to Male
5. แจ๊กขั้วถ่าน 9 โวลต์ สำหรับ Ardiuno
6. สกรูหัวกลม+น็อตตัวเมีย ยาว 12 มม.
7. รางถ่าน 18650 แบบ 2 ก้อน
8. ถ่านชาร์จ 18650 Panasonic NCR18650B 3.7v จำนวน 2 ก้อน
9. Jumper (F2M) cable 20cm Female to Male
10. Bluetooth HC-06 Slave
1. 2WD Smart Car Robot Chassis Kits
2. Arduino UNO R3 - Made in italy
3. L298P Motor Shield Board
4. Jumper (M2M) cable 20cm Male to Male
5. แจ๊กขั้วถ่าน 9 โวลต์ สำหรับ Ardiuno
6. สกรูหัวกลม+น็อตตัวเมีย ยาว 12 มม.
7. รางถ่าน 18650 แบบ 2 ก้อน
8. ถ่านชาร์จ 18650 Panasonic NCR18650B 3.7v จำนวน 2 ก้อน
9. Jumper (F2M) cable 20cm Female to Male
10. Bluetooth HC-06 Slave
1. ประกอบหุ่นยนต์
เริ่มต้นด้วยการ ประกอบ หุ่นยนต์ UNO + L298P และ ทดสอบการเคลื่อนที่ของหุ่นยนต์ ตามลิงค์ บทความด้านล่าง
https://robotsiam.blogspot.com/2017/12/uno-l298p.html
เริ่มต้นด้วยการ ประกอบ หุ่นยนต์ UNO + L298P และ ทดสอบการเคลื่อนที่ของหุ่นยนต์ ตามลิงค์ บทความด้านล่าง
https://robotsiam.blogspot.com/2017/12/uno-l298p.html
2. ประกอบ Bluetooth HC-06
HC-06 <-> L298P
VCC <-> 5V
GND <-> Gnd
TXD <-> RX(0)
RXD <-> TX(1)
3. การอัพโหลดโปรแกรม
/*
Bluetooth Robot with Arduino UNO + L298P
For more details visit:
https://robotsiam.blogspot.com/2017/12/uno-l298p-bluetooth.html
*/
#include <SoftwareSerial.h>
int incomingByte = 0;
/*-------definning Outputs------*/
int MA1 = 12; // Motor A1
int MA2 = 3; // Motor A2
int PWM_A = 10; // Speed Motor A
int MB1 = 13; // Motor B1
int MB2 = 8; // Motor B2
int PWM_B = 11; // Speed Motor B
int SPEED = 200; // Speed PWM สามารถปรับความเร็วได้ถึง 0 - 255
void setup() {
//Setup Channel A
pinMode(12, OUTPUT); //Motor A1
pinMode(3, OUTPUT); //Motor A2
pinMode(10, OUTPUT); //Speed PWM Motor A
//Setup Channel B
pinMode(13, OUTPUT); //Motor B1
pinMode(8, OUTPUT); //Motor B2
pinMode(11, OUTPUT); //Speed PWM Motor B
Serial.begin(9600);
Serial.println("Motor Ready");
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
}
switch (incomingByte)
{
case 'S':
// stop all motors
{
Stop(1);
Serial.println("Stop\n");
incomingByte = '*';
}
break;
case 'F':
// turn it on going forward
{
Forward(1);
Serial.println("Forward\n");
incomingByte = '*';
}
break;
case 'B':
// turn it on going backward
{
Backward(1);
Serial.println("Backward\n");
incomingByte = '*';
}
break;
case 'R':
// turn right
{
turnRight(1);
Serial.println("Rotate Right\n");
incomingByte = '*';
}
break;
case 'L':
// turn left
{
turnLeft(1);
Serial.println("Rotate Left\n");
incomingByte = '*';
}
break;
}
}
void Forward(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, HIGH);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, HIGH);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, SPEED);
delay(time);
}
void Backward(int time)
{
digitalWrite(MA1, HIGH);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, LOW);
digitalWrite(MB2, HIGH);
analogWrite(PWM_B, SPEED);
delay(time);
}
void turnLeft(int time)
{
digitalWrite(MA1, HIGH);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, LOW);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, 0);
delay(time);
}
void turnRight(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, 0);
digitalWrite(MB1, LOW);
digitalWrite(MB2, HIGH);
analogWrite(PWM_B, SPEED);
delay(time);
}
void Stop(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, 0);
digitalWrite(MB1, LOW);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, 0);
delay(time);
HC-06 <-> L298P
VCC <-> 5V
GND <-> Gnd
TXD <-> RX(0)
RXD <-> TX(1)
VCC <-> 5V
GND <-> Gnd
TXD <-> RX(0)
RXD <-> TX(1)
/*
Bluetooth Robot with Arduino UNO + L298P
For more details visit:
https://robotsiam.blogspot.com/2017/12/uno-l298p-bluetooth.html
*/
#include <SoftwareSerial.h>
int incomingByte = 0;
/*-------definning Outputs------*/
int MA1 = 12; // Motor A1
int MA2 = 3; // Motor A2
int PWM_A = 10; // Speed Motor A
int MB1 = 13; // Motor B1
int MB2 = 8; // Motor B2
int PWM_B = 11; // Speed Motor B
int SPEED = 200; // Speed PWM สามารถปรับความเร็วได้ถึง 0 - 255
void setup() {
//Setup Channel A
pinMode(12, OUTPUT); //Motor A1
pinMode(3, OUTPUT); //Motor A2
pinMode(10, OUTPUT); //Speed PWM Motor A
//Setup Channel B
pinMode(13, OUTPUT); //Motor B1
pinMode(8, OUTPUT); //Motor B2
pinMode(11, OUTPUT); //Speed PWM Motor B
Serial.begin(9600);
Serial.println("Motor Ready");
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
}
switch (incomingByte)
{
case 'S':
// stop all motors
{
Stop(1);
Serial.println("Stop\n");
incomingByte = '*';
}
break;
case 'F':
// turn it on going forward
{
Forward(1);
Serial.println("Forward\n");
incomingByte = '*';
}
break;
case 'B':
// turn it on going backward
{
Backward(1);
Serial.println("Backward\n");
incomingByte = '*';
}
break;
case 'R':
// turn right
{
turnRight(1);
Serial.println("Rotate Right\n");
incomingByte = '*';
}
break;
case 'L':
// turn left
{
turnLeft(1);
Serial.println("Rotate Left\n");
incomingByte = '*';
}
break;
}
}
Bluetooth Robot with Arduino UNO + L298P
For more details visit:
https://robotsiam.blogspot.com/2017/12/uno-l298p-bluetooth.html
*/
#include <SoftwareSerial.h>
int incomingByte = 0;
/*-------definning Outputs------*/
int MA1 = 12; // Motor A1
int MA2 = 3; // Motor A2
int PWM_A = 10; // Speed Motor A
int MB1 = 13; // Motor B1
int MB2 = 8; // Motor B2
int PWM_B = 11; // Speed Motor B
int SPEED = 200; // Speed PWM สามารถปรับความเร็วได้ถึง 0 - 255
void setup() {
//Setup Channel A
pinMode(12, OUTPUT); //Motor A1
pinMode(3, OUTPUT); //Motor A2
pinMode(10, OUTPUT); //Speed PWM Motor A
//Setup Channel B
pinMode(13, OUTPUT); //Motor B1
pinMode(8, OUTPUT); //Motor B2
pinMode(11, OUTPUT); //Speed PWM Motor B
Serial.begin(9600);
Serial.println("Motor Ready");
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
}
switch (incomingByte)
{
case 'S':
// stop all motors
{
Stop(1);
Serial.println("Stop\n");
incomingByte = '*';
}
break;
case 'F':
// turn it on going forward
{
Forward(1);
Serial.println("Forward\n");
incomingByte = '*';
}
break;
case 'B':
// turn it on going backward
{
Backward(1);
Serial.println("Backward\n");
incomingByte = '*';
}
break;
case 'R':
// turn right
{
turnRight(1);
Serial.println("Rotate Right\n");
incomingByte = '*';
}
break;
case 'L':
// turn left
{
turnLeft(1);
Serial.println("Rotate Left\n");
incomingByte = '*';
}
break;
}
}
void Forward(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, HIGH);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, HIGH);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, SPEED);
delay(time);
}
void Backward(int time)
{
digitalWrite(MA1, HIGH);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, LOW);
digitalWrite(MB2, HIGH);
analogWrite(PWM_B, SPEED);
delay(time);
}
void turnLeft(int time)
{
digitalWrite(MA1, HIGH);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, LOW);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, 0);
delay(time);
}
void turnRight(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, 0);
digitalWrite(MB1, LOW);
digitalWrite(MB2, HIGH);
analogWrite(PWM_B, SPEED);
delay(time);
}
void Stop(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, 0);
digitalWrite(MB1, LOW);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, 0);
delay(time);
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, HIGH);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, HIGH);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, SPEED);
delay(time);
}
void Backward(int time)
{
digitalWrite(MA1, HIGH);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, LOW);
digitalWrite(MB2, HIGH);
analogWrite(PWM_B, SPEED);
delay(time);
}
void turnLeft(int time)
{
digitalWrite(MA1, HIGH);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, LOW);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, 0);
delay(time);
}
void turnRight(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, 0);
digitalWrite(MB1, LOW);
digitalWrite(MB2, HIGH);
analogWrite(PWM_B, SPEED);
delay(time);
}
void Stop(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, 0);
digitalWrite(MB1, LOW);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, 0);
delay(time);
ไม่มีความคิดเห็น:
แสดงความคิดเห็น