Не могу понять в чем ошибка.

Amellne
Offline
Зарегистрирован: 14.11.2016

Это исходник скетча для автономной езды машинки, и взят он был в полностью готовом варианте, но при попытке загрузить его в arduino uno выдает ошибку связанную с неопределенными переменными, помогите прошу. Уже дня три смотрю код и все ни как не могу понять в чем проблема.



/*
 * Используются библиотеки:
 * Sweep by BARRAGAN <http://barraganstudio.com> modified 8 Nov 2013 by Scott Fitzgerald http://arduino.cc/en/Tutorial/Sweep
 * Adafruit Motor shield library copyright Adafruit Industries LLC, 2009 
 */

#include <AFMotor.h>

#define VERSION "RoboCar4W ver.2015.02.05"

/*
 * Уровень отладки.
 * Чем больше, тем подробнее.
 * пока используются уровни:
 * Больше 1 - выдача отладочных сообщений
 * Больше 5 - реально моторы не включаются и дистанция не замеряется, а генерируется рандомно
 */
byte debug = 0;

// определяем моторы
AF_DCMotor motorFrontLeft(2);  //  передний левый
AF_DCMotor motorFrontRight(1); //  передний правый
AF_DCMotor motorRearLeft(3);   //  задний левый
AF_DCMotor motorRearRight(4);  //  задний правый

byte SPEED_CURRENT = 0; // текущая скорость моторов

/*
 * Виды поворотов
 */
const byte MOTOR_ROTATE_RIGHT = 0;  // вправо резкий разворот на месте (все левые колеса крутятся вперед, все правые - назад)
const byte MOTOR_TURN_RIGHT   = 1;  // вправо плавный поворот
const byte MOTOR_ROTATE_LEFT  = 2;  // влево резкий разворот на месте
const byte MOTOR_TURN_LEFT    = 3;  // влево плавный поворот
const byte MOTOR_TURN_BACK_RIGHT = 4; // поворот вправо задним ходом
const byte MOTOR_TURN_BACK_LEFT  = 5;

byte MOTOR_PREV_DIRECTION; // предыдущее выполненное направление движения

/*
 * Задержки для езды, поворотов на месте и плавных поворотов.
 * Подбираются экспериментально.
 */
const int DELAY_RUN    = 2;
const int DELAY_RUN_BACK = 50;
const int DELAY_ROTATE = 500;
const int DELAY_TURN   = 500;
const int DELAY_TURN_BACK = 500;

// в сантиметрах (distance threshold) Пороги расстояний до препятствия
// Если ближе, то резкий разворот на месте, иначе плавный доворот
const int DST_TRH_TURN = 28;
// Если ближе, то стоп и назад
const int DST_TRH_BACK = 15;

/* пины для подключения HC-SR04 Ultrasonic Module Distance Measuring 
 * 13, 2 цифровые пины
 * 14, 15 аналоговые пины A0 и A1 соответственно
 */
#define SONIC_PIN_TRIG 14 //13
#define SONIC_PIN_ECHO 15 //2
// Detection distance: 2cm--450cm
const int SONIC_DISTANCE_MAX = 450;
const int SONIC_DISTANCE_MIN = 2;



/******************************************
  Main program
******************************************/

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  if (debug > 1) Serial.println(VERSION);

  pinMode(SONIC_PIN_TRIG, OUTPUT);
  pinMode(SONIC_PIN_ECHO, INPUT);

  motorInit();
  if (debug  > 1) {
    delay(3000);
  }
}

