Arduino机器人手臂 - Valgfag AMT

Arduino机器人手臂 - Valgfag AMT

目录:

Anonim

Vi fik til opgave at lave en styring til en robot arm,vedhjælpafarduino。 Jeg valgte i min opbygning at bruge en Arduino UNO samt et gammelt joystick til at styre armen med。 Desuden skulle robotarmen有一个enktuator / sensor,她的har je jeg valgt at bruge en HC-SR04 Ultralydssensor。 Denne传感器målerhvorlangt robotarmen er fra en overflade,og dette kan ses som centimeter i Arduino programmet。

供应:

第1步:Opggning Og Koden

/ *使用电位计(可变电阻)控制伺服位置由Michal Rinott于2013年11月8日由Scott Fitzgerald修改http://www.arduino.cc/en/Tutorial/Knob * /

#包括

//你可以选择任何数字引脚用于触发和echo const int trigger = 12; const int echo = 13;

int距离;持续时间长; #包括 伺服myservo; //创建伺服对象来控制伺服伺服myservo1; //创建伺服对象来控制伺服伺服myservo2; //创建伺服对象来控制伺服伺服myservo3; //创建伺服对象来控制伺服int potpin = 0; //模拟引脚用于连接电位器int val; //变量从模拟引脚int valop = 90读取值; int potpin1 = 1; //模拟引脚用于连接电位器int val1; //变量从模拟引脚读取值int valop1 = 90; int potpin2 = 2; //模拟引脚用于连接电位器int val2; //变量从模拟引脚读取值int valop2 = 90; int potpin3 = 3; //用于连接电位器int val3的模拟引脚; //变量从模拟引脚读取值int valop3 = 90; #define trigPin 13 #define echoPin 12 #define led 10 #define led2 11 void setup(){pinMode(trigger,OUTPUT); pinMode(echo,INPUT); Serial.begin(9600); myservo.attach(9); //将引脚9上的伺服连接到伺服对象myservo1.attach(3); //将引脚3上的伺服连接到伺服对象myservo2.attach(5); //将引脚5上的伺服连接到伺服对象myservo3.attach(6); //将引脚6上的伺服连接到伺服对象pinMode(trigPin,OUTPUT); pinMode(echoPin,INPUT); pinMode(led,OUTPUT); pinMode(led2,OUTPUT); Serial.begin(9600); } void loop(){val = analogRead(potpin); //读取电位计的值(0到1023之间的值)// val = map(val,0,1023,0,1023); //Serial.print("valop_“); //Serial.println(valop); //等待伺服到达那里(val <600 && val> 300){myservo.write(valop = valop);延迟(10); //Serial.print("val_“); //Serial.println(val);

//一开始,触发器必须设置为低电平数字(触发,低电平); delayMicroseconds(2);

digitalWrite(触发器,HIGH); delayMicroseconds(10); digitalWrite(触发器,LOW);

// pulseIn函数读取引脚是高电平还是低电平//回波引脚输出波形击中物体所需的时间并以微秒(us)持续时间= pulseIn(echo,HIGH)返回;

//声速= 340m / s或0.034cm / us //距离以cm为单位=持续时间* 0.034 / 2;

Serial.println(“距离”); Serial.println(距离);延迟(500);

} if(val> 600 && val <1200){myservo.write(valop = valop +3);延迟(10); } if(val <300 && val> 1){myservo.write(valop = valop -3);延迟(10); } val1 = analogRead(potpin1); //读取电位计的值(0到1023之间的值)// val = map(val,0,1023,0,1023); if(val1 <600 && val1> 400){myservo1.write(valop1 = valop1);延迟(20); //Serial.print("val1_“); //Serial.println(val1);延迟(10); } if(val1> 600 && val1 <1200){myservo1.write(valop1 = valop1 +3);延迟(10); } if(val1 <300 && val1> 1){myservo1.write(valop1 = valop1 -3);延迟(10); } //Serial.print("valop1_“); //Serial.println(valop1); val2 = analogRead(potpin2); //读取电位计的值(0到1023之间的值)// val = map(val,0,1023,0,1023); if(val2 <600 && val2> 400){myservo2.write(valop2 = valop2);延迟(20); //Serial.print("val2_“); // Serial.println(val2); } if(val2> 600 && val2 <1200){myservo2.write(valop2 = valop2 +3);延迟(10); } if(val2 <300 && val2> 1){myservo2.write(valop2 = valop2 -3);延迟(10); } //Serial.print("valop2_“); //Serial.println(valop2); val3 = analogRead(potpin3); //读取电位计的值(0到1023之间的值)// val = map(val,0,1023,0,1023); if(val3 <600 && val3> 400){myservo3.write(valop3 = valop3);延迟(20); Serial.print( “val3_”); Serial.println(VAL3); } if(val3> 600 && val3 <1200){myservo3.write(valop3 = valop3 +3);延迟(10); } if(val3 <300 && val3> 1){myservo3.write(valop3 = valop3 -3);延迟(10); } Serial.print(“valop3_”); Serial.println(valop3);持续时间长,距离远; digitalWrite(trigPin,LOW); //添加了这行delayMicroseconds(2); //添加了这行digitalWrite(trigPin,HIGH); // delayMicroseconds(1000); - 删除了这行delayMicroseconds(10); //添加了这行digitalWrite(trigPin,LOW); duration = pulseIn(echoPin,HIGH);距离=(持续时间/ 2)/ 29.1; if(distance <4){//这是LED开/关发生的地方digitalWrite(led,HIGH); //当满足红色条件时,绿色LED应关闭digitalWrite(led2,LOW); } else {digitalWrite(led,LOW); digitalWrite(LED2,HIGH); } if(distance> = 200 || distance <= 0){Serial.println(“超出范围”); } else {Serial.print(distance); Serial.println(“cm”); } delay(500); }

第2步:视频Og下载