로코보드를 스크래치나 아두이노에서 다양하게 활용하기!
활용 1 :
모터와 적외선 모듈을 결합해서 라인트레이서나 장애물 회피할 수 있는 로봇을 구현할 수 있다.
활용 2 :
거리센서나 초음파 센서를 이용해서 장애물 감지나 거리 측정을 프로그래밍해 볼 수 있다.
활용 3 :
서보모터를 아두이노에서 제어해 볼 수 있다.
활용 4 :
블루투스를 로코보드와 연결해서 안드로이드 어플을 제작 무선으로 움직이는 로봇을 만들 수 있다.
동영상
소스코드
#include <SoftwareSerial.h>
const int M1A = 2; // 방향 조절
const int M1B = 7; // 방향 조절
const int pwmM1 = 3; //속도 조절 (0 ~ 255) 8bit
const int M2A = 8; // 방향 조절
const int M2B = 12; // 방향 조절
const int pwmM2 = 9; //속도 조절 (0 ~ 255) 8bit
int bTx = 1;
int bRx = 0;
int data = 0;
SoftwareSerial bluetooth(bTx, bRx);
void Forward(int value){ // 앞으로
digitalWrite(M1A, HIGH);
digitalWrite(M1B, LOW);
analogWrite(pwmM1, value);
digitalWrite(M2A, HIGH);
digitalWrite(M2B, LOW);
analogWrite(pwmM2, value);
}
void Reverse(int value) { // 뒤로
digitalWrite(M1A, LOW);
digitalWrite(M1B, HIGH);
analogWrite(pwmM1, value);
digitalWrite(M2A, LOW);
digitalWrite(M2B, HIGH);
analogWrite(pwmM2, value);
}
void LeftTurn(int value){ // 제자리에서 왼쪽회전
digitalWrite(M1A, LOW);
digitalWrite(M1B, HIGH);
analogWrite(pwmM1, value);
digitalWrite(M2A, HIGH);
digitalWrite(M2B, LOW);
analogWrite(pwmM2, value);
}
void LeftMove(int valueM1, int valueM2){ // 왼쪽으로 움직이기
digitalWrite(M1A, HIGH);
digitalWrite(M1B, LOW);
analogWrite(pwmM1, valueM1);
digitalWrite(M2A, HIGH);
digitalWrite(M2B, LOW);
analogWrite(pwmM2, valueM2);
}
void RightTurn(int value){ // 제자리에서 오른쪽 회전
digitalWrite(M1A, HIGH);
digitalWrite(M1B, LOW);
analogWrite(pwmM1, value);
digitalWrite(M2A, LOW);
digitalWrite(M2B, HIGH);
analogWrite(pwmM2, value);
}
void RightMove(int valueM1, int valueM2){ // 오른족으로 움직이기
digitalWrite(M1A, HIGH);
digitalWrite(M1B, LOW);
analogWrite(pwmM1, valueM1);
digitalWrite(M2A, HIGH);
digitalWrite(M2B, LOW);
analogWrite(pwmM2, valueM2);
}
void Stop(boolean useBreak = true) { // true ? 급멈춤
if(useBreak){ // false ? 부드럽게 멈춤
digitalWrite(M1A, HIGH);
digitalWrite(M1B, HIGH);
analogWrite(pwmM1, 255);
digitalWrite(M2A, HIGH);
digitalWrite(M2B, HIGH);
analogWrite(pwmM2, 255);
}else{
digitalWrite(M1A, LOW);
digitalWrite(M1B, LOW);
analogWrite(pwmM1, 0);
digitalWrite(M2A, LOW);
digitalWrite(M2B, LOW);
analogWrite(pwmM2, 0);
}
}
void setup(){
bluetooth.begin(9600);
}
void loop(){
data = bluetooth.read();
switch(data){
case 0:
Stop(true);
delay(30); break;
case 4:
LeftTurn(255);
delay(30); break;
case 8:
RightTurn(255);
delay(30); break;
case 16:
Forward(255);
delay(30); break;
case 20:
LeftMove(100,255);
delay(30); break;
case 24:
RightMove(255,100);
delay(30); break;
case 32:
Reverse(255);
delay(30); break;
}
}
소스코드출처<http://www.r-steam.com>