Как остановить линейный привод?
Я написал код, но двигатель не останавливается, он продолжает двигаться , может ли кто-нибудь послать код, который я могу остановить двигатель после моего кода, который показывает рев?
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 секунды
}
@AAM, 👍-1
Обсуждение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;
}
}
У каждого из них есть свои преимущества и недостатки. То, что подходит именно вам, зависит от того, чего вы на самом деле пытаетесь достичь.
,
@Majenko
Смотрите также:
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Как заставить сервопривод вращаться на угол больше 180°
- Почему Adafruit motor shield не крутит моторы?
- Как управлять 6 шаговыми двигателями с помощью Arduino?
- Пропорциональный контроль расхода воды
- L298N Dual Motor Controller Enable Pin имеет питание, но двигатели не работают
Переместите свой код из
loop()
(где он *loops*) и вsetup ()
, где он выполняется только один раз?, @MajenkoЭто не работает.., @AAM
Тогда вы, должно быть, сделали что-то не так., @Majenko
`мотор не останавливается"..... что делает мотор? .....- а что он должен делать?, @jsotola
вы ждете 20 секунд вместо 2, @Sim Son