RobotArmValgfag_EAL (4 / 5 steg)

Steg 4: Programmet



/*

Kontrollera en servo position med en potentiometer (variabelt motstånd)
av Michal Rinott

uppdaterad den 8 Nov 2013
av Scott Fitzgerald
http://www.Arduino.cc/en/tutorial/Knob

ändrad den 20 maj 2016
av Troels & Jonas, studenter från Erhvervsakademiet Lillebælt
*/

#include

Servo myservo; skapa objekt för att styra en servo servo
Servo myservo1; skapa objekt för att styra en servo servo
Servo myservo2; skapa objekt för att styra en servo servo
Servo myservo3; skapa objekt för att styra en servo servo

int potpin = 0; analoga pin används för att ansluta potentiometern
int val; variabel att läsa värdet från det analoga stiftet
int valop = 90.

int potpin1 = 1; analoga pin används för att ansluta potentiometern
int värde1; variabel att läsa värdet från det analoga stiftet
int valop1 = 90.

int potpin2 = 2; analoga pin används för att ansluta potentiometern
int värde2; variabel att läsa värdet från det analoga stiftet
int valop2 = 90.

int potpin3 = 3; analoga pin används för att ansluta potentiometern
int val3; variabel att läsa värdet från det analoga stiftet
int valop3 = 90.

#define trigPin 13
#define echoPin 12
#define ledde 10
#define led2 11

void setup() {
myservo.attach(9); tillmäter objektet servo servo på pin 9
myservo1.attach(3); tillmäter objektet servo servo på stift 10
myservo2.attach(5); tillmäter objektet servo servo på stift 5
myservo3.attach(6); tillmäter objektet servo servo på stift 6

pinMode (trigPin, produktionen);
pinMode (echoPin, ingång);
pinMode ledde (, OUTPUT);
pinMode (led2, produktionen);

Serial.BEGIN(9600);
}

void loop() {

Val = analogRead(potpin); läser värdet i potentiometern (värde mellan 0 och 1023)
Val = karta (val, 0, 1023, 0, 1023);

Serial.Print("valop_");
Serial.println(valop);
väntar på servo att komma dit

om (val < 600 & & val > 300) {
myservo.write (valop = valop);
Delay(10);
Serial.Print("val_");
Serial.println(val);

}

om (val > 600 & & val < 1200) {
myservo.write (valop = valop + 3);
Delay(10);
}

om (val < 300 & & val > 1) {
myservo.write (valop = valop -3);
Delay(10);
}

värde1 = analogRead(potpin1); läser värdet i potentiometern (värde mellan 0 och 1023)
Val = karta (val, 0, 1023, 0, 1023);

om (värde1 < 600 & & värde1 > 400) {
myservo1.write (valop1 = valop1);
Delay(20);
Serial.Print("val1_");
Serial.println(val1);
fördröjning (10).
}

om (värde1 > 600 & & värde1 < 1200) {
myservo1.write (valop1 = valop1 + 3);
Delay(10);

}

om (värde1 < 300 & & värde1 > 1) {
myservo1.write (valop1 = valop1 -3);
Delay(10);

}

Serial.Print("valop1_");
Serial.println(valop1);

värde2 = analogRead(potpin2); läser värdet i potentiometern (värde mellan 0 och 1023)
Val = karta (val, 0, 1023, 0, 1023);

om (värde2 < 600 & & värde2 > 400) {
myservo2.write (valop2 = valop2);
Delay(20);
Serial.Print("val2_");
Serial.println(val2);

}

om (värde2 > 600 & & värde2 < 1200) {
myservo2.write (valop2 = valop2 + 3);
Delay(10);

}

om (värde2 < 300 & & värde2 > 1) {
myservo2.write (valop2 = valop2 -3);
Delay(10);

}

Serial.Print("valop2_");
Serial.println(valop2);

val3 = analogRead(potpin3); läser värdet i potentiometern (värde mellan 0 och 1023)
Val = karta (val, 0, 1023, 0, 1023);

om (val3 < 600 & & val3 > 400) {
myservo3.write (valop3 = valop3);
Delay(20);
Serial.Print("val3_");
Serial.println(val3);

}

om (val3 > 600 & & val3 < 1200) {
myservo3.write (valop3 = valop3 + 3);
Delay(10);

}

om (val3 < 300 & & val3 > 1) {
myservo3.write (valop3 = valop3 -3);
Delay(10);

}

Serial.Print("valop3_");
Serial.println(valop3);

lång varaktighet, avstånd;
digitalWrite (trigPin, låg); Lagt till denna rad
delayMicroseconds(2); Lagt till denna rad
digitalWrite (trigPin, hög);
delayMicroseconds(1000); -Tagit bort denna rad
delayMicroseconds(10); Lagt till denna rad
digitalWrite (trigPin, låg);
längd = pulseIn (echoPin, hög);
avståndet = (längd/2) / 29,1;
om (distanserar < 4) {/ / Detta är där LED på/av händer
digitalWrite(led,HIGH); När röda villkoret är uppfyllt, bör grön LED stänga av
digitalWrite(led2,LOW);
}
annat {
digitalWrite(led,LOW);
digitalWrite(led2,HIGH);
}
om (avstånd > = 200 || avstånd < = 0) {
Serial.println ("out of range");
}
annat {
Serial.Print(Distance);
Serial.println ("cm");
}
Delay(500);

}

Se Steg
Relaterade Ämnen