Inviare una stringa via bluetooth tramite arduino

Salve ragazzi,ho un problema con l'invia appunto di una stringa via bluetooth.Sono in grado di leggere una stringa in input ma non capisco come inviarla,utilizzo la libreria SoftwareSerial e bluetooth.write(messaggio) ma non funziona!Non mi da errore solo quando gli do valori preimpostati come un banale 50 o una stringa scritta da me.Esiste un modo per inviare quello che si trova all'interno di una variabile con questa funzione?

> stefano2506: in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito (anche tra lingue diverse) e tu hai posto la stessa/simile domanda nella sezione di lingua Inglese.

In conformità al regolamento quel tuo post duplicato è stato rimoso e ti prego di continuare qui dove hai iniziato.

Grazie,

Guglielmo

Ops scusate non ci ho proprio fatto caso..comunque questo è il mio sketch

bluetooth.ino (1.49 KB)

Si,utilizzo un arduino UNO

Praticamente io con un'app devo controllare l'arduino quindi ho inserito una casella di testo che invia una stringa via bluetooth all'arduino,e questo per ora mi va bene però vorrei ricevere in output dall'arduino stringhe come per esempio valori di sensori che andrò a collegare.Nel caso in cui la stringa dovesse contenere un comando errato posso sempre mettere un else in cui svuoterò la stringa ed invierò al telefono un messaggio di errore no?Il problema è che non capisco come inviare il contenuto di una variabile.

Grazie mille allora darò un'occhiata!

devi collegare:

int RX_Arduino = 10 ;   // RX Arduino collegato direttamente al TX del modulo BT
int TX_Arduino = 11 ;   // TX Arduino collegato mediante partitore di tensione al RX del modulo BT

SoftwareSerial bluetooth (RX_Arduino, TX_Arduino) ;

non ai pin 0 e 1, quelli sono per la seriale sw

Alla fine ci sono riuscito però avrei un altro problema con il motore passo passo che mi serve per l'app,esiste un modo per farlo girare per 10 secondi circa di fila?continuo a cambiare il numero di passi ma mi pare chesi muova sempre per mezzo secondo senza mostrare nessun cambiamento...

quello che so io dei motori stepper è che si muovono di uno step per volta, non si comportano come i motori DC.
Quindi devi sapere quale è l'angolo minimo dello step, per cui sai quanti step deve compiere per fare l'intero angolo giro per esempio. Quindi devi fargli fare una sequenza di step
Io uso come driver un modulo ULN2003

Il primo codice che invio non utilizza alcuna libreria, mentre il secondo codice utilizza la libreria Stepper.h

int motorPin1 = 8; // Blue - 28BYJ48 pin 1
int motorPin2 = 9; // Pink - 28BYJ48 pin 2
int motorPin3 = 10; // Yellow - 28BYJ48 pin 3
int motorPin4 = 11; // Orange - 28BYJ48 pin 4
// Red - 28BYJ48 pin 5 (VCC)

int motorSpeed = 1200; //variable to set stepper speed
int count = 0; // count of steps made
int countsperrev = 512; // number of steps per full revolution
int lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};

//////////////////////////////////////////////////////////////////////////////
void setup() {
//declare the motor pins as outputs
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
}

//////////////////////////////////////////////////////////////////////////////
void loop(){
  Serial.print("loop count = ");Serial.println(count) ;
  if(count < countsperrev )
    clockwise();
  else if (count == countsperrev * 2)
    count = 0;
  else
    anticlockwise();
  count++;
}

//////////////////////////////////////////////////////////////////////////////
//set pins to ULN2003 high in sequence from 1 to 4
//delay "motorSpeed" between each pin setting (to determine speed)
void anticlockwise(){
  Serial.println("anticlockwise");
  for(int i = 0; i < 8; i++){
    setOutput(i);
    delayMicroseconds(motorSpeed);
  }
}

void clockwise(){
  Serial.println("clockwise");
  for(int i = 7; i >= 0; i--){
    setOutput(i);
    delayMicroseconds(motorSpeed);
   }
}

void setOutput(int out){
  digitalWrite(motorPin1, bitRead(lookup[out], 0));
  digitalWrite(motorPin2, bitRead(lookup[out], 1));
  digitalWrite(motorPin3, bitRead(lookup[out], 2));
  digitalWrite(motorPin4, bitRead(lookup[out], 3));
}

questo codice invece con la libreria Stepper.h:

 /*
 si collega in questo modo:
 ULN2003  ARDUINO
 IN1      PIN8
 IN2      PIN9
 IN3      PIN10
 IN4      PIN11

 SI DEVE ANCHE COLLEGARE IL MOTORE CON L'APPOSITO CONNETTORE AL DRIVER ULN2003
 SI COLLEGA IL + DEL DRIVER CON IL + DELLA PILA E IL - CON IL -
 SI COLLEGA LA MASSA DEL DRIVER ANCHE CON ARDUINO
 */
    #include <Stepper.h>
    #define STEPS  100  
    Stepper small_stepper(STEPS, 8, 10, 11, 9);
    int  Steps2Take;
    void setup()  {
      Serial.begin(9600);
    }

void loop_prova(){
  Serial.println("loop");
  small_stepper.setSpeed(200);
  small_stepper.step(1024);
  delay(3000);
  Serial.println("gira nell'altro senso");
  small_stepper.step(-1024);
  delay(3000);
}
    void loop()  {
      Serial.println("loop");
      small_stepper.setSpeed(200);  
      Steps2Take  =  2048;  
      // Rotate CW For a complete rotation
      // Change this number for change the degrees of the rotation
      small_stepper.step(Steps2Take);
      delay(2000);
      small_stepper.setSpeed(200);  
      // Change this for change the speed
      Steps2Take  =  -2048;  // Rotate CCW
      small_stepper.step(Steps2Take);
      delay(3000);

      

   }