Вопрос от чайника

MixerEkb
MixerEkb аватар
Offline
Зарегистрирован: 13.12.2017

Добрый день, уважаемые!

Собрал робота на двух колесах, запустил программу и получил

int lookLeft(){
  servo_motor.write(170);
  delay(500);
  int distance = readPing(); - строка выделена красным
  delay(100);
  servo_motor.write(115);
  return distance;
  delay(100);

Внизу надпись -

'readPing' was not declared in this scope
 
Что делать?
 
 
Гопнег
Гопнег аватар
Offline
Зарегистрирован: 24.11.2017

MixerEkb пишет:

Добрый день, уважаемые!

Собрал робота на двух колесах, запустил программу и получил

int lookLeft(){
  servo_motor.write(170);
  delay(500);
  int distance = readPing(); - строка выделена красным
  delay(100);
  servo_motor.write(115);
  return distance;
  delay(100);

Внизу надпись -

'readPing' was not declared in this scope
 
Что делать?
 
 

Задекларировать readPing выше сетапа. Типа int readPing

Гопнег
Гопнег аватар
Offline
Зарегистрирован: 24.11.2017

А вообще лучше скетч целиком выложить и по правилам. Кнопка "Code" вверху окна редактирования сообщения.

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

MixerEkb пишет:

Что делать?

1. Вставлять код как положено;

2. Понять, что написал компилятор. Если инвалид, то воспользоваться переводчиком.

3. Прочитать хоть какую-нибудь, ну хоть для самых идиотов, книгу по языку на котором пишешь.

4. Если после всего этого проблема так и не решилась, то выбрать один из двух вариантов дальнейших действий:
    4.1. Бросить это дело
    4.2. Купить аудиопровод из бескислородной меди и повеситься на нём.

MixerEkb
MixerEkb аватар
Offline
Зарегистрирован: 13.12.2017
#include <Servo.h>          //Библиотека сервомотора. Есть по стандарту
#include <NewPing.h>        //Библиотека Ультразвукового датчика (нужно установить)

//Пины контроллера L298N
const int LeftMotorForward = 7;
const int LeftMotorBackward = 6;
const int RightMotorForward = 5;
const int RightMotorBackward = 4;

//Пины ультразвукового датчика
#define trig_pin A0 //Аналоговый вход 1
#define echo_pin A1 //Аналоговый вход 2

#define maximum_distance 200
boolean goesForward = false;
int distance = 100;

NewPing sonar(trig_pin, echo_pin, maximum_distance); //sensor function
Servo servo_motor; //our servo name


void setup(){

  pinMode(RightMotorForward, OUTPUT);
  pinMode(LeftMotorForward, OUTPUT);
  pinMode(LeftMotorBackward, OUTPUT);
  pinMode(RightMotorBackward, OUTPUT);
  
  servo_motor.attach(8); //Пин подключения сервомотора

  servo_motor.write(115);
  delay(2000);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
  distance = readPing();
  delay(100);
}

void loop(){

  int distanceRight = 0;
  int distanceLeft = 0;
  delay(50);

  if (distance <= 20){
    moveStop();
    delay(300);
    moveBackward();
    delay(400);
    moveStop();
    delay(300);
    distanceRight = lookRight();
    delay(300);
    distanceLeft = lookLeft();
    delay(300);

    if (distance >= distanceLeft){
      turnRight();
      moveStop();
    }
    else{
      turnLeft();
      moveStop();
    }
  }
  else{
    moveForward(); 
  }
    distance = readPing();
}

int lookRight(){  
  servo_motor.write(50);
  delay(500);
  int distance = readPing();
  delay(100);
  servo_motor.write(115);
  return distance;
}

int lookLeft(){
  servo_motor.write(170);
  delay(500);
  int distance = readPing();
  delay(100);
  servo_motor.write(115);
  return distance;
  delay(100);
}

int readPing(){
  delay(70);
  int cm = sonar.ping_cm();
  if (cm==0){
    cm=250;
  }
  return cm;
}

void moveStop(){
  
  digitalWrite(RightMotorForward, LOW);
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(RightMotorBackward, LOW);
  digitalWrite(LeftMotorBackward, LOW);
}

void moveForward(){

  if(!goesForward){

    goesForward=true;
    
    digitalWrite(LeftMotorForward, HIGH);
    digitalWrite(RightMotorForward, HIGH);
  
    digitalWrite(LeftMotorBackward, LOW);
    digitalWrite(RightMotorBackward, LOW); 
  }
}

void moveBackward(){

  goesForward=false;

  digitalWrite(LeftMotorBackward, HIGH);
  digitalWrite(RightMotorBackward, HIGH);
  
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(RightMotorForward, LOW);
  
}

void turnRight(){

  digitalWrite(LeftMotorForward, HIGH);
  digitalWrite(RightMotorBackward, HIGH);
  
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(RightMotorForward, LOW);
  
  delay(500);
  
  digitalWrite(LeftMotorForward, HIGH);
  digitalWrite(RightMotorForward, HIGH);
  
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(RightMotorBackward, LOW);
 
  
  
}

void turnLeft(){

  digitalWrite(LeftMotorBackward, HIGH);
  digitalWrite(RightMotorForward, HIGH);
  
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(RightMotorBackward, LOW);

  delay(500);
  
  digitalWrite(LeftMotorForward, HIGH);
  digitalWrite(RightMotorForward, HIGH);
  
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(RightMotorBackward, LOW);

Гопнег пишет:

А вообще лучше скетч целиком выложить и по правилам. Кнопка "Code" вверху окна редактирования сообщения.

Ошибка в строке 088

MixerEkb
MixerEkb аватар
Offline
Зарегистрирован: 13.12.2017

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

MixerEkb пишет:

Что делать?

1. Вставлять код как положено;

2. Понять, что написал компилятор. Если инвалид, то воспользоваться переводчиком.

3. Прочитать хоть какую-нибудь, ну хоть для самых идиотов, книгу по языку на котором пишешь.

4. Если после всего этого проблема так и не решилась, то выбрать один из двух вариантов дальнейших действий:
    4.1. Бросить это дело
    4.2. Купить аудиопровод из бескислородной меди и повеситься на нём.

Прошу сильно не пинать. Если нетрудно, подскажите книгу. 

Не идиот. В 1989 году паял РК-86, на нем и программировал на BASIC-MICRON, с тех пор программированием не занимался, а тут хочу ребенка 15-ти лет в это дело ввергнуть.

ЗЫ. Сейчас аудиопровода такие чахлые, что не выдержат мою тушку.

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

MixerEkb пишет:

Прошу сильно не пинать. Если нетрудно, подскажите книгу. 

Да, там же ссылка дана - начните с этой.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ты где такой чоткий код спёр?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Если не хотите прислушится к совету из поста #1, второй совет - обновите IDE до последней. 

Да код и впрям чЕткий ))

int lookLeft(){
  servo_motor.write(170);
  delay(500);
  int distance = readPing();
  delay(100);
  servo_motor.write(115);
  return distance;
  delay(100);
}

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Мля, я тащусь, написано ведь:

#include <NewPing.h>        //Библиотека Ультразвукового датчика (нужно установить)

Вангую, в этом дело :)

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

