2016-07-27 12 views
0

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); 
} 

} }

Antwort

0

Es gibt viele sytax Fehlercodierung. Um den Code zu ändern, können Sie Pseudocode schreiben. Die Codierungssyntax nicht wie PLC-System. Lassen Sie mich wissen, wie Sie Code aussehen sollte. Verwenden Sie Variable gleichen

Zum Beispiel:

if digitalRead(homeswPin) == LOW) 
    // mention what are the action to be take including read and write function for digital pins 
if digitalRead(homeswPin) == HIGH) 
// whats your expected answers. 

Es ist besser, Sie Schema Schaltung setzen. Ich habe viele Löcher gefunden. Bitte gehen Sie durch Arduino grundlegende Beispiele. Wie benutzt man digitalRead-Funktionen, wie man Arduino-Codes nach Linien auswertet Etc

Examples found Here

Verwandte Themen