ran君のスマホで操作できる車



電子工作教室のran君、中学二年生が半年ほどかかって完成させたスマホで操作できる車。
ソースコードと、動画を紹介します。

Arduinoでモーター二つを制御しています。
またbluetoothのモジュールをつけてスマホで操作できるようにしました。
ジャンプワイヤーでつけていたのですが、すぐ外れてしまうのではんだ付けしてがたがた道を走っても大丈夫な車ができました!次は自作ドローンに挑戦したいですね!

シリアル通信でスマホから送られてくる値が0で止まる。1で進む、2で下がる、3と4で曲がります。

bluetoothの配線

ソースコード


int rsvData = 0;
const int ledPin = 13;

//motor1
const int in1Pin = 9;
const int in2Pin = 10;

//motor2
const int in3Pin = 11;
const int in4Pin = 12;

void setup() {

  pinMode(13, OUTPUT);
  Serial.begin(9600);

  //motor1
  pinMode(in1Pin, OUTPUT);
  pinMode(in2Pin, OUTPUT);
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);

  //motor2
  pinMode(in3Pin, OUTPUT);
  pinMode(in4Pin, OUTPUT);


}


void forward(int value) {
  //motor1
  analogWrite(in1Pin, value);
  analogWrite(in2Pin, 0);

}
void forward2(int value) {
  // motor2
  analogWrite(in3Pin, value);
  analogWrite(in4Pin, 0);

}

void reverse(int value) {
  //motor1
  analogWrite(in1Pin, 0);
  analogWrite(in2Pin, value);
}
  void reverse2(int value) {
  //motor2
  analogWrite(in3Pin, 0);
  analogWrite(in4Pin, value);
}

void despin(boolean useBraKe = true) {
  if (useBraKe) {
    //motor1
    digitalWrite(in1Pin, HIGH);
    digitalWrite(in2Pin, HIGH);
    // motor2
    digitalWrite(in3Pin, HIGH);
    digitalWrite(in4Pin, HIGH);

  }
  else {
    // motor1
    digitalWrite(in1Pin, LOW);
    digitalWrite(in2Pin, LOW);
    //motor2
    digitalWrite(in3Pin, LOW);
    digitalWrite(in4Pin, LOW);
  }
}



void loop() {
  if (Serial.available() > 0) {
    rsvData = Serial.read();
    if (rsvData == '0') {
      despin(false);
      Serial.println("despin");
    delay(100);
    } else if (rsvData == '1') {
      forward(255);
      forward2(255);
      Serial.println("forward");
          delay(100);
    }else if (rsvData == '2') {
      reverse(255);
      reverse2(255);
      Serial.println("reverse");
    delay(100);
  }else if (rsvData == '3') {
      forward(255);
      forward2(0);
      Serial.println("^^");
          delay(100);
  }else if (rsvData == '4') {

      forward(0);
      forward2(255);
      Serial.println("^");
          delay(100);
  }else{
   despin(false);
      Serial.println("despin");
    delay(100);
  }
  
  }


  }

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です