Управление трактором с помощью джойстика

C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino: In function ‘void setup()’:
C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino:34:1: error: a function-definition is not allowed here before ‘{’ token
{
^
C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino:109:3: error: expected ‘}’ at end of input
}
^

exit status 1

Compilation error: a function-definition is not allowed here before ‘{’ token

Вставьте код по правилам.
Разберитесь со скобками в setup.

Закрыл после setup.
теперь вот так

C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino: In function ‘void loop()’:
C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino:66:82: error: too many arguments to function ‘void analogWrite(uint8_t, int)’
analogWrite(valve_APin, output_1Value-output_3Value, valve_DPin < 0 == 0 );
^
In file included from C:\Users\user\AppData\Local\arduino\sketches\0D677FAD5D7BF3779387E6BF93CA71F4\sketch\sketch_HALL_gotov_2.ino.cpp:1:0:
C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino/Arduino.h:139:6: note: declared here
void analogWrite(uint8_t pin, int val);
^~~~~~~~~~~
C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino:68:16: error: ‘sensor1Value’ was not declared in this scope
else if (sensor1Value < 490) // назад Х
^~~~~~~~~~~~
C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino:68:16: note: suggested alternative: ‘sensor_1Value’
else if (sensor1Value < 490) // назад Х
^~~~~~~~~~~~
sensor_1Value
C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino:71:82: error: too many arguments to function ‘void analogWrite(uint8_t, int)’
analogWrite(valve_CPin, output_2Value-output_3Value, valve_DPin < 0 == 0 );
^
In file included from C:\Users\user\AppData\Local\arduino\sketches\0D677FAD5D7BF3779387E6BF93CA71F4\sketch\sketch_HALL_gotov_2.ino.cpp:1:0:
C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino/Arduino.h:139:6: note: declared here
void analogWrite(uint8_t pin, int val);
^~~~~~~~~~~
C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino:79:82: error: too many arguments to function ‘void analogWrite(uint8_t, int)’
analogWrite(valve_BPin, output_1Value-output_4Value, valve_DPin < 0 == 0 );
^
In file included from C:\Users\user\AppData\Local\arduino\sketches\0D677FAD5D7BF3779387E6BF93CA71F4\sketch\sketch_HALL_gotov_2.ino.cpp:1:0:
C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino/Arduino.h:139:6: note: declared here
void analogWrite(uint8_t pin, int val);
^~~~~~~~~~~
C:\Users\user\Documents\Arduino\sketch_HALL_gotov_2\sketch_HALL_gotov_2.ino:84:82: error: too many arguments to function ‘void analogWrite(uint8_t, int)’
analogWrite(valve_DPin, output_2Value-output_4Value, valve_DPin < 0 == 0 );
^
In file included from C:\Users\user\AppData\Local\arduino\sketches\0D677FAD5D7BF3779387E6BF93CA71F4\sketch\sketch_HALL_gotov_2.ino.cpp:1:0:
C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino/Arduino.h:139:6: note: declared here
void analogWrite(uint8_t pin, int val);
^~~~~~~~~~~

exit status 1

Compilation error: too many arguments to function ‘void analogWrite(uint8_t, int)’

Как еще объяснить то? Это ведь минимальное требование от вас…

спасибо понял.
сейчас исправлюсь

const int pin_1hall_analog = A0; // ось X
const int pin_2hall_analog = A1; // ось Y
const int pin_3hall_analog = A2; // ось Z
const int valve_APin = 9; // Пин для управления электромагнитом A (вперед левая)
const int valve_BPin = 10; // Пин для управления электромагнитом B (вперед правая)
const int valve_CPin = 11; // Пин для управления электромагнитом C (назад левая)
const int valve_DPin = 12; // Пин для управления электромагнитом D (назад правая)
int fspeed; // скорость (ШИМ сигнала) 

int sensor_1Value; // значение с оси  Х джстк
int output_1Value;
int output_2Value;
int sensor_2Value; // значение с оси  у джстк
int output_3Value;
int output_4Value;
int sensor_3Value; // значение с оси  z джстк
int output_5Value;
int output_6Value;

void setup ()
{
  Serial.begin (9600 ) ;
  pinMode (Led, OUTPUT) ;
  pinMode (pin_1hall_analog, INPUT);
  pinMode (pin_2hall_analog, INPUT);
  pinMode (pin_3hall_analog, INPUT);
  pinMode (valve_APin, OUTPUT);
  pinMode (valve_BPin, OUTPUT);
  pinMode (valve_CPin, OUTPUT);
  pinMode (valve_DPin, OUTPUT);
  }
  
void loop()
{
  sensor_1Value = analogRead(pin_1hall_analog);
  sensor_2Value = analogRead(pin_2hall_analog);
  sensor_3Value = analogRead(pin_3hall_analog);
  output_1Value = map(sensor_1Value, 515, 650, 0, 255); // движение вперед (А, В)
  output_2Value = map(sensor_1Value, 490, 380, 0, 255); // движение назад  (C, D)
  output_3Value = map(sensor_2Value, 515, 630, 0, 255); // движение влево А или C умен. В или D пост
  output_4Value = map(sensor_2Value, 490, 410, 0, 255); // вижение вправо В или D умен. А или C пост
  output_5Value = map(sensor_3Value, 540, 650, 0, 255); // вращение против часовой (C, B)
  output_6Value = map(sensor_3Value, 510, 410, 0, 255); // вращение по часовой (А, D)

  if (sensor_3Value > 510 && sensor_3Value < 540)
  {
    if (sensor_2Value > 490 && sensor_3Value < 520)
    {
      if (sensor_1Value > 520) // впред Х
      {
        analogWrite(valve_APin, output_1Value); // вперед
        analogWrite(valve_BPin, output_1Value); // вперед
        }
      else if (sensor_1Value < 490) // назад Х
      {
        analogWrite(valve_CPin, output_2Value); // назад
        analogWrite(valve_DPin, output_2Value); // назад
        }
      }
    else if (sensor_2Value > 520) // влево У
    {
      if (sensor_1Value > 520) // впред Х
      {
        analogWrite(valve_BPin, output_1Value); // вперед и влево
        analogWrite(valve_APin, output_1Value-output_3Value, valve_DPin < 0 == 0 ); 
        }
      else if (sensor1Value < 490) // назад Х
      {
        analogWrite(valve_DPin, output_2Value); // назад и влево
        analogWrite(valve_CPin, output_2Value-output_3Value, valve_DPin < 0 == 0 );
        }
      }
    else if (sensor_2Value < 490) // вправо У
    {
      if (sensor_1Value > 520) // впред Х
      {
        analogWrite(valve_APin, output_1Value); // вперед и вправо
        analogWrite(valve_BPin, output_1Value-output_4Value, valve_DPin < 0 == 0 ); 
        }
      else if (sensor_1Value < 490) // назад Х
      {
        analogWrite(valve_CPin, output_2Value); // назад и вправо
        analogWrite(valve_DPin, output_2Value-output_4Value, valve_DPin < 0 == 0 );
        }
      }
    } 
  else if (sensor_3Value > 540 ) // против часовой
  {
    if (sensor_2Value > 490 && sensor_3Value < 520)
    {
      if (sensor_1Value > 490 && sensor_3Value < 520)
      {
        analogWrite(valve_APin, output_5Value);
        analogWrite(valve_CPin, output_5Value);
        }
      }
    }
  else if (sensor_3Value < 510) // по часовой
  {
    if (sensor_2Value > 490 && sensor_3Value < 520)
    {
      if (sensor_1Value > 490 && sensor_3Value < 520)
      {
        analogWrite(valve_APin, output_6Value); 
        analogWrite(valve_DPin, output_6Value); 
        }
      }
    }
  }
 
введите или вставьте сюда код

Что означает вот эта ваша инструкция (по вашему мнению, своими словами):

valve_DPin < 0 == 0 

???

вот тут происходит какая-то ересь

Поэтому я и спрашиваю:

и я вам тут писал типа “псевдокод” программы целиком, кстати по смыслу очень похоже на ваш нынешний код, но учтены некоторые нюансы.

Я понял что записал не правильно.
analogWrite(valve_DPin, output_2Value-output_4Value, valve_DPin < 0 == 0 );
хотел задать если значение отрицательное то оно равно нулю.
А как правильно?

лучше всего на этапе где эти значения появляются (строки 38-43 в вашем коде) использовать функцию constrain()

Вот так перепиши:

        analogWrite(valve_BPin, (valve_DPin < 0 ? 0 : output_1Value - output_4Value));

Это если я правильно логику понял…

не, valve_DPin это же номер пина?))

Я не знаю, исправляю как понимаю…

=========

Да, действительно - это пин и он всегда больше нуля (равен 12)… )))))

у него в объявлениях const int valve_BPin = 10; // Пин для управления электромагнитом B (вперед правая)

Ну и какой смысл в этом?

analogWrite(valve_APin, output_1Value-output_3Value, valve_DPin < 0 == 0 );

Расшифруйте…

у него в 38-43 строках при чтении с аналогов получатся отрицательные значения для полуосей джойстика, особенно для стороны, противоположной той, в которую джойстик дернут. Полагаю, это пытался пофиксить так

Вот это что ли?

analogWrite(valve_CPin, (output_2Value - output_3Value < 0 ) ? 0 : (output_2Value - output_3Value) );