Не пользуюсь - когда проверял на приема передачу питаю arduino через шнур от компа. а когда работал с сервоприводами питал от аккумуляторов - батарея 9 вольт сервоприводы не тянет
“врете”, а не “врети” - все работало
Ваше мнение, конечно, очень интересно, но на то оно и ваше. К нам оно отношения не имеет. Сказано - размещайте код по правилам, будьте добры - размещайте по правилам. Ибо это нужно не нам, а вам. У нас проблем нету
Так это Вы нуждаетесь в номерах строк, а не мы. Или ответ “в строке № ХЗ” Вас устраивает? Ну, так бы сразу и сказали.
Мы не просили, мы советовали Вам, что сделать, чтобы получить ответ.
Но, видимо, ответ Вам не нужен. Так что теперь, после такого захода, я Вас прошу пойти на …
P.S. Тема перенесена в “профильный раздел форума”, специально созданный для подобных тем и их авторов
Вот код, какие есть предложения:
#include <SoftwareSerial.h>
SoftwareSerial BT(1,0);
void setup() {
BT.begin(9600);
Serial.begin(900);
}
void loop() {
char val;{
val = Serial.read(); // assign the value read to val
Serial.println(val);
delay(1000);
}
}
#include<SoftwareSerial.h>
SoftwareSerial BT(1,0); //Контакты подключения BT модуля: TX - 1, RX - 0
#include <Servo.h>//Подключаем библиотеку для управления сервоприводами
Servo S1;
Servo S2;
Servo S3;
Servo S4;
//Задаем переменную для управления положением сервоприводами и задаем из изначальное положение
int F1=90;
int F2=90;
int F3=90;
int F4=90;
char val;
char val2;
void setup() {
S1.attach(A0);//задаем пин для управления сервоприводами
S2.attach(9);
S3.attach(7);
S4.attach(A3);
BT.begin(9600);
Serial.begin(9600);//задаем скорость передачи данных
}
void loop() {
S1.write(F1);
S2.write(F2);
S3.write(F4);
S4.write(F3);
if(Serial.available()){
val=Serial.read();
val2=val;
Serial.println(val);
switch(val){//выполните соответствующую функцию при получении значения
case 'L': F1_left(); break;
case 'R': F1_right(); break;
case 'f': F3_forward(); break;
case 'b': F3_back(); break;
case 'F': F2_forward(); break;
case 'B': F2_back(); break;
case 'l': F4_left(); break;
case 'r': F4_right(); break;
case 'S': servo_stop(); break;}}
else{
switch(val2){ //Когда кнопка нажата и не отпускается
// else выполняется потому, что Bluetooth не передает символы, а значение val2 -
//значение нажатой ранее кнопки поэтому команда нажатия будет повторена
case 'L': F1_left(); break;
case 'R': F1_right(); break;
case 'f': F3_forward(); break;
case 'b': F3_back(); break;
case 'F': F2_forward(); break;
case 'B': F2_back(); break;
case 'l': F4_left(); break;
case 'r': F4_right(); break;
case 'S': servo_stop(); break;
}
}
}
void F1_left(){//Поворот центральной башни на лево
F1 = F1 + 5;
F1=constrain(F1, 0, 180);
S1.write(F1);
delay(50);
}
void F1_right(){//Поворот центральной башни на право
F1 = F1 - 5;
F1=constrain(F1, 0, 180);
S1.write(F1);
delay(50);
}
void F3_forward(){//Двидение плеча вверх
F3 = F3 - 5;
F3=constrain(F3, 0, 180);
S3.write(F3);
delay(50);
}
void F3_back(){//Двидениие плеча вниз
F3 = F3 + 5;
F3=constrain(F3, 0, 180);
S3.write(F3);
delay(50);
}
void F2_forward(){//Движение манипулятора вперед
F2 = F2 - 5;
F2=constrain(F2, 0, 180);
S2.write(F2);
delay(50);
}
void F2_back(){//Движение манипулятора назад
F2 = F2 + 5;
F2=constrain(F2, 0, 180);
S2.write(F2);
delay(50);
}
void F4_left(){//Клешня открывается
F4 = F4 + 5;
F4=constrain(F4, 0, 180);
S4.write(F4);
delay(50);
}
void F4_right(){//Клешня закрывается
F4 = F4 - 5;
F4=constrain(F4, 0, 180);
S4.write(F4);
delay(50);
}
void servo_stop(){//Команда фмксирует положение сервоприводов при отсутвия нажатия на кнопки
S1.write(F1);
S2.write(F2);
S3.write(F4);
S4.write(F3);
}
Странно было ожидать дельного совета от человека с такой фоткой на аве, хотя вам подходит
![]()
Предложение было здесь
Два сериала на одних ногах работать не будут
Вы ещё не поняли?
После Вашего
ничего, кроме глума не будет.
Ну, разве что, Вы извинитесь и начнёте себя вести как нормальный человек, но в это не очень верится.
Хорошо, я прошу прощение, теперь скажите, что-нибудь по делу
Клиент неоперабельный. Ему хоть засоветуйся - не понимает. Одно слово - писатель, а не читатель ![]()
//#include<SoftwareSerial.h>
//SoftwareSerial BT(1,0); //Контакты подключения BT модуля: TX - 1, RX - 0
#include <Servo.h>//Подключаем библиотеку для управления сервоприводами
Servo S1;
Servo S2;
Servo S3;
Servo S4;
//Задаем переменную для управления положением сервоприводами и задаем из изначальное положение
int F1=90;
int F2=90;
int F3=90;
int F4=90;
char val;
char val2;
void setup() {
S1.attach(A0);//задаем пин для управления сервоприводами
S2.attach(9);
S3.attach(7);
S4.attach(A3);
// BT.begin(9600);
Serial.begin(9600);//задаем скорость передачи данных
}
void loop() {
S1.write(F1);
S2.write(F2);
S3.write(F4);
S4.write(F3);
if(Serial.available()){
val=Serial.read();
val2=val;
Serial.println(val);
switch(val){//выполните соответствующую функцию при получении значения
case 'L': F1_left(); break;
case 'R': F1_right(); break;
case 'f': F3_forward(); break;
case 'b': F3_back(); break;
case 'F': F2_forward(); break;
case 'B': F2_back(); break;
case 'l': F4_left(); break;
case 'r': F4_right(); break;
case 'S': servo_stop(); break;}}
else{
switch(val2){ //Когда кнопка нажата и не отпускается
// else выполняется потому, что Bluetooth не передает символы, а значение val2 -
//значение нажатой ранее кнопки поэтому команда нажатия будет повторена
case 'L': F1_left(); break;
case 'R': F1_right(); break;
case 'f': F3_forward(); break;
case 'b': F3_back(); break;
case 'F': F2_forward(); break;
case 'B': F2_back(); break;
case 'l': F4_left(); break;
case 'r': F4_right(); break;
case 'S': servo_stop(); break;
}
}
}
void F1_left(){//Поворот центральной башни на лево
F1 = F1 + 5;
F1=constrain(F1, 0, 180);
S1.write(F1);
delay(50);
}
void F1_right(){//Поворот центральной башни на право
F1 = F1 - 5;
F1=constrain(F1, 0, 180);
S1.write(F1);
delay(50);
}
void F3_forward(){//Двидение плеча вверх
F3 = F3 - 5;
F3=constrain(F3, 0, 180);
S3.write(F3);
delay(50);
}
void F3_back(){//Двидениие плеча вниз
F3 = F3 + 5;
F3=constrain(F3, 0, 180);
S3.write(F3);
delay(50);
}
void F2_forward(){//Движение манипулятора вперед
F2 = F2 - 5;
F2=constrain(F2, 0, 180);
S2.write(F2);
delay(50);
}
void F2_back(){//Движение манипулятора назад
F2 = F2 + 5;
F2=constrain(F2, 0, 180);
S2.write(F2);
delay(50);
}
void F4_left(){//Клешня открывается
F4 = F4 + 5;
F4=constrain(F4, 0, 180);
S4.write(F4);
delay(50);
}
void F4_right(){//Клешня закрывается
F4 = F4 - 5;
F4=constrain(F4, 0, 180);
S4.write(F4);
delay(50);
}
void servo_stop(){//Команда фмксирует положение сервоприводов при отсутвия нажатия на кнопки
S1.write(F1);
S2.write(F2);
S3.write(F4);
S4.write(F3);
}
БТ модуль поди так и сидит на пинах 0,1
Вам надо отключить модуль, загрузить скетч, подключить модуль, отключить от ПК на аккумы и с пульта управлять. А вы ерундой маетесь, ничерта не понимая, что происходит и почему.
А закройте лишние IDE
И комп перезагрузите!
Да нет, он хочет с пульта на плату команды слать и чтоб в монитор порта они дублировались, поэтому аппаратный и программный блютуз пробует ![]()
Я в общем-то так и дела раньше - https://vkvideo.ru/video470744587_456239516, пока все не слетело
Но мне же надо как-то проверить - приходит сигнал или нет - вывожу его на монитор порта - пока приходят только ???



