Ich baue einen Hühnerei Rocker "Incubator" Dies ist mein erster Versuch mit einem Arduino Projekte, aber ich habe SPS seit Jahren programmiert. Ich habe Probleme: Der obere Teil des Codes (finden Sie Home-Sequenz, wenn geschaltet) Ich kann nicht laufen, aber es kompiliert, ich bin auf diesem verloren Ich bin nicht sicher, ob ich etwas Syntax etwas Ware verpasst? Ich wollte einige Subroutinen erstellen, um zu springen, dass beide Abschnitte des Codes ähnlich wie PLS'c zugreifen könnten, aber sehen Sie, dass dies ein Nein ist (der Befehl goto). Ich würde eine Richtung schätzen, wenn jemand bereit ist. Ich habe einen Up/Down-Zyklus-Timer, der mit dem Endschalter-Timer basierend auf der Topfposition arbeitet. Das Ziel: Wenn der Home-Schalter eingeschaltet ist, wird das System herausfinden, wo es ist, indem es zu einem Limit bewegt, dann nach Hause zu finden. Dies muss möglicherweise in der Mitte des Zyklus durchgeführt werden, um Schlüpflinge zu entfernen (die Fächer müssen waagrecht/nach Hause sein, um entfernt zu werden). Ich dachte, ich könnte dies mit dem Befehl while erreichen, um den Schalter zu beobachten, dann bleiben in diesem Abschnitt des Codes (zu Hause, bis der Schalter ausgeschaltet ist) Die Verify-Funktion fehlgeschlagen, bis ich zusätzliche Klammern hinzugefügt, die nicht richtig aussehen, aber es würde kompilieren und laden auf die Tafel. Vielen Dank im Voraus.Adruino-Neuling versucht herauszufinden, wie bedingte Bewegungen basierend auf Eingaben vorgenommen werden.
// breaking down the chicken code to find the bug
int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = 13; // the number of the LED pin
int ledState = LOW; // ledState used to set the LED
int sensorValue = 0; // variable to store the value coming from the sensor
int homeswPin = 4; // toggle sw for home sequence
int homelimitswPin = 5; // home limit sensor
int timer = 0; // variable to store timer
int uplimitswPin = 2; // up limit switch
int dwnlimitswPin = 3; // down limit switch
int upoutputPin = 7; // output to drive up
int upoutput2Pin = 8; // output to drive up
int dwnoutputPin = 9; // output to drive down
int dwnoutput2Pin = 10; // output to drive down
long previousMillis = 0; // will store last time LED was updated
long interval = timer; // interval at which to change 3519 x sensor value (milliseconds)
long timedown = timedown; // interval at which to change 3519 x sensor value (milliseconds
unsigned long currentMillis = millis();
void setup() { // put your setup code here, to run once:
pinMode(ledPin, OUTPUT);
pinMode(homeswPin, INPUT_PULLUP);
pinMode(homelimitswPin, INPUT);
pinMode(uplimitswPin, INPUT);
pinMode(dwnlimitswPin, INPUT);
pinMode(upoutputPin, OUTPUT);
pinMode(dwnoutputPin, OUTPUT);
digitalWrite(7, HIGH); // +up safety stop motor
digitalWrite(8, HIGH); // -up safety stop motor
digitalWrite(9, HIGH); // + dwn safety stop motor
digitalWrite(10, HIGH); // - dwn safety stop motor
}
void loop() {
{ // section 1 find home and stay there
while (digitalRead(homeswPin) == LOW); {
if // dont know where it is but need to find home or up limit
(digitalRead(homeswPin) == LOW && digitalRead(homelimitswPin) == HIGH &&
digitalRead(uplimitswPin) == HIGH && digitalRead(dwnlimitswPin) == HIGH) {
// drives motor up
digitalWrite(upoutputPin, LOW);
}
// move until home or up limit switch found
else if
(digitalRead(homelimitswPin == LOW) || digitalRead(uplimitswPin == LOW)) {
//turn motor off
(digitalWrite(upoutputPin, HIGH));
}
else if
// at up limit need to go home
(digitalRead(homeswPin) == LOW && digitalRead(uplimitswPin) == LOW) {
digitalWrite(dwnoutputPin, LOW); // drives motor down
//at home ?
digitalRead(homelimitswPin == HIGH);
digitalWrite(dwnoutputPin, HIGH);
} //turns motor off}
else if
// at down limit go home
(digitalRead(homeswPin) == LOW && digitalRead(dwnlimitswPin) == LOW) {
// drives motor up
digitalWrite(upoutputPin, LOW);
//at home
(digitalRead (homelimitswPin) == 0);
//turn motor off
digitalWrite(upoutputPin, HIGH);
}
else
// at home with home switch on stay here
(digitalRead(homeswPin) == LOW && digitalRead(homelimitswPin) == LOW);
}
} }