Машинка на радиоуправлении через BLUETOOTH

sovaa312

✩✩✩✩✩✩✩
11 Мар 2021
9
1
Здравствуйте, знатоки.Делаю я машинку на радиоуправлении через блютуз.Программа на телефоне отправляет команды вперед назад влево вправо и т.д. буквами.Но там есть бегунок для скорости , который изменяет свои значения от 1 до 10 и отправляет также по блютуз.Как мне отфильтровать цифры от букв.Вот код на всякий случай
C++:
//*********БИБЛИОТЕКИ**************//
#include <SoftwareSerial.h>
//*************ПИНЫ**************//
#define LED_1 2
#define LED_2 3
#define DRIVER_STB 4
#define MOT_FOR 5
#define MOT_REV 6
#define MOT_LEFT 7
#define MOT_RIGHT 8
SoftwareSerial mySerial(13, 12); // RX, TX
//*********ПЕРЕМЕННЫЕ**************//
char val;
int val1;
int DUTY;
byte sped;
void setup()
{
  mySerial.begin(9600);
  pinMode(MOT_FOR, OUTPUT);
  pinMode(MOT_REV, OUTPUT);
  pinMode(MOT_LEFT, OUTPUT);
  pinMode(MOT_RIGHT, OUTPUT);
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(DRIVER_STB, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (mySerial.available()) {
    val = mySerial.read();
    sped = mySerial.read();
   // Serial.write(val);
  }
  if (sped < 10) {
    Serial.println(sped);
  }


  if (val == 'S') {
    digitalWrite(MOT_FOR, LOW);
    digitalWrite(MOT_REV, LOW);
    digitalWrite(MOT_LEFT, LOW);
    digitalWrite(MOT_RIGHT, LOW);
  }
  else if (val == 'F') {
    digitalWrite(MOT_FOR, HIGH);
    digitalWrite(MOT_REV, LOW);
    digitalWrite(MOT_LEFT, LOW);
    digitalWrite(MOT_RIGHT, LOW);
  }
  else if (val == 'B') {
    digitalWrite(MOT_REV, HIGH);
    digitalWrite(MOT_FOR, LOW);
    digitalWrite(MOT_LEFT, LOW);
    digitalWrite(MOT_RIGHT, LOW);
  }
  else if (val == 'R') {
    digitalWrite(MOT_RIGHT, HIGH);
    digitalWrite(MOT_FOR, LOW);
    digitalWrite(MOT_LEFT, LOW);
    digitalWrite(MOT_REV, LOW);
  }
  else if (val == 'L') {
    digitalWrite(MOT_LEFT, HIGH);
    digitalWrite(MOT_FOR, LOW);
    digitalWrite(MOT_REV, LOW);
    digitalWrite(MOT_RIGHT, LOW);
  }
  else if (val == 'G') {
    digitalWrite(MOT_LEFT, HIGH);
    digitalWrite(MOT_FOR, HIGH);
  }
  else if (val == 'I') {
    digitalWrite(MOT_RIGHT, HIGH);
    digitalWrite(MOT_FOR, HIGH);
  }
  else if (val == 'H') {
    digitalWrite(MOT_LEFT, HIGH);
    digitalWrite(MOT_REV, HIGH);
  }
  else if (val == 'J') {
    digitalWrite(MOT_RIGHT, HIGH);
    digitalWrite(MOT_REV, HIGH);
  }
  else if (val == 'W') {
    digitalWrite(LED_1, HIGH);
  }
  else if (val == 'w') {
    digitalWrite(LED_1, LOW);
  }
  else if (val == 'U') {
    digitalWrite(LED_2, HIGH);
  }
  else if (val == 'u') {
    digitalWrite(LED_2, LOW);
  }
  else if (val == 'X') {
    digitalWrite(DRIVER_STB, HIGH);
  }
  else if (val == 'x') {
    digitalWrite(DRIVER_STB, LOW);
  }
}
void PWM(byte val1) {
  if (val1 < 10) {
  }
  Serial.println(val1);
}
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,304
949
58
Марий-Эл
Пакуйте весь пакет данный в структуру и отправляйте целиком.
В машинке расталкиваете пришедшие данные по исполнительным устройством.
Не майтесь дурью с отдельными командами.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,304
949
58
Марий-Эл
Здесь я уже выкладывал.
Там на NRF сделано. Но разницы нет никакой.
Главное как передавать и принимать а не через чего.
 
  • Лойс +1
Реакции: Boroda22