void loop() {
  if (debug  > 1) Serial.println("\n*** new loop() start ***\n");
  // сравнить измеренные расстояния до препятствий
  // и определить направления движения
  int distance, ch;
  // замер расстояния
  distance = measureDistance();
  if (debug > 1) {
    Serial.print("distance = "); Serial.println(distance);
  }
  // препятствие так близко что надо ехать назад ?
  if ( distance <= DST_TRH_BACK ) {
    if (debug > 1) Serial.println("ALARM! Distance too small!!!");
    // стоп
    motorStop();
    if (debug  > 1) delay(1000);
    // ранее уже поворачивали задним ходом влево?
    if (MOTOR_TURN_BACK_LEFT == MOTOR_PREV_DIRECTION) {
      motorTurnBackRight();
    } else {
      motorTurnBackLeft();
    }
    if (debug  > 1) delay(1000);
    motorRunBack();
    return; // начать новый loop()
  }
  // определить направление поворота
  // прямо
  if ( distance > DST_TRH_TURN )   {
    motorRunForward();
  } else {
    motorStop();
    // направление поворота выбираем рандомно
    int rnd = random(1, 10);
    if (rnd > 5) {
      if (debug  > 1) delay(500);
      motorTurnLeft();
    } else {
      if (debug  > 1) delay(500);
      motorTurnRight();
    }
  }
}



/******************************************
  Functions
******************************************/

// инициализация моторов
void motorInit()  {
  if (debug > 1) Serial.println("motor Init");
  if (debug > 5) return;
  // turn on motor
  motorSetSpeed(190); // скорость мотора 0--255, реально меньше 100 не работает
  motorStop();
}

// движение вперед по прямой
void motorRunForward()  {
  if (debug > 1) Serial.println("Forward");
  if (debug > 5) return;
  motorFrontLeft.run(FORWARD);
  motorFrontRight.run(FORWARD);
  motorRearLeft.run(FORWARD);
  motorRearRight.run(FORWARD);
  delay(DELAY_RUN);
}

// движение назад по прямой
void motorRunBack()  {
  if (debug > 1) Serial.println("Backward");
  if (debug > 5) return;
  motorFrontLeft.run(BACKWARD);
  motorFrontRight.run(BACKWARD);
  motorRearLeft.run(BACKWARD);
  motorRearRight.run(BACKWARD);
  delay(DELAY_RUN_BACK);
}

// правый разворот на месте
void motorRotateRight()  {
  MOTOR_PREV_DIRECTION = MOTOR_ROTATE_RIGHT;
  if (debug > 1) Serial.println("Rotate R");
  if (debug > 5) return;
  motorFrontLeft.run(FORWARD);
  motorFrontRight.run(BACKWARD);
  motorRearLeft.run(FORWARD);
  motorRearRight.run(BACKWARD);
  delay(DELAY_ROTATE);
}

// правый плавный поворот (при движении вперед)
void motorTurnRight()  {
  MOTOR_PREV_DIRECTION = MOTOR_TURN_RIGHT;
  if (debug > 1) Serial.println("Turn R");
  if (debug > 5) return;
  motorFrontLeft.run(FORWARD);
  motorFrontRight.run(RELEASE);
  motorRearLeft.run(FORWARD);
  motorRearRight.run(RELEASE);
  delay(DELAY_TURN);
}

// правый плавный поворот (при движении назад)
void motorTurnBackRight()  {
  MOTOR_PREV_DIRECTION = MOTOR_TURN_BACK_RIGHT;
  if (debug > 1) Serial.println("Turn Back R");
  if (debug > 5) return;
  motorFrontLeft.run(BACKWARD);
  motorFrontRight.run(RELEASE);
  motorRearLeft.run(BACKWARD);
  motorRearRight.run(RELEASE);
  delay(DELAY_TURN_BACK);
}

// левый разворот на месте
void motorRotateLeft()  {
  MOTOR_PREV_DIRECTION = MOTOR_ROTATE_LEFT;
  if (debug > 1) Serial.println("Rotate L");
  if (debug > 5) return;
  motorFrontLeft.run(BACKWARD);
  motorFrontRight.run(FORWARD);
  motorRearLeft.run(BACKWARD);
  motorRearRight.run(FORWARD);
  delay(DELAY_ROTATE);
}

