@BABOS если первый порт не получил данных, то всегда ли второй порт получил? А если serial и serial1 это один и тот же порт?
Бабос вроде верный вариант дал. Он пойти должен и без блютуз модуля. Выдерните его, плату с мк питайте от пк, сервы от аккумов, минус общий и через монитор порта буквы-команды засылайте. Если не работает дело не в скетче.
а знаки вопросов пропали ?
если нет тогда
void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Arduino ready!");
}
void loop() {
if (Serial.available() > 0) {
char c = Serial.read();
Serial.print("Received: ");
Serial.println(c);
Serial.print("ASCII code: ");
Serial.println((int)c);
}
}
если не работает попробуйте разные скорости 9600, 19200, 38400, 57600, 115200
не получит потому что это один и тот же порт))) а существует ли вообще serial1 ?
AEKravcov2001 не поможет верните блютузу библиотеку сериал порта, и теже пины что и были указаны, для приема блютуз команд ими…
SoftwareSerial BT(1,0); не 1 0 а какие были и никогда больше не переделывайте чужие программы!)))
Спасибо за совет, но знаки вопроса не пропали - разные скорости передачи данных пробовал - не помогло
Код для подключения arduino по bluetooth взял из этого видео - https://dzen.ru/video/watch/5f5680233b3fcc06748f69a2?utm_referrer=dzen.ru
Но пришлось его слегка адаптировать поскольку для подключения сервоприводов используется Keyestudio TB6612FNG Плата расширения сервопривода двигателя/щиток сервопривода с модулями
а на ней под bluetooth модуль выделены именно пины 0 и 1 - другие я использовать НЕ МОГУ
Когда я им управляю напрямую от джойстиков по этому коду - проблем нет
#include <Servo.h>
Servo Xr;
Servo Yr;
Servo Xl;
Servo Yl;
int xr, yr, xl, yl;
void setup() {
Xr.attach(8);
Yr.attach(9);
Xl.attach(6);
Yl.attach(7);
}
void loop() {
xr=map(analogRead(A0), 0, 1023, 0, 180);
yr=map(analogRead(A1), 0, 1023, 180, 0);
xl=map(analogRead(A3), 0, 1023, 0, 180);
yl=map(analogRead(A4), 0, 1023, 180, 0);
Xr.write(xr);
Yr.write(yr);
Xl.write(xl);
Yl.write(yl);
}
Хочешь видео, как он работал от bluetooth, чтобы ты убедился, что она работал, только скажи куда прислать
Можете посмотреть в стороннем мониторе порта в режиме HEX, что скрывается под знаком “?”. Ардуиновский монитор выводит любые непечатаемые числа от 0 до 20 этим символом. Точно один и тот же байт идет на вывод? И тогда поймете в скорости порта или ещё в чём причина. При одинаковой команде и байты в HEX формате должны совпадать.
Во-первых, можете. Но нужно головой думать, а не тупо по картинке тыкать. Возможно, потом получится. А во-вторых, здесь уже много раз было сказано, что два интерфейса вместе на одних пинах работать НЕ СМОГУТ. Вывод? Не используйте Serial, что ж тут сложного?
Не, надо готовый скетч ему…и схему, в ней ещё больше ни бум, бум…он.
@lilik, ну ты ж понимаешь, что здесь это так не работает. Тут только Бабос кодами/схемами фонтанирует, но ты же знаешь, где он их берет ))
А ничего, что if при аналоговом вводе у вас делает одно действие, а блюпуп другое? Один дал команду двинуться, а другой остановил?
Да. ТСу остаётся к ИИ на поклон идти…с комментами к каждой строке ![]()
Попробуйте прочитать первые два предложения по ссылке #71( бл.., ещё и уговаривать надо) - поможет.
жонглирую, и только кодами, это не одно и тоже!)))
нужен нормальный начальный курс ардуино, а не какой то набор… ии не поможет!))) вы что не видите что пины у него шим не поддерживают… тут только учить надо…
Да, у него пины явно товось.
Чего товоль - типа померли или нет?!
Да купил такой - решил купить - попробовать свои силы, на нашла коса на камень

