‘’'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);
}‘’’