Вопросы по сервопрограмме

Привет, программирование на 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); }
}

, 👍0

Обсуждение

непонятно что у вас, как связано и что именно вы пытаетесь сделать, @jsotola


1 ответ


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++;
   }

}
,