Bluetooth на arduino

Не пользуюсь - когда проверял на приема передачу питаю 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);

} 

Странно было ожидать дельного совета от человека с такой фоткой на аве, хотя вам подходит :+1: :pig:

Предложение было здесь

Два сериала на одних ногах работать не будут

Вы ещё не поняли?

После Вашего

ничего, кроме глума не будет.

Ну, разве что, Вы извинитесь и начнёте себя вести как нормальный человек, но в это не очень верится.

Хорошо, я прошу прощение, теперь скажите, что-нибудь по делу

Клиент неоперабельный. Ему хоть засоветуйся - не понимает. Одно слово - писатель, а не читатель :sweat_smile:


//#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 :slightly_smiling_face: И комп перезагрузите!

Да нет, он хочет с пульта на плату команды слать и чтоб в монитор порта они дублировались, поэтому аппаратный и программный блютуз пробует :slight_smile:

Я в общем-то так и дела раньше - https://vkvideo.ru/video470744587_456239516, пока все не слетело
Но мне же надо как-то проверить - приходит сигнал или нет - вывожу его на монитор порта - пока приходят только ???