// ๋ชจํฐB์ ํ๋ฐฐ์ด
#define B1A 5// motor B ์๋์กฐ์
#define B1B 6// motor B ๋ฐฉํฅ์กฐ์
// ๋ชจํฐA์ ํ๋ฐฐ์ด
#define A1A 9 // motor A ์๋์กฐ์ analogWrite
#define A1B 10 // motor A ๋ฐฉํฅ์กฐ์
int carSpeed = 10500; // RC์นด์ ์๋
void setup() {
Serial.begin(9600); // ์๋ฆฌ์ผ ํต์ ์ด๊ธฐํ(0๋ฒ:RX, 1๋ฒ:TX๋ก ์ฌ์ฉ), ํ๋์จ์ด ์๋ฆฌ์ผ ํฌํธ๋ก ๋ธ๋ฃจํฌ์ค์ ํต์
pinMode(A1A, OUTPUT);
pinMode(A1B, OUTPUT);
pinMode(B1A, OUTPUT);
pinMode(B1B, OUTPUT);
}
void loop() {
if (Serial.available()) {
char command = Serial.read(); // ๋ธ๋ฃจํฌ์ค๋ก ์์ ๋ ๋ช
๋ น์ด๋ฅผ command์ ์ ์ฅ
if (command == 'F' || command == 'f') {
// F ๋๋ f๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ๋ ๊ฒฝ์ฐ RC์นด๋ฅผ ์ ์ง์ํค๋ ํจ์ ํธ์ถ
moving_forward();
}
else if (command == 'B' || command == 'b') {
// B ๋๋ b๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ๋ ๊ฒฝ์ฐ RC์นด๋ฅผ ํ์ง์ํค๋ ํจ์ ํธ์ถ
moving_backward();
}
else if (command == 'L' || command == 'l') {
// L ๋๋ l์ ์
๋ ฅ์ผ๋ก ๋ฐ๋ ๊ฒฝ์ฐ RC์นด๋ฅผ ์ผ์ชฝ์ผ๋ก ํ์ ์ํค๋ ํจ์ ํธ์ถ
moving_left();
}
else if (command == 'R' || command == 'r') {
// R ๋๋ r์ ์
๋ ฅ์ผ๋ก ๋ฐ๋ ๊ฒฝ์ฐ RC์นด๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ์ํค๋ ํจ์ ํธ์ถ
moving_right();
}
else if (command == 'S' || command == 's') {
// S ๋๋ s๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ๋ ๊ฒฝ์ฐ RC์นด๋ฅผ ์ ์ง์ํค๋ ํจ์ ํธ์ถ
stop_moving();
}
else {
// ์ธ์ํ์ง ๋ชปํ๋ ๋ช
๋ น์ด ์์ ์ RC์นด๋ฅผ ์ ์ง์ํค๋ ํจ์ ํธ์ถ
stop_moving();
}
}
// ์ผ์ ์๊ฐ ์ง์ฐ
delay(100);
}
void moving_forward() {
// ๋ชจํฐA๋ฅผ ์ ๋ฐฉํฅ์ผ๋ก ํ์
digitalWrite(A1B, HIGH);
analogWrite(A1A, 255-carSpeed);
// ๋ชจํฐB๋ฅผ ์ ๋ฐฉํฅ์ผ๋ก ํ์
digitalWrite(B1B, HIGH);
analogWrite(B1A, 255-carSpeed);/carspeed ์์์๋ก ๋น ๋ฆ ์ ๋ฐฉํฅ, ์ญ๋ฐฉํฅ์ ํด์๋ก ๋น ๋ฆ
}
void moving_backward() {
// ๋ชจํฐA๋ฅผ ์ญ๋ฐฉํฅ์ผ๋ก ํ์
digitalWrite(A1B, LOW);
analogWrite(A1A, carSpeed);
// ๋ชจํฐB๋ฅผ ์ญ๋ฐฉํฅ์ผ๋ก ํ์
digitalWrite(B1B, LOW);
analogWrite(B1A, carSpeed);
}
void moving_left() {
// ๋ชจํฐA๋ฅผ ์ ๋ฐฉํฅ์ผ๋ก ํ์
digitalWrite(A1B, HIGH);
analogWrite(A1A, carSpeed);
// ๋ชจํฐB๋ฅผ ์ญ๋ฐฉํฅ์ผ๋ก ํ์
digitalWrite(B1B, LOW);
analogWrite(B1A, carSpeed);
}
void moving_right() {
// ๋ชจํฐA๋ฅผ ์ญ๋ฐฉํฅ์ผ๋ก ํ์
digitalWrite(A1B, LOW);
analogWrite(A1A, carSpeed);
// ๋ชจํฐB๋ฅผ ์ ๋ฐฉํฅ์ผ๋ก ํ์
digitalWrite(B1B, HIGH);
analogWrite(B1A, carSpeed);
}
void stop_moving() {
// ๋ชจํฐA์ ๋ชจํฐB๋ฅผ ๋นํ์ฑํ
analogWrite(A1A, LOW);
analogWrite(A1B, LOW);
digitalWrite(B1A, LOW);
digitalWrite(B1B, LOW);
}
Comments