Chiarimenti Serial.find()

Un saluto a tutti. Ho visto in reference questa funzione, Serial.find, ma non ho capito come usarla e a cosa serva... Dal mio inglese, che è assai scarso, penso di aver capito che mi potrebbe servire, ma prima vorrei sapere effettivamente cosa fa. Grazie! :smiley:

Ciao, la traduzione del reference descrive grossomodo che la funzione si mette a leggere in buffer seriale finchè non incontra la stringa che hai passato come parametro. Se la trova restituisce true altrimenti false se non la trova ovvero la funzione ha terminato la lettura del buffer senza incontrare la stringa passata come parametro.

Ciao

Ciao fabpolli, questo era quello che avevo tradotto, ( ma di cui non ero sicuro) ma io mi chiedevo come fare per farla funzionare. Ho provato a buttar giù qualche schizzo, ma mi dice che la conversione da int a cura manca. Cosa posso fare? =(

Ciao, ho provato in uno sketch questo codice

if (Serial.find("pippo")){
  }

e non mi restituisce nessun errore. Prova a postare il tuo codice...
ciao

Ciao e grazie ancora. Intanto ti spiego il mio progetto: inviare da un arduino un segnale seriale che lun altro leggerà e, se comparirà una cifra, farà una creta azione. Questo è lo sketch a cui avevo pensato:

void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print(9);
}

per la trasmissione e questo:

void setup(){
  Serial.begin(9600);
  pinMode(13,OUTPUT);
}
void loop(){
  if(Serial.find(9)){
    digitalWrite(13, HIGH);
  }
}

per la ricezione. Io sono praticamente estraneo al campo delle comunicazioni, ma è un ambiente che mi affascina molto e che vorrei imparare. Grazie e non schifarti degli ORRORI che saranno presenti in questi sketch! :grin:
Ora il problema è che il led non si accenede, nonostante che io abbia collegato il pin tx del 1° al pin rx del 2°.

Nel serial find hai messo 9 e non "9" il parametro deve essere un char quindi dovresi convertire il valore in char prima di inviarlo sulla seriale.

Ciao

Ok. Inviando i comandi da PC funziona tutto. Però ora vorrei che un arduino comunicasse con l'altro senza bisogno del pc. E fattibile? :disappointed_relieved:

metti il tx del primo nell'rx dell'altro e l'rx del primo nel tx dell'altro dovrebbe funzionare

Si si già fatto ma purtroppo senza risultati... :drooling_face:

ale92:
metti il tx del primo nell'rx dell'altro e l'rx del primo nel tx dell'altro dovrebbe funzionare

Collega il GND con il GND dell'altro Arduino.
Anzi se usa una seriale software su un Arduino cosi puoi utilizzare la seriale per il Debug.

Esempio preso dagli esempi di Arduino

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup()  
{
 // Open serial communications and wait for port to open:
  Serial.begin(57600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  
  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(4800);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}