// левый плавный поворот (при движении вперед)
void motorTurnLeft()  {
  MOTOR_PREV_DIRECTION = MOTOR_TURN_LEFT;
  if (debug > 1) Serial.println("Turn L");
  if (debug > 5) return;
  motorFrontLeft.run(RELEASE);
  motorFrontRight.run(FORWARD);
  motorRearLeft.run(RELEASE);
  motorRearRight.run(FORWARD);
  delay(DELAY_TURN);
}

// левый плавный поворот (при движении назад)
void motorTurnBackLeft()  {
  MOTOR_PREV_DIRECTION = MOTOR_TURN_BACK_LEFT;
  if (debug > 1) Serial.println("Turn Back L");
  if (debug > 5) return;
  motorFrontLeft.run(RELEASE);
  motorFrontRight.run(BACKWARD);
  motorRearLeft.run(RELEASE);
  motorRearRight.run(BACKWARD);
  delay(DELAY_TURN_BACK);
}

// стоп резко
void motorStop()  {
  if (debug > 1) Serial.println("Stop");
  if (debug > 5) return;
  motorFrontLeft.run(RELEASE);
  motorFrontRight.run(RELEASE);
  motorRearLeft.run(RELEASE);
  motorRearRight.run(RELEASE);
}

// стоп плавно
void motorStopSlow()  {
  if (debug > 1) Serial.println("Stop slow");
  if (debug > 5) return;
  int speed;
  int diff = SPEED_CURRENT / 3; // сбрасываем скорость в 3 приема
  for (speed = SPEED_CURRENT; speed <= 0; speed -= diff) {
    motorSetSpeed(speed);
    delay(150);
  }
  motorStop(); // тормозим еще раз на всякий случай
}

// разгон плавно
void motorRunSlow()  {
  if (debug) Serial.println("Stop slow");
  if (debug > 5) return;
  int speed;
  int diff = (255 - SPEED_CURRENT) / 3; // набираем скорость в 3 приема
  for (speed = SPEED_CURRENT; speed > 255; speed += diff) {
    motorSetSpeed(speed);
    delay(150);
  }
  motorSetSpeed(255); // устанавливаем максималку еще раз на всякий случай
}

// установить скорость 0--255
void motorSetSpeed(int speed)  {
  // скорость мотора 0--255
  if (speed > 255)
    speed = 255;
  if (speed < 0)
    speed = 0;
  if (debug) {
    Serial.print("Motor set Speed = ");
    Serial.println(speed);
  }
  if (debug > 5) return;
  motorFrontLeft.setSpeed(speed);
  motorFrontRight.setSpeed(speed);
  motorRearLeft.setSpeed(speed);
  motorRearRight.setSpeed(speed);
  // запоминаем текущую скорость
  SPEED_CURRENT = speed;
}

// Возвращает расстояние до препятствия в сантиметрах
int measureDistance()  {
  if (debug > 5) return random(SONIC_DISTANCE_MIN, 50);
  long duration;
  int  distance;
  /* Для запуска передатчика нужно подать на Trig сигнал, длительностью 10мкс.
   * Передатчик который посылает 8 коротких импульсов с частотой 40kHz.
   * Приемник получает отраженный сигнал и на входе Echo генерируется сигнал,
   * длительность которого равна времени прохождения звукового сигнала.
   */
  digitalWrite(SONIC_PIN_TRIG, LOW); // инициализация перед замером
  delayMicroseconds(5); // 3
  digitalWrite(SONIC_PIN_TRIG, HIGH);
  delayMicroseconds(12); // 10
  digitalWrite(SONIC_PIN_TRIG, LOW);

  duration = pulseIn(SONIC_PIN_ECHO, HIGH);
  // Скорость звука 340 м/с или 29 микросекунд на сантиметр.
  // Звук идет вперед и возвращается назад, таким образом время нужно делить на два
  distance = duration / 58; // = microseconds / 29 / 2

  if (distance < SONIC_DISTANCE_MIN )  // out of range
    return SONIC_DISTANCE_MIN;
  if (distance > SONIC_DISTANCE_MAX )  // out of range
    return SONIC_DISTANCE_MAX;

  return distance;
}
Клапауций 234
Offline
Зарегистрирован: 24.10.2016

