Go Down

Topic: Chiarimenti Serial.find() (Read 1 time) previous topic - next topic

Subsea

Jul 18, 2012, 05:01 pm Last Edit: Jul 18, 2012, 09:43 pm by SUBSEA Reason: 1
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! :D

fabpolli

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

Subsea

#2
Jul 18, 2012, 05:35 pm Last Edit: Jul 19, 2012, 09:41 am by SUBSEA Reason: 1
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? =(

fabpolli

Ciao, ho provato in uno sketch questo codice
Code: [Select]

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


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

Subsea

#4
Jul 19, 2012, 11:32 am Last Edit: Jul 19, 2012, 11:36 am by SUBSEA Reason: 1
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:
Code: [Select]
void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print(9);
}
per la trasmissione e questo:
Code: [Select]
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!  :smiley-mr-green:
Ora il problema è che il led non si accenede, nonostante che io abbia collegato il pin tx del 1° al pin rx del 2°.

fabpolli

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

Subsea

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

ale92

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

Subsea

Si si già fatto ma purtroppo senza risultati... :smiley-fat:

PaoloP


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
Code: [Select]
#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());
}

Go Up