Помогите пожалуйста с размещением функции

Я пытаюсь вызвать функцию, которая повернет шаговый двигатель на несколько шагов в зависимости от значения, отправленного через последовательную консоль. Например, если я отправлю 50, двигатель должен сделать 50 шагов по часовой стрелке (и против часовой стрелки для отрицательного значения).

#include <Stepper.h>
#define STEPS 200
Stepper stepper(STEPS, 8, 9, 10, 11);

int serial_input = Serial.read();

void setup() {
Serial.begin(9600) ;
stepper.setSpeed(30);
}

void loop() {
}

void turnMotor(serial_input){
  stepper.step ( serial_input ) ;
}  

И вот какие ошибки я получаю:

Motor4.ino:12:28: error: variable or field ‘turnMotor’ declared void
Motor4.ino:12:16: error: ‘serial_input’ was not declared in this scope
Motor4.ino:117:28: error: variable or field ‘turnMotor’ declared void

Спасибо

, 👍1

Обсуждение

вы не можете вызвать внешнюю функцию Serial.read(), @Juraj

Я вижу свою ошибку, как вы объяснили, @Danny


1 ответ


Лучший ответ:

0

Как уже объяснил Юрай, вы не можете использовать Serial.read() вне функции.

Вероятно, вам захочется вызвать его внутри цикла или функцию, вызываемую из цикла (через другие функции). Затем вы также можете вызвать TurnMotor из цикла или функцию, вызываемую из цикла. Значение (int Serial_input), вероятно, больше не обязательно должно быть глобальным, но это зависит от времени, когда вы присваиваете значение и когда вы вызываете TurnMotor.

,