Как избавиться от delay (задержка нужна)

‘’'const int potencX=A0;
const int potencY=A1;
const int potencZ=A2;
const int deadzone=120;
const int vilet=A4;
const int naklon=A5;

int dlinna;
int opus;

int Zos;
int Yos;
int Xos;

int Setup;
int ShagX=0;
int ShagY=0;
int ShagZ=0;
unsigned long time;
unsigned long time2;

void setup(){
pinMode(12,INPUT_PULLUP); //кнопка работы джойстиков
pinMode(A3,OUTPUT); //сигнал для клапана отбора гидравлики
pinMode(2,OUTPUT); //питание для верхних джойстиков

Serial.begin(9600);
}

void loop() {
dlinna=analogRead(vilet);
dlinna=map(dlinna,540,699,100,0);

opus=analogRead(naklon);

int butt0=!digitalRead(12);

 if(!digitalRead(12)==HIGH){                                   // При включенной кнопке на джойстике сверху
                                                               //отсюда начинается плавное управление джойстиками сверху
digitalWrite(2,HIGH);
 Xos=analogRead(potencX);

            if (Xos>502+deadzone){
                     Xos=map(Xos,502+deadzone,1010,0,60);
                     Xos=constrain(Xos,0,60);
                     Setup=Xos*1.5;
                     for(ShagX=0;ShagX<=Setup;ShagX++);{if (millis()-time>10){
                              time=millis();
                              analogWrite(3,ShagX);
                              digitalWrite(A3,HIGH);           //включение отбора гидравлики на стрелу
                              }}

            }else if(Xos<502-deadzone){
                     Xos=map(Xos,502-deadzone,0,0,-24);
                     Setup=Xos*3;
                     for(ShagX=0;ShagX>=Setup;ShagX--);{if (millis()-time>10){
                              time=millis();
                              analogWrite(5,-ShagX);
                              digitalWrite(A3,HIGH);          //включение отбора гидравлики на стрелу
                              }}
             }else {analogWrite(3,0);
                   analogWrite(5,0);}
Yos=analogRead(potencY);
     if (Yos>505+deadzone){
                     Yos=map(Yos,502+deadzone,1010,0,40);
                     Yos=constrain(Yos,0,60);
                     Setup=Yos*1.5;
                     for(ShagY=0;ShagY<=Setup;ShagY++);{if (millis()-time>10){
                              time=millis();
                              analogWrite(6,ShagY);
                              digitalWrite(A3,HIGH);          //включение отбора гидравлики на стрелу
                              }}

            }else if(Yos<505-deadzone){
                     Xos=map(Yos,502-deadzone,0,0,-40);
                     Setup=Xos*1.5;
                     for(ShagY=0;ShagY>=Setup;ShagY--);{if (millis()-time>10){
                              time=millis();
                              analogWrite(9,-ShagY);
                              digitalWrite(A3,HIGH);          //включение отбора гидравлики на стрелу
                              }}
            } else {analogWrite(6,0);
                   analogWrite(9,0);}
                   


Zos=analogRead(potencZ);
            if (Zos>505+deadzone){
                     Zos=map(Zos,505+deadzone,1010,0,50);
                     Zos=constrain(Zos,0,50);
                     Setup=Zos*1.5;
                     for(ShagZ=0;ShagZ<=Setup;ShagZ++);{if (millis()-time>20){
                              time=millis();
                              analogWrite(10,ShagZ);
                              digitalWrite(A3,HIGH);          //включение отбора гидравлики на стрелу
                              }}

            }else if(Zos<505-deadzone){
                     Zos=map(Zos,502-deadzone,0,0,-50);
                     Setup=Zos*1.5;
                     for(ShagZ=0;ShagZ>=Setup;ShagZ--);{if (millis()-time>20){
                              time=millis();
                              analogWrite(11,-ShagZ);
                              digitalWrite(A3,HIGH);
                              }}
             }else {analogWrite(10,0);
                   analogWrite(11,0);}
           
 }  else  {                                                    //отсуда начинается плавное затухание на управление от джойстиков
            digitalWrite(2,LOW);
             for(ShagX<=91;ShagX>0;ShagX--) { 
               analogWrite(3,ShagX-1);
               delay(40);}  
             for(-ShagX>=-67;ShagX<0;ShagX++){
               analogWrite(5,-ShagX);
               delay(80); } 


             for(ShagY<=53;ShagY>0;ShagY--)
             { analogWrite(6,ShagY);
               delay(100);}  
             for(-ShagY>=-53;ShagY<0;ShagY++){
               analogWrite(9,-ShagY);
               delay(100); } 
               
             for(ShagZ<=76;ShagZ>0;ShagZ--)
             { analogWrite(10,ShagZ);
               delay(80);}  
             for(-ShagZ>=-76;ShagZ<0;ShagZ++){
               analogWrite(11,-ShagZ-1);
               delay(80); }     
                   
             if(ShagX==0){digitalWrite(A3,LOW);}     //Отключение отбора гидравлики по оси(вверх/вниз)
             if(ShagY==0){digitalWrite(A3,LOW);}     //Отключение отбора гидравлики по оси(влево/вправо)
             if(ShagZ==0){digitalWrite(A3,LOW);}     //Отключение отбора гидравлики по оси(раздвинуть/сдвинуть)
        } 

Serial.print(Xos);
Serial.print(" /X");
Serial.print(ShagX);
Serial.print(“…/”);
Serial.print(Yos);
Serial.print(“…/Y”);
Serial.print(ShagY);
Serial.print(“…/”);
Serial.print(Zos);
Serial.print(“…/Z”);
Serial.print(ShagZ);
Serial.print(“/butt");
Serial.print(butt0);
Serial.print("
/dlinna”);
Serial.print(dlinna);
Serial.print(“____/opus”);
Serial.println(opus);

}‘’’

Код нормально вставьте и не от всех delay надо избавляться !

проблема в том что эти делай тормозят код ,а мне нужно чтобы выполнялись операции параллельно (6 клапанов -6 операций) -что бы хотя бы две могли работать параллельно.

пока одна операция тормозит клапан затуханием -другая работает на плавное открытие

спасибо изучу!
поправочка - неделю как только начал изучать ардуинку)так что я новичок)

вся проблема что там процесс не управляемый -я же пишу управляемый…

Вам бы скетч для начала правильно вставить.

извените ,первый раз пишу\пользуюсь чатами - не обратил внимание на изложенный мною материал

Вы не умеете читать. Не научитесь, нормально писать никогда не будете.

1 лайк

Код кривовставленный даже не стал смотреть.
Придирка к описанию.
Вопрос - а зачем клапаном управлять с затуханием?
Вы хотите сжечь управляющий клапаном ключъ?

Бдыщь и сработал ваш клапан :slight_smile:

Проблема не в том как написать, а в том нахера писать так?

С чего вдруг неуправляемый? Может проблема в вас? :wink:

Закрыто, далее а https://forum.arduino.ru/t/pomogite-kak-uluchshit-ispravit-sketch/11272