1. 아두이노 전용 + 조종앱(앱인벤터)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/20679759-6423-483f-bd20-ec38161a8b97/SE-ea266c52-5bf8-4f9b-b5dc-6afe564ce361-removebg-preview.png

아두이노 소스코드

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

int PWM1 = 5;   //M1 speed (0~255)
int DIR1 = 4;   //M1 direction (HIGH or LOW)
int PWM2 = 6;   //M2 speed (0~255)
int DIR2 = 7;   //M2 direction (HIGH or LOW)
int PWM3 = 9;   //M3 speed (0~255)
int DIR3 = 8;   //M3 direction (HIGH or LOW)
int PWM4 = 11;  //M4 speed (0~255)
int DIR4 = 12;  //M4 direction (HIGH or LOW)

int spd = 150;

void setup() {
  mySerial.begin(9600);
}

void loop() { // run over and over
  if (mySerial.available()) {
    char ch = mySerial.read();
    if (ch=='s') st();
    else if(ch=='0') fw();
    else if(ch=='1') bw();
    else if(ch=='2') fl();
    else if(ch=='3') fr();
    else if(ch=='4') lt();
    else if(ch=='5') rt();
    else if(ch=='6') bl();
    else if(ch=='7') br();
    else if(ch=='8') tl();
    else if(ch=='9') tr();
  }

}

void fw(){
    digitalWrite(DIR1, LOW);
    digitalWrite(DIR2, HIGH);
    digitalWrite(DIR3, HIGH);
    digitalWrite(DIR4, LOW);
    analogWrite(PWM1, spd);   //PWM Speed Control
    analogWrite(PWM2, spd);   //PWM Speed Control
    analogWrite(PWM3, spd);   //PWM Speed Control
    analogWrite(PWM4, spd);   //PWM Speed Control
}

void bw(){
    digitalWrite(DIR1, HIGH);
    digitalWrite(DIR2, LOW);
    digitalWrite(DIR3, LOW);
    digitalWrite(DIR4, HIGH);
    analogWrite(PWM1, spd);   //PWM Speed Control
    analogWrite(PWM2, spd);   //PWM Speed Control
    analogWrite(PWM3, spd);   //PWM Speed Control
    analogWrite(PWM4, spd);   //PWM Speed Control
}

void fl(){
    digitalWrite(DIR1, LOW);
    digitalWrite(DIR2, HIGH);
    digitalWrite(DIR3, HIGH);
    digitalWrite(DIR4, LOW);
    analogWrite(PWM1, 0);   //PWM Speed Control
    analogWrite(PWM2, spd);   //PWM Speed Control
    analogWrite(PWM3, 0);   //PWM Speed Control
    analogWrite(PWM4, spd);   //PWM Speed Control
}

void fr(){
    digitalWrite(DIR1, LOW);
    digitalWrite(DIR2, HIGH);
    digitalWrite(DIR3, HIGH);
    digitalWrite(DIR4, LOW);
    analogWrite(PWM1, spd);   //PWM Speed Control
    analogWrite(PWM2, 0);   //PWM Speed Control
    analogWrite(PWM3, spd);   //PWM Speed Control
    analogWrite(PWM4, 0);   //PWM Speed Control
}

void lt(){
    digitalWrite(DIR1, HIGH);
    digitalWrite(DIR2, HIGH);
    digitalWrite(DIR3, LOW);
    digitalWrite(DIR4, LOW);
    analogWrite(PWM1, spd);   //PWM Speed Control
    analogWrite(PWM2, spd);   //PWM Speed Control
    analogWrite(PWM3, spd);   //PWM Speed Control
    analogWrite(PWM4, spd);   //PWM Speed Control
}

void rt(){
    digitalWrite(DIR1, LOW);
    digitalWrite(DIR2, LOW);
    digitalWrite(DIR3, HIGH);
    digitalWrite(DIR4, HIGH);
    analogWrite(PWM1, spd);   //PWM Speed Control
    analogWrite(PWM2, spd);   //PWM Speed Control
    analogWrite(PWM3, spd);   //PWM Speed Control
    analogWrite(PWM4, spd);   //PWM Speed Control
}

void bl(){
    digitalWrite(DIR1, HIGH);
    digitalWrite(DIR2, LOW);
    digitalWrite(DIR3, LOW);
    digitalWrite(DIR4, HIGH);
    analogWrite(PWM1, spd);   //PWM Speed Control
    analogWrite(PWM2, 0);   //PWM Speed Control
    analogWrite(PWM3, spd);   //PWM Speed Control
    analogWrite(PWM4, 0);   //PWM Speed Control
}

void br(){
    digitalWrite(DIR1, HIGH);
    digitalWrite(DIR2, LOW);
    digitalWrite(DIR3, LOW);
    digitalWrite(DIR4, HIGH);
    analogWrite(PWM1, 0);   //PWM Speed Control
    analogWrite(PWM2, spd);   //PWM Speed Control
    analogWrite(PWM3, 0);   //PWM Speed Control
    analogWrite(PWM4, spd);   //PWM Speed Control
}

void tl(){
    digitalWrite(DIR1, HIGH);
    digitalWrite(DIR2, LOW);
    digitalWrite(DIR3, HIGH);
    digitalWrite(DIR4, LOW);
    analogWrite(PWM1, spd);   //PWM Speed Control
    analogWrite(PWM2, spd);   //PWM Speed Control
    analogWrite(PWM3, spd);   //PWM Speed Control
    analogWrite(PWM4, spd);   //PWM Speed Control
}

void tr(){
    digitalWrite(DIR1, LOW);
    digitalWrite(DIR2, HIGH);
    digitalWrite(DIR3, LOW);
    digitalWrite(DIR4, HIGH);
    analogWrite(PWM1, spd);   //PWM Speed Control
    analogWrite(PWM2, spd);   //PWM Speed Control
    analogWrite(PWM3, spd);   //PWM Speed Control
    analogWrite(PWM4, spd);   //PWM Speed Control
}

void st(){
    digitalWrite(DIR1, LOW);
    digitalWrite(DIR2, LOW);
    digitalWrite(DIR3, LOW);
    digitalWrite(DIR4, LOW);
    analogWrite(PWM1, 0);   //PWM Speed Control
    analogWrite(PWM2, 0);   //PWM Speed Control
    analogWrite(PWM3, 0);   //PWM Speed Control
    analogWrite(PWM4, 0);   //PWM Speed Control
}

소스코드 다운로드하기

MecanumWheel.ino

메카넘휠 조종 어플

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/31f08284-8d85-4a7f-94ef-23629ec50c69/Screenshot_20200318-172246_(1).jpg

어플 다운로드 하기

mecanumwheel_controller.zip

앱 다운로드 받기 링크 : https://blog.naver.com/mk1017sh/221860292105

[ 구매링크 ]

아두이노 우노 http://robomecha.shop/product/detail.html?product_no=598&cate_no=102&display_group=1 메카넘휠 플랫폼 http://robomecha.shop/product/detail.html?product_no=643&cate_no=122&display_group=1 4채널 모터드라이버 쉴드 3.0 http://robomecha.shop/product/detail.html?product_no=1302&cate_no=102&display_group=1 AA x 6 배터리홀더 http://robomecha.shop/product/detail.html?product_no=811&cate_no=119&display_group=1 블루투스모듈(HC-06) http://robomecha.shop/product/detail.html?product_no=114&cate_no=93&display_group=1


2. 아두이노 + RC100B 조종기

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/da77e3a5-c089-45e5-858c-fa388a9dede7/3.jpg