Problema moduli radio TX/RX 433 Mhz + HCSR04

Salve sono alle prime armi e mi sono appassionato alla materia, sto utilizzando due Arduino Uno a cui sono collegati un sensore ultrasonico HCSR04 che attraverso un modulo TX 433 Mhz trasmette al secondo Arduino che ha collegato il modulo RX 433 Mhz ricevente la lettura distanza dell’ultrasonico. Il problema è che i dati sulla seconda porta seriale (per intenderci quella collegata al secondo Arduino) non riesco a manipolarli ed utilizzarli come ad esempio se fossero letti senza l’utilizzo dei due moduli radio; sembra proprio che siano un messaggio di testo e non un numero.
La mia intenzione è che al verificarsi di una determinata distanza letta dal modulo HCSR04 e trasmessa sul secondo Arduino si accenda un led (collegato ad esso). Vi ringrazio fin da ora se qualche buon cuore ha un suggerimento da darmi per venirne a capo?

tx.txt (904 Bytes)

rx.txt (863 Bytes)

Buongiorno, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Il tuo programma rx.txt non si compila. Questi gli errori.

Arduino:1.8.8 (Linux)

sketch_apr17a:31:7: error: stray '\302' in program
   if (“…..” < 10) //se la dissatanza “….” è minore a 10 cm accendi un led
       ^
sketch_apr17a:31:8: error: stray '\223' in program
   if (“…..” < 10) //se la dissatanza “….” è minore a 10 cm accendi un led
        ^
sketch_apr17a:31:9: error: stray '\302' in program
   if (“…..” < 10) //se la dissatanza “….” è minore a 10 cm accendi un led
         ^
sketch_apr17a:31:10: error: stray '\205' in program
   if (“…..” < 10) //se la dissatanza “….” è minore a 10 cm accendi un led
          ^
sketch_apr17a:31:13: error: stray '\302' in program
   if (“…..” < 10) //se la dissatanza “….” è minore a 10 cm accendi un led
             ^
sketch_apr17a:31:14: error: stray '\224' in program
   if (“…..” < 10) //se la dissatanza “….” è minore a 10 cm accendi un led
              ^
/home/piero/Arduino/sketch_apr17a/sketch_apr17a.ino: In function 'void loop()':
sketch_apr17a:31:11: error: expected primary-expression before '.' token
   if (“…..” < 10) //se la dissatanza “….” è minore a 10 cm accendi un led
           ^
sketch_apr17a:31:12: error: expected unqualified-id before '.' token
   if (“…..” < 10) //se la dissatanza “….” è minore a 10 cm accendi un led
            ^
sketch_apr17a:31:16: error: expected unqualified-id before '<' token
   if (“…..” < 10) //se la dissatanza “….” è minore a 10 cm accendi un led
                ^
exit status 1
stray '\302' in program

Correggi e posta ancora.

Ciao,
P.

Chiedo scusa ho messo appsitamente la riga:
“if (…< 10) // se la distanza … è minore di 10 cm accendi un led”,
per aiutare a capire, al posto dei puntini dovrei inserire una funzione che legga i dati ricevuti e li interpreti come numeri. Allego lo sketch funzionante.

//  In questo caso il modulo RX si connette ad arduino al pin 11

#include <VirtualWire.h>
byte message[VW_MAX_MESSAGE_LEN];    // un buffer per contenere i messaggi in arrivo
byte msgLength = VW_MAX_MESSAGE_LEN; // la dimensione del messaggio

void setup()
{
  Serial.begin(9600);
  Serial.println("Ready"); // Initialize the IO and ISR
  vw_setup(2000); // bit al secondo
  vw_rx_start(); // start the receiver
}

void loop()
{
  if (vw_get_message(message, &msgLength)) // non bloccante
  {
    //Serial.print("Distance: ");
    for (int i = 0; i < msgLength; i++)
    {
      Serial.write(message[i]);
    }
    Serial.println();
  }
}

La connessione radio funziona?

Stampa qualcosa sul Monitor il programma rx? Se sì, cosa?

Ciao,
P.

Certo stampa esattamente le letture in cm dell'ultrasonico, il tutto funziona perfettamente; ciò che non riesco a fare è manipolare, con degli operatori condizionali if ed else, i dati per attuare l'accensione del led.

Salve se volete potete anche rimuovere tutti messaggi visto che ho trovato un'altra strada. Grazie comunque.