Как остановить линейный привод?

Я написал код, но двигатель не останавливается, он продолжает двигаться , может ли кто-нибудь послать код, который я могу остановить двигатель после моего кода, который показывает рев?

const int forwards = 7;
const int backwards = 6;//назначить вывод relay INx на вывод arduino

void setup() {

pinMode(forwards, OUTPUT);//set relay as an output
pinMode(backwards, OUTPUT);//set relay as an output

}

void loop() {

 digitalWrite(forwards, LOW);
 digitalWrite(backwards, HIGH);//Активируйте реле в одном направлении, они должны быть разными, чтобы переместить
 delay(20000); // ждать 2 секунды

 digitalWrite(forwards, HIGH);
 digitalWrite(backwards, HIGH);//Деактивировать оба реле для торможения
 delay(2000);// ждать 2 секунды

 digitalWrite(forwards, HIGH);
 digitalWrite(backwards, LOW);//Активируйте реле в другом направлении, они должны быть разными, чтобы переместить
 delay(20000);// ждать 2 секунды

 digitalWrite(forwards, HIGH);
 digitalWrite(backwards, HIGH);//Деактивировать оба реле для торможения
 delay(2000);// ждать 2 секунды

}

, 👍-1

Обсуждение

Переместите свой код из loop() (где он *loops*) и в setup (), где он выполняется только один раз?, @Majenko

Это не работает.., @AAM

Тогда вы, должно быть, сделали что-то не так., @Majenko

`мотор не останавливается"..... что делает мотор? .....- а что он должен делать?, @jsotola

вы ждете 20 секунд вместо 2, @Sim Son


1 ответ


0

Есть много вещей, которые вы можете сделать. Вот несколько примеров.

1: Переместите код из цикла() внастройку():

const int forwards = 7;
const int backwards = 6;//назначить вывод реле INx на вывод arduino

void setup() {  
    pinMode(forwards, OUTPUT);//установить реле в качестве выхода
    pinMode(backwards, OUTPUT);//установите реле в качестве выхода

    digitalWrite(forwards, LOW);
    digitalWrite(backwards, HIGH);//Активируйте реле в одном направлении, они должны быть разными, чтобы двигать двигатель
    delay(20000); // подождите 2 секунды

    digitalWrite(forwards, HIGH);
    digitalWrite(backwards, HIGH);//Отключите оба реле, чтобы затормозить двигатель
    delay(2000);// подождите 2 секунды

    digitalWrite(forwards, HIGH);
    digitalWrite(backwards, LOW);//Активируйте реле в другом направлении, они должны быть другими, чтобы двигать двигатель
    delay(20000);// подождите 2 секунды

    digitalWrite(forwards, HIGH);
    digitalWrite(backwards, HIGH);//Отключите оба реле, чтобы затормозить двигатель
    delay(2000);// подождите 2 секунды
}

void loop() {   
}

2: Остановите loop() от зацикливания:

const int forwards = 7;
const int backwards = 6;//assign relay INx pin to arduino pin

void setup() {  
    pinMode(forwards, OUTPUT);//set relay as an output
    pinMode(backwards, OUTPUT);//set relay as an output
}

void loop() {   

    digitalWrite(forwards, LOW);
    digitalWrite(backwards, HIGH);//Activate the relay one direction, they must be different to move the motor
    delay(20000); // wait 2 seconds

    digitalWrite(forwards, HIGH);
    digitalWrite(backwards, HIGH);//Deactivate both relays to brake the motor
    delay(2000);// wait 2 seconds

    digitalWrite(forwards, HIGH);
    digitalWrite(backwards, LOW);//Activate the relay the other direction, they must be different to move the motor
    delay(20000);// wait 2 seconds

    digitalWrite(forwards, HIGH);
    digitalWrite(backwards, HIGH);//Deactivate both relays to brake the motor
    delay(2000);// wait 2 seconds

    while (1); // Stop here and do nothing forever
}

3. Установите флаг "Я сделал это":

const int forwards = 7;
const int backwards = 6;//assign relay INx pin to arduino pin
bool complete = false;

void setup() {  
    pinMode(forwards, OUTPUT);//set relay as an output
    pinMode(backwards, OUTPUT);//set relay as an output
}

void loop() {   
    if (!complete) {
        digitalWrite(forwards, LOW);
        digitalWrite(backwards, HIGH);//Activate the relay one direction, they must be different to move the motor
        delay(20000); // wait 2 seconds

        digitalWrite(forwards, HIGH);
        digitalWrite(backwards, HIGH);//Deactivate both relays to brake the motor
        delay(2000);// wait 2 seconds

        digitalWrite(forwards, HIGH);
        digitalWrite(backwards, LOW);//Activate the relay the other direction, they must be different to move the motor
        delay(20000);// wait 2 seconds

        digitalWrite(forwards, HIGH);
        digitalWrite(backwards, HIGH);//Deactivate both relays to brake the motor
        delay(2000);// wait 2 seconds

        complete = true;
    }
}

У каждого из них есть свои преимущества и недостатки. То, что подходит именно вам, зависит от того, чего вы на самом деле пытаетесь достичь.

,