Вопросы по сервопрограмме
Привет, программирование на arduino, я пытаюсь получить вложенный цикл for внутри цикла for с промышленным сервоприводом, который использует PUL +- DIR+- (купил мотор у amazon).
Моя цель – увеличить задержку импульсов. У меня подключен датчик, который я хочу, чтобы сервопривод включался при срабатывании.
Таким образом, датчик сработает, и сервопривод запустится быстро и замедлится с задержкой до 255 микросекунд.
пример:
int sensor = 26;
int PUL = 23; //определяем вывод Pulse
int DIR = 25; //определить пин направления
void setup() {
pinMode(sensor, INPUT);
Serial.begin(115200);
pinMode (PUL, OUTPUT);
pinMode (DIR, OUTPUT);
}
void loop() {
int sen = digitalRead(sensor);
if (sen == HIGH) {
Serial.println("HIGH");
delay(1000);
for (int i=0; i<500; i++)
{
for( int x=0; x<255; x++){
digitalWrite(DIR,LOW);
digitalWrite(PUL,HIGH);
Serial.print("i = ");
Serial.println(i);
Serial.print("x = ");
Serial.println(x);
delayMicroseconds(x);
digitalWrite(PUL,LOW);
delayMicroseconds(x);
}}
} else if (sen == LOW) {
Serial.println("LOW");
delay(1000);
} else {
Serial.println("ERROR");
}
}
Я пытаюсь вложить цикл FOR внутрь цикла FOR. Я хочу, чтобы x увеличивался с i до тех пор, пока x не станет 255, затем я продолжу, пока i не достигнет 500. Прямо сейчас x идет от 0 до 255, а затем i увеличьте на 1. Мне нужно, чтобы значение x увеличивалось вместе с i до 255
for (int i=0; i<500; i++) {
for( int x=0; x<255; x++){
digitalWrite(DIR,LOW);
digitalWrite(PUL,HIGH);
Serial.print("i = ");
Serial.println(i);
Serial.print("x = ");
Serial.println(x);
delayMicroseconds(x);
digitalWrite(PUL,LOW);
delayMicroseconds(x); }
}
@chas stevens, 👍0
Обсуждение1 ответ
Хотите ли вы, чтобы i и x увеличивались с одинаковой скоростью от 0 до 255, тогда x оставался равным 255, а i увеличивался до 500?
это должно делать то, что вы хотите. i и x увеличиваются вместе, пока x не достигнет 255, после чего он не будет увеличиваться.
int x=0;
for (int i=0; i<500; i++) {
digitalWrite(DIR,LOW);
digitalWrite(PUL,HIGH);
Serial.print("i = ");
Serial.println(i);
Serial.print("x = ");
Serial.println(x);
delayMicroseconds(x);
digitalWrite(PUL,LOW);
delayMicroseconds(x); }
if(x<=255){
x++;
}
}
- Невозможно выйти из цикла while
- Как заставить сервопривод вращаться на угол больше 180°
- Как повернуть серводвигатель на определенный угол?
- 6 + 1 двигательей подключенных к arduino uno?
- Управление цифровым сервоприводом JX PDI-6221MG с помощью Arduino
- Обратная связь по положению для шагового двигателя
- Почему сервопривод вращается на 360 градусов?
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
непонятно что у вас, как связано и что именно вы пытаетесь сделать, @jsotola