определи неопределённые переменные

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Amellne пишет:

при попытке загрузить его в arduino uno выдает ошибку связанную с неопределенными переменными, 

Сообщение об ошибке секретно?

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

ЕвгенийП пишет:

Сообщение об ошибке секретно?

я засекретил, что бы не привело к народным волнениям и свержению царя.

Amellne
Offline
Зарегистрирован: 14.11.2016

Вот сама ошибка.

exit status 1

'motorInit' was not declared in this scope
Araris
Offline
Зарегистрирован: 09.11.2012

Весь текст с 131-й строки и до конца переместите в верх скетча (после строк 66-67).

Так, чтобы void setup() и void loop() стали самыми последними в скетче.

Amellne
Offline
Зарегистрирован: 14.11.2016

Ничего не изменилось, все точно так же :с

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Amellne пишет:

Ничего не изменилось, все точно так же :с

Так не бывает.

1. Выложите новый скетч как есть сейчас

2. Выложите полное сообщение об ошибке, а не кусок,как Вы это сделали.

Amellne
Offline
Зарегистрирован: 14.11.2016

Скетч:

/*
 * Используются библиотеки:
 * Sweep by BARRAGAN <<a href="http://barraganstudio.com" rel="nofollow">http://barraganstudio.com</a>> modified 8 Nov 2013 by Scott Fitzgerald <a href="http://arduino.cc/en/Tutorial/Sweep" title="http://arduino.cc/en/Tutorial/Sweep" rel="nofollow">http://arduino.cc/en/Tutorial/Sweep</a>
 * Adafruit Motor shield library copyright Adafruit Industries LLC, 2009 
 */

#include <AFMotor.h>

#define VERSION "RoboCar4W ver.2015.02.05"

/*
 * Уровень отладки.
 * Чем больше, тем подробнее.
 * пока используются уровни:
 * Больше 1 - выдача отладочных сообщений
 * Больше 5 - реально моторы не включаются и дистанция не замеряется, а генерируется рандомно
 */
byte debug = 0;

// определяем моторы
AF_DCMotor motorFrontLeft(2);  //  передний левый
AF_DCMotor motorFrontRight(1); //  передний правый
AF_DCMotor motorRearLeft(3);   //  задний левый
AF_DCMotor motorRearRight(4);  //  задний правый

byte SPEED_CURRENT = 0; // текущая скорость моторов

/*
 * Виды поворотов
 */
const byte MOTOR_ROTATE_RIGHT = 0;  // вправо резкий разворот на месте (все левые колеса крутятся вперед, все правые - назад)
const byte MOTOR_TURN_RIGHT   = 1;  // вправо плавный поворот
const byte MOTOR_ROTATE_LEFT  = 2;  // влево резкий разворот на месте
const byte MOTOR_TURN_LEFT    = 3;  // влево плавный поворот
const byte MOTOR_TURN_BACK_RIGHT = 4; // поворот вправо задним ходом
const byte MOTOR_TURN_BACK_LEFT  = 5;

byte MOTOR_PREV_DIRECTION; // предыдущее выполненное направление движения

/*
 * Задержки для езды, поворотов на месте и плавных поворотов.
 * Подбираются экспериментально.
 */
const int DELAY_RUN    = 2;
const int DELAY_RUN_BACK = 50;
const int DELAY_ROTATE = 500;
const int DELAY_TURN   = 500;
const int DELAY_TURN_BACK = 500;

