myservo' не называет тип
Я продолжаю получать 'myservo' не называет тип в качестве сообщения об ошибке, я уже просматривал другие решенные вопросы, подобные этому, но не могу найти ошибку. Буду очень рад вашей помощи.
/*********************************************************
* Управление ботами
* Автор: soleil_zero
* На основе кода
* Магистр. Фаусто М. Лагос С.
* @пиратакс007
* Версия 2.0.0 — 2019 г.
* ГНУ ГПЛВ3+
*
* Аппаратное обеспечение:
* Ардуино Мега2560
* Adafruit Motor Shield V1.2
* Модуль Bluetooth H6
* 1 сервопривод
* 2 двигателя постоянного тока
*********************************************************/
// Библиотека для Adafruit Motor Shield V1.2 и Servo
#include "AFMotor.h"
#include "Servo.h"
// Двигатели подключены к портам 1 и 2
AF_DCMotor leftMotor(1, MOTOR12_64KHZ);
AF_DCMotor rightMotor(2, MOTOR12_64KHZ);
Servo myservo;
myservo.attach(9);
// Переменная для передачи сообщений через Bluetooth
char message;
// угол поворота сервопривода
int angle = 0;
void setup() {
// Скорости в двигателях
leftMotor.setSpeed(150);
rightMotor.setSpeed(150);
/* Debido a que el Adafruit Motor Shield V1.2 ocupa los pines digitales 0 y 1 para la conexión del módulo HC05
bluetooth deben utilizarse cualquiera de los otros disponibles: 14 (TX3) y 15 (RX3) o 16 (TX2) y 17 (RX2) o
18 (TX1) Y 19 (RX1). De acuerdo a cuál de los cuatro pines se utilicen deben modificarse las líneas
relacionadas a la comunicación Serial e.g si se utilizan los pines 18 y 19 la instrucción será Serial1 */
Serial3.begin(9600);
myservo.write(angle);
}
void loop() {
// Проверка сообщения на последовательном порту
if (Serial3.available() > 0) {
message = Serial3.read();
}
if (message == 'F') {// Вперед
leftMotor.run(FORWARD);
rightMotor.run(FORWARD);
} else if (message == 'B') {//Назад
leftMotor.run(BACKWARD);
rightMotor.run(BACKWARD);
} else if (message == 'L') {//Left
leftMotor.run(FORWARD);
rightMotor.run(BACKWARD);
} else if (message == 'R') {//правильно
leftMotor.run(BACKWARD);
rightMotor.run(FORWARD);
} else if (message == 'S') {//stop
leftMotor.run(RELEASE);
rightMotor.run(RELEASE);
Serial3.print("stop");
}
} else if (message == 'U') {//вниз
angle = 0;
servo1.write(angle);
}else if (message == 'D') {//up
angle = 90;
servo1.write(angle);
}
}
@soleil_zero, 👍-1
Обсуждение1 ответ
Лучший ответ:
▲ 1
В языках C и C++ операторы пишутся внутри функций. Этот myservo.attach(9);
является оператором. Вы не можете просто написать это в середине файла. Он должен находиться внутри функции.
В вашем коде myservo.attach(9);
просто находится в глуши. У вас хватило ума поместить leftMotor.setSpeed(150);
внутрь setup()
. Почему вы вдруг решили разместить myservo.attach(9);
вне каких-либо функций?
Функция setup()
была бы подходящим местом для этого оператора.
,
@AnT
Смотрите также:
- Мотор для лебедки (с контроллером и внешним блоком питания)
- Использование ВСЕХ аналоговых выводов на Mega для Servo
- Сервопривод не движется с датчиком движения PIR
- Бесщеточный двигатель "дергается" сам по себе при подключении к батарее
- Сервопривод начинает вращаться всякий раз, когда он подключен
- Невозможно найти модуль PCA9685 при использовании библиотеки I2CScanner: нет движения сервопривода.
- неопределенная ссылка на `Servo::Servo()' в пользовательской библиотеке
- Как разделить входящую строку?
это было задано много ... пожалуйста, изучите, прежде чем публиковать свой вопрос, @jsotola