когда я закончил кодировать свои 3 двигателя постоянного тока, все эти ошибки накопились, одна из них сказала, что в программе есть случайный «/ 302».
/*
#include <SmartInventor.h>
*/
void setup() {
SmartInventor.DCMotor();
}
void loop() {
// М1, М2, М3
// по часовой стрелке, против часовой стрелки, СТОП
// 0-100
// 0-360
SmartInventor.DCMotor(M1, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°);
delay(5000);
SmartInventor.DCMotor(M1, CCW, 10, 45°); // Музыка начинается //0:00:06
delay(2000);
SmartInventor.DCMotor(M1, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°);
delay(11000);
SmartInventor.DCMotor(M1, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°); //Музыка останавливается //0:00:32
delay(10000);
SmartInventor.DCMotor(M1, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°);
delay(5000);
SmartInventor.DCMotor(M1, CCW, 10, 45°);
delay(1000);
SmartInventor.DCMotor(M1, CW, 10, 45°); // Музыка возобновляется //0:00:44
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°);
delay(18000);
SmartInventor.DCMotor(M1, CCW, 10, 90°);
delay(3000);
SmartInventor.DCMOtor(M1, CW, 10, 45°);
delay(2000);
SmartINventor.DCMotor(M1, STOP, 10, 0°);
delay(8000);
SmartInventor.DCMOtor(M1, CW, 10, 45°); //Музыка останавливается //0:01:15
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°);
delay(5000);
SmartINventor.DCMotor(M1, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°);
delay(3000);
SmartInventor.DCMotor(M1, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°); // Музыка снова начинается //0:01:31
delay(11000);
SmartInventor.DCMotor(M1, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°); //Музыка останавливается //0:02:03
delay(23000);
SmartInventor.DCMotor(M1, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°); // Музыка снова включается //0:02:14
delay(12000);
SmartInventor.DCMotor(M1, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°);
delay(6000);
SmartInventor.DCMotor(M1, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°);
delay(6000);
SmartInventor.DCMotor(M1, CCW, 10, 45°); //Музыка заканчивается //0:02:40
delay(2000);
SmartInventor.DCMotor(M1, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M1, STOP, 0, 0°);
delay(3000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(5000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventer.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000)
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventer.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(13000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventer.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventer.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(13000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventer.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventer.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventer.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(13000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000)
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventer.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventer.DCMotor(M2, CCW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(2000);
SmartInventor.DCMotor(M2, CW, 10, 45°);
delay(2000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(7000);
SmartInventor.DCMotor(M3, STOP, 0, 0°);
delay(7000);
SmartInventor.DCMotor(M3, CW, 20, 360°);
delay(26000);
SmartInventor.DCMotor(M3, STOP, 0, 0°);
delay(12000);
SmartInventor.DCMotor(M3, CW, 20, 360°);
delay(31000);
SmartInventor.DCMotor(M3, STOP, 0, 0°);
delay(12000);
SmartInventor.DCMotor(M3, CW, 20, 360°);
delay(31000);
SmartInventor.DCMotor(M3, STOP, 0, 0°);
delay(12000);
SmartInventor.DCMotor(M3, CW, 20, 360°);
delay(26000);
SmartInventor.DCMotor(M2, STOP, 0, 0°);
delay(5000);
< SmartInventor.h / >
}
@Tommy, 👍-1
Обсуждение1 ответ
Код показывает несколько ошибок:
В начале вы комментируете библиотеку
SmartInventor
. Вам нужна эта библиотека. Вы должны удалить маркеры комментариев/*
и*/
вокруг оператора#include
.В конце кода у вас есть
< SmartInventor.h / >
. Вы должны удалить эту строку. Это просто неправильно, даже синтаксис C/C++.Кажется, вы неправильно понимаете, что такое
SmartInventor.DCMotor()
и что он делает. Во-первых, это двигатель постоянного тока. Это означает, что у вас нет контроля над углом двигателя. Вы можете задать ему направление и скорость. Больше ничего. А со стандартным мотором постоянного тока (без редуктора) можно даже не надеяться получить от него определенные углы, даже за счет изощренного управления. Мотор просто не создан для таких задач.Когда вы заглянете в
SmartInventor.h
, вы увидите объявление этой функции:void SmartInventorClass::DCMotor(char SelectMotor, char direction, char speed)
У вас слишком много параметров. Вы можете задать этой функции 2 или 3 параметра (прототип с 2 параметрами здесь не показан, вы можете увидеть его в заголовочном файле). Используйте функцию, как описано.
В связи с предыдущей проблемой: вы пытались использовать в коде символ градуса
°
. Вы не можете сделать это. Это недопустимый символ в синтаксисе C/C++. Обычно ко всем числам в программе не привязана единица измерения. Вы не пишетеdelay(1000ms)
для задержки 1 с, вы пишетеdelay(1000)
. Функция должна интерпретировать это число по своему усмотрению. Вы знаете только из документации этой функции (или из ее реализации в коде), что параметры означают время в миллисекундах. Для микроконтроллера единица миллисекунды не имеет значения. То же самое и со степенью. При управлении сервоприводом, которому вы можете задать нужный угол, вы пишетеservo.write(90)
для установки его на 90°. Здесь нет знака степени.
Итак, я использую задержку (1000) для себя? и что вы подразумеваете под слишком большим количеством параметров?, @Tommy
Вы используете DCMotor(M1, STOP, 0, 0°)
. Это 4 параметра для функции. Но у функции всего 2 или 3 параметра. Вы не можете указать больше параметров., @chrisl
Вы правильно использовали функцию delay()
. Я просто использовал эту функцию, чтобы объяснить, что микроконтроллер не знает о единицах измерения., @chrisl
Хорошо, я просто удалил ° и сделал все, что вы мне сказали, но теперь он говорит, что нет соответствующего вызова функции для «SmartInentor:: DCMotor ()»., @Tommy
Вы можете добавить новые сообщения об ошибках (полные сообщения) к своему вопросу, отредактировав его. Сохраните предыдущий текст вашего вопроса и добавьте новую информацию в конце., @chrisl
какая новая информация?, @Tommy
Полное сообщение об ошибке. Компилятор дает вам довольно развернутое объяснение, что где не так. Вы не включили полное сообщение об ошибке в первый раз, поэтому сделайте это хотя бы сейчас. Я не люблю гадать, в чем именно ошибка., @chrisl
Установка Пустоты SmartInventor.DCMotor();, @Tommy
? ты знаешь почему это ошибка, @Tommy
Извините, больше не буду отвечать без полного списка ошибок. Вам нужно сначала доставить, прежде чем я смогу помочь вам дальше, @chrisl
/home/builder/opt/libraries/latest/rokitsmart_1_0_9/SmartInventor.cpp:839:16: примечание: предлагаемая альтернатива: «OCIE2B» ТИМСК &= ~(1<<OCIE2); ^~~~~ OCIE2B статус выхода 1, @Tommy
Можете ли вы, ребята, помочь мне, плз, @Tommy
- Ошибка: "'lcd' does not name a type" при использовании библиотеки LiquidCrystal.
- Печать string and integer LCD
- Что лучше использовать: #define или const int для констант?
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Ошибка компиляции кода для Arduino/Genuino Uno
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Отправьте несколько значений int из Python в Arduino, используя pySerial
Что со всеми символами ° в вашем коде?, @Majenko
1. Когда вы получаете ошибки компилятора, обязательно включите в свой вопрос полное сообщение об ошибке, полученное от компилятора. Нам нужно, чтобы помочь вам лучше. 2. Что делает оператор
<SmartInventor.h/>
в конце программы? Это похоже на тег XML/HTML., @chrisl° это градусы, проблема в том, что я также использовал это, потому что я хочу, чтобы двигатели вращались по часовой стрелке против часовой стрелки только на 45 или 90 или 360 градусов, можете ли вы помочь мне исправить это, если я сделал это неправильно, @Tommy
Да, это тоже неправильно. Удалить все символы
°
из кода, @chrislчем сделать так, чтобы он не делал полный оборот, а вращался только на 45 или 90 градусов?, @Tommy
Я не думаю, что вы понимаете, как делать вещи с двигателями. Вы не даете им угол, вы даете им скорость. Угол поворота зависит от того, как долго работает двигатель. У вас слишком много параметров для ваших вызовов DCMotor(), и этот параметр даже недействителен C. RTFM: https://www.robolink.com/smart-inventor-functions-guide/, @Majenko
Но какой из них недействителен, потому что в ссылке, которую вы мне прислали, показано, что я все сделал правильно, кроме °, @Tommy