// в сантиметрах (distance threshold) Пороги расстояний до препятствия
// Если ближе, то резкий разворот на месте, иначе плавный доворот
const int DST_TRH_TURN = 28;
// Если ближе, то стоп и назад
const int DST_TRH_BACK = 15;

/* пины для подключения HC-SR04 Ultrasonic Module Distance Measuring 
 * 13, 2 цифровые пины
 * 14, 15 аналоговые пины A0 и A1 соответственно
 */
#define SONIC_PIN_TRIG 14 //13
#define SONIC_PIN_ECHO 15 //2
// Detection distance: 2cm--450cm
const int SONIC_DISTANCE_MAX = 450;
const int SONIC_DISTANCE_MIN = 2;

/******************************************
  Functions
******************************************/

// инициализация моторов
void motorInit()  {
  if (debug > 1) Serial.println("motor Init");
  if (debug > 5) return;
  // turn on motor
  motorSetSpeed(190); // скорость мотора 0--255, реально меньше 100 не работает
  motorStop();
}

// движение вперед по прямой
void motorRunForward()  {
  if (debug > 1) Serial.println("Forward");
  if (debug > 5) return;
  motorFrontLeft.run(FORWARD);
  motorFrontRight.run(FORWARD);
  motorRearLeft.run(FORWARD);
  motorRearRight.run(FORWARD);
  delay(DELAY_RUN);
}

// движение назад по прямой
void motorRunBack()  {
  if (debug > 1) Serial.println("Backward");
  if (debug > 5) return;
  motorFrontLeft.run(BACKWARD);
  motorFrontRight.run(BACKWARD);
  motorRearLeft.run(BACKWARD);
  motorRearRight.run(BACKWARD);
  delay(DELAY_RUN_BACK);
}

// правый разворот на месте
void motorRotateRight()  {
  MOTOR_PREV_DIRECTION = MOTOR_ROTATE_RIGHT;
  if (debug > 1) Serial.println("Rotate R");
  if (debug > 5) return;
  motorFrontLeft.run(FORWARD);
  motorFrontRight.run(BACKWARD);
  motorRearLeft.run(FORWARD);
  motorRearRight.run(BACKWARD);
  delay(DELAY_ROTATE);
}

// правый плавный поворот (при движении вперед)
void motorTurnRight()  {
  MOTOR_PREV_DIRECTION = MOTOR_TURN_RIGHT;
  if (debug > 1) Serial.println("Turn R");
  if (debug > 5) return;
  motorFrontLeft.run(FORWARD);
  motorFrontRight.run(RELEASE);
  motorRearLeft.run(FORWARD);
  motorRearRight.run(RELEASE);
  delay(DELAY_TURN);
}

// правый плавный поворот (при движении назад)
void motorTurnBackRight()  {
  MOTOR_PREV_DIRECTION = MOTOR_TURN_BACK_RIGHT;
  if (debug > 1) Serial.println("Turn Back R");
  if (debug > 5) return;
  motorFrontLeft.run(BACKWARD);
  motorFrontRight.run(RELEASE);
  motorRearLeft.run(BACKWARD);
  motorRearRight.run(RELEASE);
  delay(DELAY_TURN_BACK);
}

// левый разворот на месте
void motorRotateLeft()  {
  MOTOR_PREV_DIRECTION = MOTOR_ROTATE_LEFT;
  if (debug > 1) Serial.println("Rotate L");
  if (debug > 5) return;
  motorFrontLeft.run(BACKWARD);
  motorFrontRight.run(FORWARD);
  motorRearLeft.run(BACKWARD);
  motorRearRight.run(FORWARD);
  delay(DELAY_ROTATE);
}

// левый плавный поворот (при движении вперед)
void motorTurnLeft()  {
  MOTOR_PREV_DIRECTION = MOTOR_TURN_LEFT;
  if (debug > 1) Serial.println("Turn L");
  if (debug > 5) return;
  motorFrontLeft.run(RELEASE);
  motorFrontRight.run(FORWARD);
  motorRearLeft.run(RELEASE);
  motorRearRight.run(FORWARD);
  delay(DELAY_TURN);
}

