OS/Arduino
rc_car (Keyes L298P - 모터드라이버 쉴드)
파란크리스마스
2017. 10. 4. 03:49
728x90
출처 : 모터드라이버 쉴드 L298P를 이용하는 방법[아두이노 강좌] : 네이버 블로그
#include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출 // Bluetooth 관련 int blueRx=2; //Rx (받는핀 설정) int blueTx=3; //Tx (보내는핀 설정) SoftwareSerial btSerial(blueTx, blueRx); //시리얼 통신을 위한 객체선언 String myString=""; //받는 문자열 int E1 = 10; // 1번(A) 모터 Enable int E2 = 11; // 2번(B) 모터 Enable int M1 = 12; // 1번(A) 모터 PWM int M2 = 13; // 2번(B) 모터 PWM #define MOTER_SPEED 255 int value; void setup() { pinMode(M1, OUTPUT); // 출력핀 설정 pinMode(M2, OUTPUT); Serial.begin(9600); btSerial.begin(9600); //블루투스 시리얼 개방 } void loop() { // put your main code here, to run repeatedly: myString=""; while(btSerial.available()) //mySerial에 전송된 값이 있으면 { char myChar = (char)btSerial.read(); //mySerial int 값을 char 형식으로 변환 myString+=myChar; //수신되는 문자를 myString에 모두 붙임 (1바이트씩 전송되는 것을 연결) delay(5); //수신 문자열 끊김 방지 } if (myString.length() > 0) { Serial.println(myString); if (myString == "F") { motor_forward(); } else if (myString == "S") { motor_stop(); } else if (myString == "R") { motor_right(); } else if (myString == "L") { motor_left(); } else if (myString == "B") { motor_backwards(); } } } void motor_stop() { digitalWrite(M1, HIGH); digitalWrite(M2, HIGH); analogWrite(E1, 0); analogWrite(E2, 0); } void motor_backwards() { motor_backwards(MOTER_SPEED); } void motor_backwards(int speed) { digitalWrite(M1, HIGH); digitalWrite(M2, HIGH); analogWrite(E1, speed); analogWrite(E2, speed); } void motor_forward() { motor_forward(MOTER_SPEED); } void motor_forward(int speed) { digitalWrite(M1, LOW); digitalWrite(M2, LOW); analogWrite(E1, speed); analogWrite(E2, speed); } void motor_right() { motor_right(MOTER_SPEED); } void motor_right(int speed) { digitalWrite(M1, HIGH); digitalWrite(M2, LOW); analogWrite(E1, speed); analogWrite(E2, speed); } void motor_left() { motor_left(MOTER_SPEED); } void motor_left(int speed) { digitalWrite(M1, LOW); digitalWrite(M2, HIGH); analogWrite(E1, speed); analogWrite(E2, speed); }