スマホで動くロボットアームを作る

スマホで動くロボットアームを作る

 

続き

スマホからUSBケーブル経由でstep_dataを書き換えるテストプログラムを作ってみました。

 

byte stepPins = {15, 0, 5, 19, 22, 32, 25, 27};
byte dirPins
= {2, 4, 18, 21, 23, 33, 26, 14};
byte step_data[256] = {0};
byte inData = 0;
int pos = 0;
int num = 0;

void setup() {
  for (int i = 0; i < sizeof(stepPins); i++) {
    pinMode(stepPins[i], OUTPUT);
  }
  for (int i = 0; i < sizeof(dirPins); i++) {
    pinMode(dirPins[i], OUTPUT);
  }
  Serial.begin(115200);
}

void loop() {
  if (Serial.available() > 0) {
    inData = Serial.read();
    step_data[pos++] = inData;
    if (pos == 256)
      pos = 0;
  }
  rotation(num);
  num++;
  if (num == 256) {
     num = 0;
  }
}

void  rotation(int num) {
    digitalWrite(stepPins[0],step_data[num] & 0x01);
    digitalWrite(stepPins[1],step_data[num] & 0x02);
    digitalWrite(stepPins[2],step_data[num] & 0x04);
    digitalWrite(stepPins[3],step_data[num] & 0x08);
    digitalWrite(stepPins[4],step_data[num] & 0x10);
    digitalWrite(stepPins[5],step_data[num] & 0x20);
    digitalWrite(stepPins[6],step_data[num] & 0x40);
    digitalWrite(stepPins[7],step_data[num] & 0x80);
    delay(1);
}

 

データ1

 

データ2

シリアル通信でデータ1、データ2を交互に送っています。

 

テストの様子


www.youtube.com

 

今は256バイトを受け取ってそのデータをループで回しているだけの簡単な物ですが、連続的にデータを受け取りながらステッピングモーターの駆動もしなければならない。

 

先はまだまだ長い。

 

また、更新します。