02-28-2023 02:00 AM
金属製のロボットアームを購入しましたが、動かしてみると意図しない動きをしたときに少し危険な感じなので、おもちゃのロボットアームも購入してみました。
面白いのはLabVIEW LINXで動くEXEが用意されていることです。
Arduino UNOでIOはサーボが4個、可変抵抗が4個、プッシュスイッチが1個です。
LINXという手もありますが、とりあえずサーボ4個だけをシリアルで動かすことにしました。
// digital servo SF006C 0-180°
#include <Servo.h>
Servo Servo_0;
Servo Servo_1;
Servo Servo_2;
Servo Servo_3;
int A_CNT[4]={95,90,90,150};
int A_MIN[4]={20,00,20,10};
int A_MAX[4]={160,155,170,180};
int j_state[4];
String Command;
void setup()
{
Serial.begin(9600);
Servo_0.attach(4);
Servo_1.attach(5);
Servo_2.attach(6);
Servo_3.attach(7);
Servo_0.write(90);
Servo_1.write(90);
Servo_2.write(90);
Servo_3.write(170);
}
void loop()
{
while(Serial.available()) {
Command = Serial.readStringUntil('\n');
parseCommand(Command);
}
}
//str="***,****¥n"
void parseCommand(String str){
int pos=str.indexOf(",");
int len=str.length();
String str1=str.substring(0,pos);
String str2=str.substring(pos+1,len);
int val1=str1.toInt();
int val2=str2.toInt();
j_servo(val1, val2);
//Serial.println(str);
//Serial.println(str1);
//Serial.println(str2);
respond_j_state();
}
void testMove(int num){
int angle=A_CNT[num];
j_servo(num,angle);// move to center
while(angle<=A_MAX[num]){
j_servo(num,angle);
delay(10);
angle++;
}
delay(1000);
while(angle>=A_MIN[num]){
j_servo(num,angle);
delay(10);
angle--;
}
delay(1000);
while(angle<=A_CNT[num]){
j_servo(num,angle);
delay(10);
angle++;
}
delay(2000);
}
void j_servo(int num, int angle){
if(angle >= A_MIN[num] && angle <= A_MAX[num]){
switch(num){
case 0:
Servo_0.write(angle);
break;
case 1:
Servo_1.write(angle);
break;
case 2:
Servo_2.write(angle);
break;
case 3:
Servo_3.write(angle);
break;
default:
;
}
}
}
void respond_j_state(){
Serial.print(Servo_0.read());
Serial.print(",");
Serial.print(Servo_1.read());
Serial.print(",");
Serial.print(Servo_2.read());
Serial.print(",");
Serial.print(Servo_3.read());
Serial.println("");
}
LabVIEW CommunityはMac版2023Q1が出ていたのでダウンロードしてみましたが、VISAも最新にしないと動きませんでした。
所々でサーボの位置を記録して再生する機能をつけたのですが、ダイアグラムで無理矢理感があります。
動作の指示、記録、再生ができる美しいプログラムにできるデザインパターンは如何に。
VIはMac版2023Q1と2021にしたものを添付します。
03-01-2023 05:50 PM