[RISOLTO] Dubbio sulla libreria Software Serial e la stampa dei caratteri

Salve,
oggi ho collegato per la prima volta un modulo Bluetooth HC-06 per collegare Arduino al mio telefono (Android): volevo fare in modo che se avessi immesso valori dal monitor seriale, li avrei visti sull'app, mentre se avessi inviato dall'app, li avrei visti sul monitor seriale.
La prima parte non riesce: invio dal monitor seriale, ma sull'app non esce nulla, se non il messaggio di "Serial pronto", che sta nel void setup. Questo suppongo sia un problema dell'app.
La seconda parte mi risulta strana: all'inizio usavo questo codice:

#include <SoftwareSerial.h>
const int rxpin = 0;
const int txpin = 1;
SoftwareSerial bluetooth(rxpin, txpin);

void setup() {
  Serial.begin(9600);
  bluetooth.begin(9600);
  Serial.println("Serial pronto");
  bluetooth.println("BT pronto!");
}

void loop() {
  if(bluetooth.available()){
    char c = bluetooth.read();
    Serial.write(c);
    }
  if(Serial.available()){
    char c = Serial.read();
    bluetooth.write(c);
    }
}

In questo modo potevo inviare un solo carattere per volta dal telefono o visualizzava poi tutti simboli strani. Ho aggiunto allora un delay(5):

#include <SoftwareSerial.h>
const int rxpin = 0;
const int txpin = 1;
SoftwareSerial bluetooth(rxpin, txpin);

void setup() {
  Serial.begin(9600);
  bluetooth.begin(9600);
  Serial.println("Serial pronto");
  bluetooth.println("BT pronto!");
}

void loop() {
  if(bluetooth.available()){
    char c = bluetooth.read();
    Serial.write(c);
    delay(5);
    }
  if(Serial.available()){
    char c = Serial.read();
    bluetooth.write(c);
    delay(5);
  }

}

Da quel momento potevo inviare dal telefono parole fino a 6 caratteri, dopodiché ricominciava con i caratteri strani.
Quindi chiedo: come ha influito il delay()? Come faccio a mandare dal monitor seriale e far ricevere al telefono (vederli stampati sull'app)?

Grazie!

Hai una UNO?

Mi sembra che stai usando gli stessi pi per seriale hardware e software

docsavage:
Hai una UNO?

Mi sembra che stai usando gli stessi pi per seriale hardware e software

Sì, ho la scheda UNO; infatti sul libro da cui ho preso parte del programma usava altri pin come RX e TX, però io ho messo quelli pensando che fossero fatti appositamente per questo.
Oltre ciò, il delay() come fa a permettermi di mandarmi parole anziché singoli caratteri?

David_Inginiar:
Sì, ho la scheda UNO; infatti sul libro da cui ho preso parte del programma usava altri pin come RX e TX, però io ho messo quelli pensando che fossero fatti appositamente per questo.
Oltre ciò, il delay() come fa a permettermi di mandarmi parole anziché singoli caratteri?

DEVI cambiare i pin, rimetti quelli consigliati, se liberi.
Una volta fatto questo, credo che ti funzionerà, con o senza delay().
Prova e facci sapere.

docdoc:
DEVI cambiare i pin, rimetti quelli consigliati, se liberi.
Una volta fatto questo, credo che ti funzionerà, con o senza delay().
Prova e facci sapere.

Esatto, dovevo solo cambiare i pin!
Ora invia parole intere (diciamo, in generale, più caratteri) senza problemi!

Grazie :smiley: