MeDCMotor' не называет ошибку типа внутри mBlock

Я использовал стороннюю среду программирования mBlock 3.4.5 для создания программ C++ Arduino с графическим языком программирования. Я составлял программу, и возникла следующая проблема.

project_Untitled0_0.ino:65:1: error: 'MeDCMotor' does not name a type
project_Untitled0_0.ino:66:1: error: 'MeDCMotor' does not name a type
project_Untitled0_0.ino: In function 'void move(int, int)':
project_Untitled0_0.ino:85:7: error: 'motor_9' was not declared in this scope
project_Untitled0_0.ino:85:24: error: 'M1' was not declared in this scope
project_Untitled0_0.ino:86:7: error: 'motor_10' was not declared in this scope
'MeDCMotor' does not name a type

Я еще раз взглянул на программу, и там было несколько строк кода, которые, кажется, были добавлены в программу deafult:

MeDCMotor motor_9(9);
MeDCMotor motor_10(10);
void move(int direction, int speed)
{
      int leftSpeed = 0;
      int rightSpeed = 0;
      if(direction == 1){
            leftSpeed = speed;
            rightSpeed = speed;
      }else if(direction == 2){
            leftSpeed = -speed;
            rightSpeed = -speed;
      }else if(direction == 3){
            leftSpeed = -speed;
            rightSpeed = speed;
      }else if(direction == 4){
            leftSpeed = speed;
            rightSpeed = -speed;
      }
      motor_9.run((9)==M1?-(leftSpeed):(leftSpeed));
      motor_10.run((10)==M1?-(rightSpeed):(rightSpeed));
}

Поскольку программа не распознает класс MeDCMotor, загрузить ее не удалось.

Я использую Windows 10 home edition на 64-битном ноутбуке.

Есть ли способ удалить строки кода, которые мешают мне загрузить скетч, или есть другие способы его решения?

, 👍2

Обсуждение

Да, просто удалите их, а также строки, которые ссылаются на них, и так далее. Конечно, они существуют по какой-то причине, поэтому программа не будет делать то, что должна делать. Как вы правильно определили, он не может найти этот класс. Возможно, вам не хватает "#include", возможно, его нет в библиотеке для включения. Трудно сказать по (отсутствию) деталей в вопросе., @Mark Smith

Упомянутые выше строки кода посвящены другим типам роботов, которые могут быть запрограммированы с помощью программного обеспечения и бесполезны на Arduino. Строки кода не могут быть удалены, потому что отображаемый код предназначен только для предварительного просмотра., @user29519

У вас возникли проблемы с нестандартным программным обеспечением, и вы даже не упоминаете, что это такое. Может быть, вы сможете найти файлы где-нибудь на диске и отредактировать их там. В противном случае, я подозреваю, вам придется дать нам немного больше подсказок., @Mark Smith


2 ответа


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

1

Я просмотрел некоторые записи в поиске Google на предмет ошибки: "MeDCMotor" не называет тип, например 1, 2, 3 и 4. Первые три из этих последних четырех ссылок непосредственно касаются заданного вами вопроса, и ни одна из них не отвечает на него четко, за исключением предложения повторно загрузить или переустановить библиотеку makeblock. Хотя четвертая ссылка адресует ошибку “не называет тип” для другой библиотеки, а не для makeblock, она имеет относительно четкое объяснение проблемы для этой другой библиотеки:

Таким образом, как и было поставлено, ArduinoByteBuffer.zip файл имел сложный набор подкаталогов, а также два файла ByteBuffer.ccp и ByteBuffer.h были расположены на один уровень ниже в: \ArduinoByteBuffers\ByteBuffer\

Когда я "установил" библиотеку, она попала в каталог:

C:\Documents и настройки\Al\Мои документы\Arduino\библиотеки\ArduinoByteBuffers\ByteBuffer\ByteBuffer.ccp C:\Documents и настройки\Al\Мои документы\Arduino\библиотеки\ArduinoByteBuffers\ByteBuffer\ByteBuffer.h

Чтобы решить эту проблему, я поднял их на уровень выше:

C:\Documents и настройки\Al\Мои документы\Arduino\библиотеки\ArduinoByteBuffers\ByteBuffer.ccp C:\Documents и настройки\Al\Мои документы\Arduino\библиотеки\ArduinoByteBuffers\ByteBuffer.h

Это, по - видимому, и было ключом к перемещению двух файлов (*.ccp и *.h) из подкаталога.

Вместо того чтобы следовать обычным правилам поиска библиотек C или C++, Arduino IDE копирует наборы файлов во временный каталог в соответствии со своими собственными правилами при компиляции скетча. Вам нужно будет переместить файлы библиотеки makeblock, чтобы они соответствовали соглашениям Arduino IDE.

,

1

В меню MakeBlock "выбор расширений" снимите галочки со всех расширений, оставив галочкой только то, что называется "Makeblock":

,