xDriver пишет:
Да код и впрям чЕткий ))
Если Вы про строки 7 и 8, то да - есть в них что-то экзистенциальное.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

DIYMan пишет:

Мля, я тащусь, написано ведь:

#include <NewPing.h>        //Библиотека Ультразвукового датчика (нужно установить)

Вангую, в этом дело :)

тогда бы все поломалось раньше, на строчке

NewPing sonar(trig_pin, echo_pin, maximum_distance); //sensor function

add:

А Миха тем временем аватарки настраивал ....

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

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

..... то да - есть в них что-то экзистенциальное.

Евгений, Вы меня в вики загнали )))

MixerEkb
MixerEkb аватар
Offline
Зарегистрирован: 13.12.2017

DIYMan пишет:

Мля, я тащусь, написано ведь:

#include <NewPing.h>        //Библиотека Ультразвукового датчика (нужно установить)

Вангую, в этом дело :)

Установлено

MixerEkb
MixerEkb аватар
Offline
Зарегистрирован: 13.12.2017

xDriver пишет:

Если не хотите прислушится к совету из поста #1, второй совет - обновите IDE до последней. 

Коим образом?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

не, ну дальше я пас...

https://www.arduino.cc/en/Main/Donate

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

MixerEkb пишет:

Коим образом?

По ссылке от xDriver, вторая справа круглая кнопка.

MixerEkb
MixerEkb аватар
Offline
Зарегистрирован: 13.12.2017

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

MixerEkb пишет:

Коим образом?

По ссылке от xDriver, вторая справа круглая кнопка.

Помогло! И заработало! Всем огромное спасибо и большие плюсы к карме!

MixerEkb
MixerEkb аватар
Offline
Зарегистрирован: 13.12.2017

Правда, не круглая кнопка, а обновление версии софта.