// левый плавный поворот (при движении назад)
void motorTurnBackLeft()  {
  MOTOR_PREV_DIRECTION = MOTOR_TURN_BACK_LEFT;
  if (debug > 1) Serial.println("Turn Back L");
  if (debug > 5) return;
  motorFrontLeft.run(RELEASE);
  motorFrontRight.run(BACKWARD);
  motorRearLeft.run(RELEASE);
  motorRearRight.run(BACKWARD);
  delay(DELAY_TURN_BACK);
}

// стоп резко
void motorStop()  {
  if (debug > 1) Serial.println("Stop");
  if (debug > 5) return;
  motorFrontLeft.run(RELEASE);
  motorFrontRight.run(RELEASE);
  motorRearLeft.run(RELEASE);
  motorRearRight.run(RELEASE);
}

// стоп плавно
void motorStopSlow()  {
  if (debug > 1) Serial.println("Stop slow");
  if (debug > 5) return;
  int speed;
  int diff = SPEED_CURRENT / 3; // сбрасываем скорость в 3 приема
  for (speed = SPEED_CURRENT; speed <= 0; speed -= diff) {
    motorSetSpeed(speed);
    delay(150);
  }
  motorStop(); // тормозим еще раз на всякий случай
}

// разгон плавно
void motorRunSlow()  {
  if (debug) Serial.println("Stop slow");
  if (debug > 5) return;
  int speed;
  int diff = (255 - SPEED_CURRENT) / 3; // набираем скорость в 3 приема
  for (speed = SPEED_CURRENT; speed > 255; speed += diff) {
    motorSetSpeed(speed);
    delay(150);
  }
  motorSetSpeed(255); // устанавливаем максималку еще раз на всякий случай
}

// установить скорость 0--255
void motorSetSpeed(int speed)  {
  // скорость мотора 0--255
  if (speed > 255)
    speed = 255;
  if (speed < 0)
    speed = 0;
  if (debug) {
    Serial.print("Motor set Speed = ");
    Serial.println(speed);
  }
  if (debug > 5) return;
  motorFrontLeft.setSpeed(speed);
  motorFrontRight.setSpeed(speed);
  motorRearLeft.setSpeed(speed);
  motorRearRight.setSpeed(speed);
  // запоминаем текущую скорость
  SPEED_CURRENT = speed;
}

// Возвращает расстояние до препятствия в сантиметрах
int measureDistance()  {
  if (debug > 5) return random(SONIC_DISTANCE_MIN, 50);
  long duration;
  int  distance;
  /* Для запуска передатчика нужно подать на Trig сигнал, длительностью 10мкс.
   * Передатчик который посылает 8 коротких импульсов с частотой 40kHz.
   * Приемник получает отраженный сигнал и на входе Echo генерируется сигнал,
   * длительность которого равна времени прохождения звукового сигнала.
   */
  digitalWrite(SONIC_PIN_TRIG, LOW); // инициализация перед замером
  delayMicroseconds(5); // 3
  digitalWrite(SONIC_PIN_TRIG, HIGH);
  delayMicroseconds(12); // 10
  digitalWrite(SONIC_PIN_TRIG, LOW);

  duration = pulseIn(SONIC_PIN_ECHO, HIGH);
  // Скорость звука 340 м/с или 29 микросекунд на сантиметр.
  // Звук идет вперед и возвращается назад, таким образом время нужно делить на два
  distance = duration / 58; // = microseconds / 29 / 2

  if (distance < SONIC_DISTANCE_MIN )  // out of range
    return SONIC_DISTANCE_MIN;
  if (distance > SONIC_DISTANCE_MAX )  // out of range
    return SONIC_DISTANCE_MAX;

  return distance;
}

