งานที่ 17 หุ่นยนต์ Arduino UNO + L298P บังคับด้วย Bluetooth
HARDWARE
SOFTWARE
/*
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);
}
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);
}
ความคิดเห็น
แสดงความคิดเห็น