スマホでロボットアームを動かす

 

 

スマホでロボットアームを動かす

 

続き

ハンドの開閉をコントロールできるようになりました。

前回のSketch_13.3_BluetoothToLedを少し改造して次のプログラムを作りました。

 

ブレッドボード用に作ったスイッチでの開閉プログラムとの合体

#include "BluetoothSerial.h"
#include "string.h"
BluetoothSerial SerialBT;
char buffer[20];
static int count = 0;
byte ledPins[] = {15, 2, 0, 4, 5, 18, 19, 21};
int ledCounts;

void setup() {
  ledCounts = sizeof(ledPins);
  for (int i = 0; i < ledCounts; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  pinMode(22, OUTPUT);
  pinMode(23, INPUT);
  SerialBT.begin("ESP32test"); //Bluetooth device name
  Serial.begin(9600);
  Serial.println("\nThe device started, now you can pair it with bluetooth!");
}

void loop() {
  while(SerialBT.available())
  {
    buffer[count] = SerialBT.read();
    count++;
  }
  if(count>0){
    Serial.print(buffer);
    if(strncmp(buffer,"led_on",6)==0){
      hand_open();
    }
    if(strncmp(buffer,"led_off",7)==0){
      hand_close();
    }
    count=0;
    memset(buffer,0,20);
  }
}

void hand_open() {
  digitalWrite(ledPins[0], LOW);
  digitalWrite(ledPins[1], HIGH);
  digitalWrite(ledPins[2], LOW);
  digitalWrite(ledPins[3], LOW);
  digitalWrite(ledPins[4], LOW);
  digitalWrite(ledPins[5], HIGH);
  digitalWrite(ledPins[6], HIGH);
  digitalWrite(ledPins[7], LOW);
  delay(10);
  strobe();
  delay(10);
  lf();
}

void hand_close() {
  digitalWrite(ledPins[0], LOW);
  digitalWrite(ledPins[1], HIGH);
  digitalWrite(ledPins[2], LOW);
  digitalWrite(ledPins[3], LOW);
  digitalWrite(ledPins[4], LOW);
  digitalWrite(ledPins[5], LOW);
  digitalWrite(ledPins[6], HIGH);
  digitalWrite(ledPins[7], HIGH);
  delay(10);
  strobe();
  delay(10);
  lf();
}

void lf() {
  digitalWrite(ledPins[0], LOW);
  digitalWrite(ledPins[1], LOW);
  digitalWrite(ledPins[2], LOW);
  digitalWrite(ledPins[3], LOW);
  digitalWrite(ledPins[4], HIGH);
  digitalWrite(ledPins[5], LOW);
  digitalWrite(ledPins[6], HIGH);
  digitalWrite(ledPins[7], LOW);
  delay(10);
  strobe();
}

void strobe() {
  digitalWrite(22, LOW);
  delay(10);
  digitalWrite(22, HIGH);
}

新しく作った関数

hand_open() // ハンド開 led_onで呼ばれる

hand_close()    // ハンド閉 led_offで呼ばれる

lf()                    // 改行コード 

 

アプリ側

M1ボタンに”led_on”を割り当て

M2ボタンに”led_off”を割り当て

 

動作確認できているモノ同士の合体なので問題なく無事作動しました。


www.youtube.com

ハンド開閉の様子

 

次は腰、肩、ひじ、手首、手首回転の5軸を制御していきます。

 

また、更新します。

 

mckeechan.hatenadiary.jp