Styra en stor linjära ställdon med Arduino (4 / 5 steg)
Steg 4: Kod 2 - förinställd Position med hjälp av positionella Feedback
Denna kod visar hur man gör grundläggande styrning av en stor linjära ställdon med en Arduino och två knappar med varje knapp förinställda till en position.
Du kan hämta kod skissen här: https://github.com/robotgeek/largeLinearPresetPositions/archive/master.zip
/*
Linjära ställdon kontroll användande förinställd position
Denna demo visar hur man gör grundläggande styrning av en stor linjär
manöverdonet med en Arduino och två knappar. Varje knapp är svårt
kodad med en förinställd position. Trycka på en knapp kommer att flytta
manöverdonet till den positionen.
Krets:
* RobotGeek tryckknapp - Digital Pin 1
* RobotGeek tryckknapp - Digital stift 2
* RobotGeek Relay - Digital Pin 4
* RobotGeek Relay - Digital stift 7
Produkter som används i den här demon:
-http://www.robotgeek.com/linear-actuators
-http://www.robotgeek.com/robotgeek-geekduino-sensor-kit
-http://www.robotgeek.com/robotGeek-pushbutton
-http://www.robotgeek.com/robotgeek-relay
*/
konstanter ändras inte. De används här att ange pin-koder:
CONST int button1Pin = 2; antalet pushbutton1 PIN-koden
CONST int button2Pin = 4; antalet pushbutton2 PIN-koden
CONST int relay1Pin = 7. antalet Realy1 PIN-koden
CONST int relay2Pin = 8; antalet Relay2 PIN-koden
CONST int sensorPin = 0; Välj input PIN-koden för potentiometer
variabler som ändras:
int button1State = 0; variabel för att läsa tryckknapp status
int button2State = 0; variabel för att läsa tryckknapp status
int sensorValue = 0; variabel för att lagra värdet kommer från sensorn
int målplacera = 350;
int aktuellaposition = 0;
booleska utöka = false;
booleska Retracting = false;
void setup() {
Starta seriell anslutning
Serial.BEGIN(9600);
initiera tryckknapp PIN-koden som indata:
pinMode (button1Pin, ingång);
pinMode (button2Pin, ingång);
initiera stafett pinnen som en utgång:
pinMode (relay1Pin, produktionen);
pinMode (relay2Pin, produktionen);
förinställda reläer till låg
digitalWrite (relay1Pin, låg);
digitalWrite (relay2Pin, låg);
}
void loop() {
Läs värdet från sensorn:
Aktuellaposition = analogRead(sensorPin);
skriva ut resultatet till seriell bildskärmen:
Serial.Print ("nuvarande =");
Serial.Print(CurrentPosition);
Serial.Print ("\t mål =");
Serial.println(goalPosition);
Läs statligt av tryckknapp värden:
button1State = digitalRead(button1Pin);
button2State = digitalRead(button2Pin);
om (button1State == hög) {
Ange nya mål position
målplacera = 300;
om (målplacera > aktuellaposition) {
Upprullningskraften = false;
Att utvidga = sant;
digitalWrite (relay1Pin, hög);
digitalWrite (relay2Pin, låg);
Serial.println("Extending");
}
annars om (målplacera < aktuellaposition) {
Upprullningskraften = sant;
Att utvidga = false;
digitalWrite (relay1Pin, låg);
digitalWrite (relay2Pin, hög);
Serial.println("Retracting");
}
}
om (button2State == hög) {
Ange nya mål position
målplacera = 500.
om (målplacera > aktuellaposition) {
Upprullningskraften = false;
Att utvidga = sant;
digitalWrite (relay1Pin, hög);
digitalWrite (relay2Pin, låg);
Serial.println("Extending");
}
annars om (målplacera < aktuellaposition) {
Upprullningskraften = sant;
Att utvidga = false;
digitalWrite (relay1Pin, låg);
digitalWrite (relay2Pin, hög);
Serial.println("Retracting");
}
}
om (utöka = true & & aktuellaposition > målplacera) {
Vi har nått vårt mål, stänga reläet
digitalWrite (relay1Pin, låg);
booleska utöka = false;
Serial.println("Idle");
}
om (Retracting = true & & aktuellaposition < målplacera) {
Vi har nått vårt mål, stänga reläet
digitalWrite (relay2Pin, låg);
booleska Retracting = false;
Serial.println("Idle");
}
}