SoftwareSerial vs Serial per bluetooth HC-05? problemi compatibilità con Servo

Salve a tutti,
Sto tentando di far funzionare il mio bluetooth HC-05 utilizzando i pin RX e TX su un Arduino UNO ma senza successo.
Sono già riuscito a far funzionare il modulo attraverso un SoftwareSerial (utilizzando i pin 7 e 8 ), ma lo stesso codice, con le dovute modifiche, non funziona con i pin 1 e 0. Ho già tentato di invertire i cavi ed a risolvere il problema in altri modi ma non c’è stato niente da fare. Ho bisogno di utilizzare TX e RX perchè la libreria SoftwareSerial mi crea interferenze con la libreria Servo, che dovrei utilizzare insieme al bluetooth.

Il codice funzionante dell’esempio che ho utilizzato con il SoftwareSerial:

#include <SoftwareSerial.h>

SoftwareSerial BluetoothSerial = SoftwareSerial(7, 8); // RX, TX

char Data;
const int key=11;

int ledpin=13; 

void setup() {
  pinMode(key, OUTPUT);//SETTO IL PIN KEY DEL BLUETOOTH
  digitalWrite(key,HIGH);//SETTO LA CHIAVE DEL BLUETOOTH

  BluetoothSerial.begin(9600);
  BluetoothSerial.println("Premi 1 o 0:");
  pinMode(ledpin,OUTPUT);
}

void loop() {
   if (BluetoothSerial.available()){
    Data=BluetoothSerial.read();
    BluetoothSerial.println(Data);
   if(Data=='1'){   
   digitalWrite(ledpin,1);
   BluetoothSerial.println("Acceso ");
   }
  if (Data=='0'){
  digitalWrite(ledpin,0);
   BluetoothSerial.println("Spento ");
  }
}
delay(100);
}

Il codice non funzionante dell’esempio che ho utilizzato senza il SoftwareSerial:

char Data; 
const int key=11;

int ledpin=13;

void setup() {
  pinMode(key, OUTPUT);//SETTO IL PIN KEY DEL BLUETOOTH
  digitalWrite(key,HIGH);//SETTO LA CHIAVE DEL BLUETOOTH
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Premi 1 o 0");
  pinMode(ledpin,OUTPUT);
}

void loop() {
   if (Serial.available()){
    Data=Serial.read();
    Serial.println(Data);
   if(Data=='1'){  
   digitalWrite(ledpin,1);
   Serial.println("Acceso ");
   }
  if (Data=='0'){
  digitalWrite(ledpin,0);
   Serial.println("Spento");
  }
}
delay(100);

Grazie mille a tutti in anticipo!

Purtroppo, nel 95% dei casi, il modulo HC-05 sulla vera seriale (pin 0 e 1) NON funziona e sei obbligato ad usare la SoftwareSerial.

Ora … se ti va in conflitto con la libreria Servo … cambia i pin di RX e TX … tanto li puoi usare, a seconda della board, quasi tutti. Guarda nel reference della SoftwareSerial per sapere quali usare in funzione della scheda che hai.

Considera che la SoftwareSerial NON usa Timers, ma usa il pinChageInt … quindi … potrebbe dare fastidio alla porta su cui la usi. Cerca di mettere i pin RX e TX su una porta che non è la stessa dove sono collegati i Servo.

Per identificare le porte guarda il file allegato … PB, PC e PD identificano i gruppi di pin sulla stessa porta.

Guglielmo