Bluetooth на arduino

У @BABOS-a появилась конкуренция… :face_with_monocle:

Ну, блин, прочитать наконец материал по ссылке из первого ответа и задать вопрос нормально, чтобы на него ответить можно было. Выложить нормально код, выложить содержимое монитора порта (текстом), выложить изображение монитора порта картинкой. Вам же тут все на кофейной гуще гадают потому Вы никакой информации не даёте.

Или код секретный (с огромной коммерческой ценностью) и Вы боитесь его показывать? Ну, тогда бегите отсюда пока “злобные мы” не украли Ваш супер-код!

Вот код ля проверки сопряжения - приема данных по bluetooth:

#include <SoftwareSerial.h>

SoftwareSerial BT(1,0);

void setup() {

BT.begin(9600);

Serial.begin(9600);

}

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);

}

На счет того. что bluetooth модуль надо отключать в момент загрузки кода. поскольку он занимает пины 1 и 0 я знаю, а где менять скорость передачи данных - в какой строчке?!
#include <SoftwareSerial.h>

SoftwareSerial BT(1,0);

void setup() {

BT.begin(9600);

Serial.begin(9600);

}

void loop() {

char val;{

val = Serial.read(); // assign the value read to val

Serial.println(val);

delay(1000);

}

}

вот и мы не можем подсказать, в строчке под каким номером, что то надо поменять.

void loop() {
char val;{
val = Serial.read(); // assign the value read to val
Serial.println(val);
delay(1000);
......

так то вот оно сразу понятнее становится, согласитесь.

На другие ноги перенеси, на этих HardwareSerial. Ну и мозгов желательно бы добавить…

Вы принципиально не делаете так, как вас просят? И при этом рассчитываете на помощь?

Продублирую ссылку здесь

И там буквально третий пункт

Используйте теги кода

Код необходимо вставлять в тегах кода. Правильно вставленный код имеет подсветку синтаксиса и что особенно важно, номера строк и выглядит так:

char message[][4] = { "hi", "bye" };

void setup() {
  //Serial.begin() configures the serial port
  Serial.begin(9600);
}

void loop() {
  for (byte x = 0; x < 2; x++) {
    Serial.println(message[x]);
    delay(1000);
  }
}

Существует несколько способов добавления тегов кода:

  • Вставьте свой код в сообщение, выберите весь код и нажмите </> в верхней строке формы редактирования.
  • Добавьте в начале и конце кода по три обратных апострофа
  • В Arduino IDE в меню «Редактировать» есть кнопка «Копировать для форума», помещающая ваш код в буфер обмена с уже добавленными тегами кода, готовыми для вставки в сообщение

Вы его сознательно проигнорировали?

Ля !!!

Ну, Вам же сказали, что сначала прочитайте как правильно задавать вопросы! Вы принципиально не делаете этого?

А в Вашем коде есть номера строчек? Не вижу.

Потому, ответ - в строчке №ХЗ.

И никаких других ответов не будет до тех пор, пока Вы не соизволите прочитать то, что Вам сказали и сделать так, как там написано.

Так или как
#include <SoftwareSerial.h>
SoftwareSerial BT(1,0);
void setup() {
BT.begin(9600);
Serial.begin(9600);
}

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);

void setup() {

  BT.begin(9600);

  Serial.begin(9600);

}




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);

void setup() {

  BT.begin(9600);

  Serial.begin(9600);

}




void loop() {

char val;{

val = Serial.read(); // assign the value read to val

Serial.println(val);

delay(1000);

}

}

От попытки поменять скорость передачи данных, ничего не поменялось - как не работало, так и не работает

прочти сообщение #26

Давайте оставим ТС с @BABOS -ом. На мой взгляд они на одном языке быстро договорятся.

На этой плате под bluetooth модуль выделены именно ноги 1, 0, и поменять не поучится, можно ли получить тег с кодом с HardwareSerial

Какие мы высокомерные!!!
Вам просто задали вопрос - что сделать. чтобы все заработало, потому, что изначально - все работали по этим кодам

#include <SoftwareSerial.h>

SoftwareSerial BT(1,0);

void setup() {

  BT.begin(9600);

  Serial.begin(9600);

}




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);

} 

вывсёврёти.

Наверное и книжка есть к набору…со скетчами :slight_smile:

Господа! Там ещё один “нюанс” есть :slightly_smiling_face: