私は鶏卵ロッカー「インキュベーター」を建設しています。これは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);
}
}}