スマホで動くロボットアームを作る
続き
スマホから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を交互に送っています。
テストの様子
今は256バイトを受け取ってそのデータをループで回しているだけの簡単な物ですが、連続的にデータを受け取りながらステッピングモーターの駆動もしなければならない。
先はまだまだ長い。
また、更新します。