2016-07-27 4 views
0

私は鶏卵ロッカー「インキュベーター」を建設しています。これはArduinoプロジェクトの私の最初の試みですが、私は何年もPLCをプログラムしました。 私は問題に遭遇しました:コードのトップセクション(切り替え時にホームシーケンスを見つける)実行することができませんがコンパイルされていますが、これで迷っています。 私は、コードの両方のセクションがPLS'cに似てアクセスできますが、これはno no(gotoコマンド)であることを確認するためにいくつかのサブルーチンを構築したかったのです。 誰かが喜んでいるなら、私はある方向に感謝します。私はポットの位置に基づいてリミットスイッチタイマーで働くアップ/ダウンサイクルタイマーを持っています。 目的: ホームスイッチをオンにすると、システムは限界に移動して自宅を見つけることでどこにいるか把握します。 ハッチングを除去するために、これをサイクルの途中で行う必要があります(トレイを取り外すにはレベル/ホームでなければなりません)。 私はスイッチを見るためにwhileコマンドを使用してコードのその部分に留まることを考えました(スイッチがオフになるまで自宅で) 右に見えなかった余分な括弧を追加するまで検証機能は失敗しましたコンパイルしてボードにロードします。 ありがとうございます。Adruino初心者は、入力に基づいて条件付き移動を行う方法を理解しようとしています。

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

}}

答えて

0

sytaxエラーコーディングがたくさんあります。コードを再修正するために、擬似コードを書くことができますか?PLCシステムのようなコーディング構文。コードがどのように見えるかを教えてください。例えば、変数と同じ

を使用してください:より良いあなたが回路の概略を置く

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. 

その。私はたくさんのループホールを見つけました。親切にarduinoの基本的な例を参照してください。 digitalRead関数の使い方、arduinoコードのデバッグ方法など

Examples found Here

関連する問題