무선통신을 통해 모터를 작동시키기위해 xbee를 사용한다.
int a ; // 변수지정
int PWM1 = 6 ; // 모터1의 PWM을 결정
int DIR1 = 7 ; // 모터1의 방향을 결정
int EN1 = 8 ; // 모터1의 작동여부를 결정
int PWM2 = 11 ; // 모터2의 PWM을 결정
int DIR2 = 12 ; // 모터2의 방향을 결정
int EN2 = 13 ; // 모터2의 작동여부를 결정
void setup() {
Serial.begin(9600); // xbee 통신에서 baud를 9600으로 결정한다.
양쪽 xbee 모두 9600으로 셋팅해야한다.
pinMode(PWM1,OUTPUT);
pinMode(DIR1,OUTPUT);
pinMode(EN1,OUTPUT);
pinMode(PWM2,OUTPUT);
pinMode(DIR2,OUTPUT);
pinMode(EN2,OUTPUT); //위의 핀들을 아웃풋의 용도로 사용함을 설정
analogWrite(PWM1,0); // 이제부터 입력이 시작된다.
아래 4줄은 초기 셋팅값. 모두 정지함을 의미한다.
digitalWrite(EN1,LOW);
analogWrite(PWM2,0);
digitalWrite(EN2,LOW);
}
void loop(){ // 여기서 부터 명령어.
if(Serial.available()>0){ // 시리얼 명령어가 들어온다면.. 아래 실행
a = Serial.read() ;
if(a==115){ // 아스키 115는 s를 의미한다.
s를 입력한다면...
Serial.println("STOP"); // STOP을 출력하고
analogWrite(PWM1,0); // 모두 정지.
analogWrite(PWM2,0); // 아래도 모두 같은 방식으로 진행된다.
digitalWrite(DIR1,0);
digitalWrite(DIR2,0);
digitalWrite(EN1,LOW);
digitalWrite(EN2,LOW);
delay(2000);
}
if(a==103){
Serial.println("GO");
analogWrite(PWM1,200);
analogWrite(PWM2,200);
digitalWrite(EN1,HIGH);
digitalWrite(EN2,HIGH);
digitalWrite(DIR1,0);
digitalWrite(DIR2,0);
delay(2000);
}
if(a==98){
Serial.println("BACK");
analogWrite(PWM1,200);
analogWrite(PWM2,200);
digitalWrite(DIR1,1);
digitalWrite(DIR2,1);
digitalWrite(EN1,HIGH);
digitalWrite(EN2,HIGH);
delay(2000);
}
if(a==114){
Serial.println("RIGHT");
analogWrite(PWM1,200);
analogWrite(PWM2,200);
digitalWrite(EN1,HIGH);
digitalWrite(EN2,HIGH);
digitalWrite(DIR1,0);
digitalWrite(DIR2,1);
delay(2000);
}
if(a==108){
Serial.println("LEFT");
analogWrite(PWM1,200);
analogWrite(PWM2,200);
digitalWrite(EN1,HIGH);
digitalWrite(EN2,HIGH);
digitalWrite(DIR1,1);
digitalWrite(DIR2,0);
delay(2000);
}
}
}