Problema HC-06

Buongiorno, ho riscontrato un problema con l'uso di un modulo BT, quando invio un qualunque codice dal mio telefono sul monitor seriale appaiono dei caratteri particolari e non svolge il suo lavoro (ovvero quello di far muovere una macchina

byte ledState = 0; // ledState used to set the LED
unsigned long previousMillis1 = 0; //will store last time LED was updated
unsigned long interval1 = 100;  //interval at which to blink (milliseconds)
unsigned long previousMillis2 = 0;
unsigned long interval2 = 1000;
unsigned int counter = 0;

#include <AFMotor.h>

AF_DCMotor m1(1);
AF_DCMotor m2(2);
AF_DCMotor m3(3);
AF_DCMotor m4(4);

//Useful Variables
int i = 0;
int j = 0;
char state;
int vSpeed = 254;   // Default speed, from 0 to 255
const int trigPin1 = 24;
const int echoPin1 = 25;
const int trigPin2 = 26;
const int echoPin2 = 27;
const int trigPin3 = 28;
const int echoPin3 = 29;
const int trigPin4 = 30;
const int echoPin4 = 31;
const int trigPin5 = 32;
const int echoPin5 = 33;
const int trigPin6 = 34;
const int echoPin6 = 35;
const int ledPin1 = 36;
const int ledPin2 = 37;
const int ledPin3 = 38;
const int ledPin4 = 39;
const int ledPin5 = 40;
const int ledPin6 = 41;
long duration1;
int distance1;
int safetyDistance1;
long duration2;
int distance2;
int safetyDistance2;
long duration3;
int distance3;
int safetyDistance3;
long duration4;
int distance4;
int safetyDistance4;
long duration5;
int distance5;
int safetyDistance5;
long duration6;
int distance6;
int safetyDistance6;

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  m1.run(RELEASE);
  m2.run(RELEASE);
  m3.run(RELEASE);
  m4.run(RELEASE);
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(trigPin3, OUTPUT);
  pinMode(echoPin3, INPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(trigPin4, OUTPUT);
  pinMode(echoPin4, INPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(trigPin5, OUTPUT);
  pinMode(echoPin5, INPUT);
  pinMode(ledPin5, OUTPUT);
  pinMode(trigPin6, OUTPUT);
  pinMode(echoPin6, INPUT);
  pinMode(ledPin6, OUTPUT);
}

void blinkLed() {
  //check if it's time to blink the led
  if (millis() - previousMillis1 > interval1) {
    previousMillis1 = millis();
    ledState ^= 1;
    digitalWrite(ledPin1, ledState);
  }
}

void loop() {
  digitalWrite(trigPin1, LOW);
  delay(10);

  digitalWrite(trigPin1, HIGH);
  delay(10);
  digitalWrite(trigPin1, LOW);

  duration1 = pulseIn(echoPin1, HIGH);

  distance1 = duration1 * 0.034 / 2;

  safetyDistance1 = distance1;
  if (safetyDistance1 <= 15) {
    blinkLed();
  }
  else {
    digitalWrite(ledPin1, LOW);
  }

  Serial.print("Distance1: ");
  Serial.println(distance1);

  digitalWrite(trigPin2, LOW);
  delay(10);

  digitalWrite(trigPin2, HIGH);
  delay(10);
  digitalWrite(trigPin2, LOW);

  duration2 = pulseIn(echoPin2, HIGH);

  distance2 = duration2 * 0.034 / 2;

  safetyDistance2 = distance2;
  if (safetyDistance2 <= 15) {
    blinkLed();
  }
  else {
    digitalWrite(ledPin2, LOW);
  }

  Serial.print("Distance2: ");
  Serial.println(distance2);

  digitalWrite(trigPin3, LOW);
  delay(10);

  digitalWrite(trigPin3, HIGH);
  delay(10);
  digitalWrite(trigPin3, LOW);

  duration3 = pulseIn(echoPin3, HIGH);

  distance3 = duration3 * 0.034 / 2;

  safetyDistance3 = distance3;
  if (safetyDistance3 <= 15) {
    blinkLed();
  }
  else {
    digitalWrite(ledPin3, LOW);
  }

  Serial.print("Distance3: ");
  Serial.println(distance3);

  digitalWrite(trigPin4, LOW);
  delay(10);

  digitalWrite(trigPin4, HIGH);
  delay(10);
  digitalWrite(trigPin4, LOW);

  duration4 = pulseIn(echoPin4, HIGH);

  distance4 = duration4 * 0.034 / 2;

  safetyDistance4 = distance4;
  if (safetyDistance4 <= 15) {
    blinkLed();
  }
  else {
    digitalWrite(ledPin4, LOW);
  }

  Serial.print("Distance4: ");
  Serial.println(distance4);

  digitalWrite(trigPin5 , LOW);
  delay(10);

  digitalWrite(trigPin5, HIGH);
  delay(10);
  digitalWrite(trigPin5, LOW);

  duration5 = pulseIn(echoPin5, HIGH);

  distance5 = duration5 * 0.034 / 2;

  safetyDistance5 = distance5;
  if (safetyDistance5 <= 15) {
    blinkLed();
  }
  else {
    digitalWrite(ledPin5, LOW);
  }

  Serial.print("Distance5: ");
  Serial.println(distance5);

  digitalWrite(trigPin6, LOW);
  delay(10);

  digitalWrite(trigPin6, HIGH);
  delay(10);
  digitalWrite(trigPin6, LOW);

  duration6 = pulseIn(echoPin6, HIGH);

  distance6 = duration6 * 0.034 / 2;

  safetyDistance6 = distance6;
  if (safetyDistance6 <= 15) {
    blinkLed();
  }
  else {
    digitalWrite(ledPin6, LOW);
  }

  Serial.print("Distance6: ");
  Serial.println(distance6);

  m1.setSpeed(vSpeed);
  m2.setSpeed(vSpeed);
  m3.setSpeed(vSpeed);
  m4.setSpeed(vSpeed);
  if (Serial1.available() > 0) {
    state = Serial1.read();
    Serial.println(state);
  }


  /***********************Forward****************************/
  //If state is equal with letter 'A', car will go forward!
  if (state == 'A') {
    m1.run(FORWARD);
    m2.run(FORWARD);
    m3.run(FORWARD);
    m4.run(FORWARD);

  }
  /***********************Backward****************************/
  //If state is equal with letter 'I', car will go backward
  else if (state == 'I') {
    m1.run(BACKWARD);
    m2.run(BACKWARD);
    m3.run(BACKWARD);
    m4.run(BACKWARD);
  }
  /***************************Left*****************************/
  //If state is equal with letter 'S', wheels will turn left
  else if (state == 'S') {
    m1.run(FORWARD);
    m2.run(RELEASE);
    m3.run(RELEASE);
    m4.run(FORWARD);
  }
  /***************************Right*****************************/
  //If state is equal with letter 'D', wheels will turn right
  else if (state == 'D') {
    m1.run(RELEASE);
    m2.run(FORWARD);
    m3.run(FORWARD);
    m4.run(RELEASE);
  }
  /************************Bonus*****************************/

  /************************Bonus*****************************/

  /************************Bonus*****************************/

  /**********************Bonus***************************/

  /************************Bonus*****************************/
  //If state is equal with letter 'S', stop the car
  else if (state == 'P') {
    m1.run(RELEASE);
    m2.run(RELEASE);
    m3.run(RELEASE);
    m4.run(RELEASE);
  }

}

Lo so il codice è un po' lungo ma non è indispensabile per risolvere il mio problema, fino a poco prima la scheda funzionava correttamente e all'improvviso quando gli invio dei caratteri compare (quello allegato nella foto

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.