/******************************************
  Main program
******************************************/

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  if (debug > 1) Serial.println(VERSION);

  pinMode(SONIC_PIN_TRIG, OUTPUT);
  pinMode(SONIC_PIN_ECHO, INPUT);

  motorInit();
  if (debug  > 1) {
    delay(3000);
  }
}

void loop() {
  if (debug  > 1) Serial.println("\n*** new loop() start ***\n");
  // сравнить измеренные расстояния до препятствий
  // и определить направления движения
  int distance, ch;
  // замер расстояния
  distance = measureDistance();
  if (debug > 1) {
    Serial.print("distance = "); Serial.println(distance);
  }
  // препятствие так близко что надо ехать назад ?
  if ( distance <= DST_TRH_BACK ) {
    if (debug > 1) Serial.println("ALARM! Distance too small!!!");
    // стоп
    motorStop();
    if (debug  > 1) delay(1000);
    // ранее уже поворачивали задним ходом влево?
    if (MOTOR_TURN_BACK_LEFT == MOTOR_PREV_DIRECTION) {
      motorTurnBackRight();
    } else {
      motorTurnBackLeft();
    }
    if (debug  > 1) delay(1000);
    motorRunBack();
    return; // начать новый loop()
  }
  // определить направление поворота
  // прямо
  if ( distance > DST_TRH_TURN )   {
    motorRunForward();
  } else {
    motorStop();
    // направление поворота выбираем рандомно
    int rnd = random(1, 10);
    if (rnd > 5) {
      if (debug  > 1) delay(500);
      motorTurnLeft();
    } else {
      if (debug  > 1) delay(500);
      motorTurnRight();
    }
  }
}

 

Полное сообщение ошибки:

C:\Users\Анастасия\Documents\Arduino\sketch_nov14\sketch_nov14.ino: In function 'void motorInit()':

sketch_nov14:75: error: 'motorSetSpeed' was not declared in this scope

sketch_nov14:76: error: 'motorStop' was not declared in this scope

C:\Users\Анастасия\Documents\Arduino\sketch_nov14\sketch_nov14.ino: In function 'void motorStopSlow()':

sketch_nov14:190: error: 'motorSetSpeed' was not declared in this scope

C:\Users\Анастасия\Documents\Arduino\sketch_nov14\sketch_nov14.ino: In function 'void motorRunSlow()':

sketch_nov14:203: error: 'motorSetSpeed' was not declared in this scope

sketch_nov14:206: error: 'motorSetSpeed' was not declared in this scope

exit status 1
'motorSetSpeed' was not declared in this scope

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

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

У Вас в строках 75 и 76 используются функции motorSetSpeed и motorStop. А определены они в строках 210-227 и 174-181 соответсвенно.

Переставьте эти две функции выше, чем функция motorInit.

Если снова что-то подобное вылезет, переставляйте всё по принципу: любая используемая функция/переменная должна быть определена ДО использования.

Когда всё переставите, тогда скомпилируется нормально.

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Странно, у меня в circuits все компелируется нормально... интересно, зачем они эту функцию в компиляторе убрали... Решили наверное ближе к стандарту подойти, а вот у нас теперь не компилируется ничего!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mr.Privet пишет:

Странно, у меня в circuits все компелируется нормально... интересно, зачем они эту функцию в компиляторе убрали...

Правильно именно так - сначала определи, а потом используй. Но разработчики IDE типа "жизнь новичкам облегчили" и вставляли предварительный объявления всех функций в начало программы, чем убили ряд возможностей языка. Потом одумались и перестали так гадить. И вот теперь у всех приключения - старые программы не компилируются. Ничего страшного, просто надо соблдать правила объявления переменных (функций) и всё будет нормально.

Amellne
Offline
Зарегистрирован: 14.11.2016

Спасибо большое за помощь, все исправил. Теперь все работает.