반응형
AX-12 모터 제어하면서 제어된 후의 각도값을 블루투스통신을 통해 전송하는 소스.
iOS 단말기 상에서 모터값을 확인 할 수 있다.
아두이노 소스가 다이나믹셀 스타트랑 엔드 타이밍이 안맞으면 잘 안움직이는것 같다.
일단 임시로 아두이노 소스만 올림...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #include <DynamixelSerial.h> #include <SoftwareSerial.h> #define LED13 0x0D #define BUFFERSIZE 10 int Temperature,Voltage,Position; int i, count, ss=0, check_sum = 0, num = 0; int BT_num, SL_num, val = 0; int pirstate = LOW, PIR_pin = 5; char buf[BUFFERSIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09}; char textdata[11] = "0123456789"; char b_SOF = 0x01; char b_EOF = 0x1A; char Rec, conv[50]; String keep = ""; SoftwareSerial BTSerial(4, 5); // 74HC241 void setup(){ Serial.begin(9600); Dynamixel.begin(1000000,2); BTSerial.begin(57600); Dynamixel.move(5,512); delay(100); } void loop(){ String val; keep = ""; if (BTSerial.available()>0) { digitalWrite(LED13, HIGH); while (BTSerial.available()) { Rec = BTSerial.read(); keep.concat(Rec); } } val = keep; if (val == "1") { digitalWrite(LED13, HIGH); Dynamixel.move(5,200); } else if (val == "2") { digitalWrite(LED13, HIGH); Dynamixel.move(5,300); } else if (val == "3") { digitalWrite(LED13, HIGH); Dynamixel.move(5,400); } else if (val == "4") { digitalWrite(LED13, HIGH); Dynamixel.move(5,500); } else if (val == "5") { digitalWrite(LED13, HIGH); Dynamixel.move(5,600); } else if (val == "6") { digitalWrite(LED13, HIGH); Dynamixel.move(5,700); } delay(500); Position = Dynamixel.readPosition(5); delay(500); Dynamixel.end(); BTSerial.print(0x05);//Starting signal BTSerial.print(Position); BTSerial.print(0xFF);//Ending signal digitalWrite(LED13, LOW); Dynamixel.begin(1000000,2); delay(100); } |
반응형