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-битном ноутбуке.
Есть ли способ удалить строки кода, которые мешают мне загрузить скетч, или есть другие способы его решения?
@user29519, 👍2
Обсуждение2 ответа
Лучший ответ:
Я просмотрел некоторые записи в поиске 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.
В меню MakeBlock "выбор расширений" снимите галочки со всех расширений, оставив галочкой только то, что называется "Makeblock":
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- устаревшее преобразование из строковой константы в 'char*'
- Асинхронные вызовы функций в скетче ардуино
- Какие есть другие IDE для Arduino?
- Esp8266 Vin контакт
- Двигатель постоянного тока шумит, но не вращается
- Цикл While не прерывается
- Плата для разработки STM8 с Arduino IDE
Да, просто удалите их, а также строки, которые ссылаются на них, и так далее. Конечно, они существуют по какой-то причине, поэтому программа не будет делать то, что должна делать. Как вы правильно определили, он не может найти этот класс. Возможно, вам не хватает "#include", возможно, его нет в библиотеке для включения. Трудно сказать по (отсутствию) деталей в вопросе., @Mark Smith
Упомянутые выше строки кода посвящены другим типам роботов, которые могут быть запрограммированы с помощью программного обеспечения и бесполезны на Arduino. Строки кода не могут быть удалены, потому что отображаемый код предназначен только для предварительного просмотра., @user29519
У вас возникли проблемы с нестандартным программным обеспечением, и вы даже не упоминаете, что это такое. Может быть, вы сможете найти файлы где-нибудь на диске и отредактировать их там. В противном случае, я подозреваю, вам придется дать нам немного больше подсказок., @Mark Smith