Вы @BABOS цвай.
Аналоговое управление можно совместить с Bluetooth, чтобы манипулятор реагировал и на потенциометры, и на команды с телефона.
Чтобы они не конфликтовали друг с другом (ведь потенциометр постоянно шлет свое положение и будет мгновенно перезаписывать команду из Bluetooth), в код добавлена зона нечувствительности (deadzone). Робот повернется по потенциометру только в том случае, если вы физически сдвинете ручку потенциометра более чем на ±3 градуса от его текущего положения.
Совмещенный скетч (Bluetooth + Потенциометры)
#include <Servo.h>
#include <SoftwareSerial.h>
// Создаем объекты для четырех сервоприводов
Servo servoBase;
Servo servoShoulder;
Servo servoElbow;
Servo servoGripper;
// Пины сервоприводов
const int pinServoBase = 9;
const int pinServoShoulder = 10;
const int pinServoElbow = 11;
const int pinServoGripper = 6;
// Пины потенциометров
const int pinPotBase = A0;
const int pinPotShoulder = A1;
const int pinPotElbow = A2;
const int pinPotGripper = A3;
// Настройка Bluetooth: RX - пин 2, TX - пин 3
SoftwareSerial bluetooth(2, 3);
// Переменные для хранения текущих углов
int currentBase = 90;
int currentShoulder = 90;
int currentElbow = 90;
int currentGripper = 90;
// Порог изменения угла потенциометра (чтобы избежать конфликта с Bluetooth)
const int deadzone = 3;
void setup() {
servoBase.attach(pinServoBase);
servoShoulder.attach(pinServoShoulder);
servoElbow.attach(pinServoElbow);
servoGripper.attach(pinServoGripper);
Serial.begin(9600);
bluetooth.begin(9600);
// Установка стартовых позиций
servoBase.write(currentBase);
servoShoulder.write(currentShoulder);
servoElbow.write(currentElbow);
servoGripper.write(currentGripper);
}
void loop() {
// 1. ОПРОС ПОТЕНЦИОМЕТРОВ
int potBaseAngle = map(analogRead(pinPotBase), 0, 1023, 0, 180);
int potShoulderAngle = map(analogRead(pinPotShoulder), 0, 1023, 0, 180);
int potElbowAngle = map(analogRead(pinPotElbow), 0, 1023, 0, 180);
int potGripperAngle = map(analogRead(pinPotGripper), 0, 1023, 0, 180);
// Проверяем, сдвинулся ли потенциометр сильно (ручное управление)
if (abs(potBaseAngle - currentBase) > deadzone) {
currentBase = potBaseAngle;
servoBase.write(currentBase);
}
if (abs(potShoulderAngle - currentShoulder) > deadzone) {
currentShoulder = potShoulderAngle;
servoShoulder.write(currentShoulder);
}
if (abs(potElbowAngle - currentElbow) > deadzone) {
currentElbow = potElbowAngle;
servoElbow.write(currentElbow);
}
if (abs(potGripperAngle - currentGripper) > deadzone) {
currentGripper = potGripperAngle;
servoGripper.write(currentGripper);
}
// 2. ОБРАБОТКА КОМАНД BLUETOOTH
if (bluetooth.available() > 0) {
char key = bluetooth.read();
if (key == 'B' || key == 'S' || key == 'E' || key == 'G') {
int angle = bluetooth.parseInt();
angle = constrain(angle, 0, 180);
switch (key) {
case 'B':
currentBase = angle;
servoBase.write(currentBase);
break;
case 'S':
currentShoulder = angle;
servoShoulder.write(currentShoulder);
break;
case 'E':
currentElbow = angle;
servoElbow.write(currentElbow);
break;
case 'G':
currentGripper = angle;
servoGripper.write(currentGripper);
break;
}
}
}
delay(15); // Небольшая задержка для стабильности аналоговых входов
}
Если у вас возникнут сложности с одновременной работой, дайте знать:
- Успели ли вы проверить схему в железе?
- Хотите ли вы добавить переключатель режимов (физическую кнопку), чтобы жестко выбирать между «Только потенциометры» и «Только Bluetooth»?
С Вас @BABOS -у 2 косаря.
Diskless вы явно гений который шифруется написанием кода от ии))) но что бы понять вашу гениальность ему все равно надо пройти курс… а он пока что пиарит только не лучший набор, я бы взял https://roboshop.spb.ru/kits/diy-nabory/mearm-black-acrylic и https://roboshop.spb.ru/modules/moduli-shim/pca9685 + серво и ардуино…
и 2к будет не раньше чем вы мне 10к заплатите за что нить… что бы платить деньги, сначала надо их получить!





