Dynamixel AX12(1); int L,R,CR=2800,CL=2800; void setup(){ InitAX12(); InitIR(); } void loop(){ L=ADC(1);R=ADC(4); if(L>CL&&R>CR){ fd(800); } else if(LCR){ sl(800); } else if(L>CL&&R 0: 9600, 1: 57600, 2: 115200, 3: 1Mbps AX12.begin(3); // Disable CCW Angle Limit(L) to use wheel mode AX12.writeWord(1,8,0); AX12.writeWord(2,8,0); AX12.writeWord(3,8,0); AX12.writeWord(4,8,0); AX12.jointMode(5); } void fd(int speed){ AX12.writeWord(1,32,speed); AX12.writeWord(2,32,speed); AX12.writeWord(3,32,speed|0x400); AX12.writeWord(4,32,speed|0x400); } void bk(int speed){ AX12.writeWord(1,32,speed|0x400); AX12.writeWord(2,32,speed|0x400); AX12.writeWord(3,32,speed); AX12.writeWord(4,32,speed); } void sl(int speed){ AX12.writeWord(1,32,speed); AX12.writeWord(2,32,speed); AX12.writeWord(3,32,speed); AX12.writeWord(4,32,speed); } void sr(int speed){ AX12.writeWord(1,32,speed|0x400); AX12.writeWord(2,32,speed|0x400); AX12.writeWord(3,32,speed|0x400); AX12.writeWord(4,32,speed|0x400); } int ADC(unsigned char CH){ int A; if(CH==1){ digitalWrite(7,1);delayMicroseconds(15); A=analogRead(2); digitalWrite(7,0); return A; } else{ digitalWrite(13,1);delayMicroseconds(15); A=analogRead(1); digitalWrite(13,0); return A; } } void InitIR(){ pinMode(2, INPUT_ANALOG); // set pin 0 as analog input pinMode(1, INPUT_ANALOG); // set pin 0 as analog input pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); digitalWrite(12,0); digitalWrite(13,0); digitalWrite(6,0); digitalWrite(7,0); }