Bluetooth машина android

kopeika
Offline
Зарегистрирован: 28.02.2017

Добрый вечер. Нашел интересное приложение для управления машинкой Arduino Bluetooth RC Car. С нескольких скетчей собрал один. Фары и скорость работают хорошо. Помогите допилить скетч что бы аварийка моргала а лучше добавить еще один пин и при включении аварийки они поочередно включались.

[code]
//Ошибки таблица кодов: код 01; радиус поворота выше, чем скорость; код 02; скорость выше, чем 255;
#define in1 5 //L298n
#define in2 6
#define in3 10
#define in4 11
#define LED2 2 //Фары
#define LED3 3
#define LED4 4 //Динамик
#define LED13 13 //Аварийка
int command; //Int для сохранения состояния команды приложения.
int Speed = 204; // 0 - 255.
int Speedsec;
int buttonState = 0;
int lastButtonState = 0;
int Turnradius = 0; //Установите радиус поворота, 0-255 Примечание: робот не будет работать, если это выше скорости int.
int brakeTime = 45;
int brkonoff = 1; //1 для электронной тормозной системы, 0 для нормальной.
void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(LED2, OUTPUT); 
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED13, OUTPUT);
  Serial.begin(9600);  //Установите скорость передачи данных для модуля Bluetooth
}

void loop() {
  if (Serial.available() > 0) {
    command = Serial.read();
    Stop(); //Инициализация при остановленных двигателях.
    switch (command) {
      case 'W':  //Перед ON 
      digitalWrite(LED2, HIGH);
      break;
    case 'w':  //Перед OFF
      digitalWrite(LED2, LOW);
      break;
    case 'U':  //Зад ON 
      digitalWrite(LED3, HIGH);
      break;
    case 'u':  //Зад OFF 
      digitalWrite(LED3, LOW);
      break;  
      case 'X':  //Аварийка ON 
      digitalWrite(LED13, HIGH);
      break;
    case 'x':  //Аварийка OFF
      digitalWrite(LED13, LOW);
      break;
    case 'V':  //Звук ON 
      digitalWrite(LED4, HIGH);
      break;
    case 'v':  //Звук OFF 
      digitalWrite(LED4, LOW);
      break;  
      case 'F':
        forward();
        break;
      case 'B':
        back();
        break;
      case 'L':
        left();
        break;
      case 'R':
        right();
        break;
      case 'G':
        forwardleft();
        break;
      case 'I':
        forwardright();
        break;
      case 'H':
        backleft();
        break;
      case 'J':
        backright();
        break;
      case '0':
        Speed = 100;
        break;
      case '1':
        Speed = 140;
        break;
      case '2':
        Speed = 153;
        break;
      case '3':
        Speed = 165;
        break;
      case '4':
        Speed = 178;
        break;
      case '5':
        Speed = 191;
        break;
      case '6':
        Speed = 204;
        break;
      case '7':
        Speed = 216;
        break;
      case '8':
        Speed = 229;
        break;
      case '9':
        Speed = 242;
        break;
      case 'q':
        Speed = 255;
        break;
    }
    Speedsec = Turnradius;
    if (brkonoff == 1) {
      brakeOn();
    } else {
      brakeOff();
    }
  }
}

void forward() {
  analogWrite(in1, Speed);
  analogWrite(in3, Speed);
}

void back() {
  analogWrite(in2, Speed);
  analogWrite(in4, Speed);
}

void left() {
  analogWrite(in3, Speed);
  analogWrite(in2, Speed);
}

void right() {
  analogWrite(in4, Speed);
  analogWrite(in1, Speed);
}
void forwardleft() {
  analogWrite(in1, Speedsec);
  analogWrite(in3, Speed);
}
void forwardright() {
  analogWrite(in1, Speed);
  analogWrite(in3, Speedsec);
}
void backright() {
  analogWrite(in2, Speed);
  analogWrite(in4, Speedsec);
}
void backleft() {
  analogWrite(in2, Speedsec);
  analogWrite(in4, Speed);
}

void Stop() {
  analogWrite(in1, 0);
  analogWrite(in2, 0);
  analogWrite(in3, 0);
  analogWrite(in4, 0);
}

void brakeOn() {
  //Here's the future use: an electronic braking system!
  // read the pushbutton input pin:
  buttonState = command;
  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == 'S') {
      if (lastButtonState != buttonState) {
        digitalWrite(in1, HIGH);
        digitalWrite(in2, HIGH);
        digitalWrite(in3, HIGH);
        digitalWrite(in4, HIGH);
        delay(brakeTime);
        Stop();
      }
    }
    // save the current state as the last state,
    //for next time through the loop
    lastButtonState = buttonState;
  }
}
void brakeOff() {

}
[/code]

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

kopeika пишет:

Помогите допилить скетч что бы аварийка моргала 

Как можно помочь тому, кто ничего не делает? Где Ваша попытка (пусть неудачная) заставить её моргать? В каких строках? Я не нашёл.

kopeika
Offline
Зарегистрирован: 28.02.2017

Тут не выкладывал попытки. Да и плата перестала работать, на этой неделе придет плата и продолжу

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, вот когда соберётесь, тогда и поговорим.